Skills flowyteam

Manage FlowyTeam projects, tasks, OKRs, KPIs, HR, CRM, finance, support tickets, attendance, and more via MCP — 31 tools covering the full FlowyTeam workspace.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/agungksidik/flowyteam-mcp/skills/flowyteam-mcp" ~/.claude/skills/openclaw-skills-flowyteam-bf1c6c && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/agungksidik/flowyteam-mcp/skills/flowyteam-mcp" ~/.openclaw/skills/openclaw-skills-flowyteam-bf1c6c && rm -rf "$T"
manifest: skills/agungksidik/flowyteam-mcp/skills/flowyteam-mcp/SKILL.md
source content

FlowyTeam MCP

Connect Claude Code (or any MCP-compatible AI agent) to your FlowyTeam workspace. Manage projects, tasks, OKRs, KPIs, employees, leads, clients, tickets, attendance, leave, invoices, estimates, contracts, expenses, events, notices, time logs, and more — all via natural language.

Platform: flowyteam.com — All-in-one SaaS for team productivity and performance management. 7,000+ organizations, 140+ countries.


Setup

Claude Code (CLI)

claude mcp add flowyteam \
  --transport http \
  --url https://flowyteam.com/api/v2/mcp/rpc \
  --header "Authorization: Bearer $FLOWYTEAM_API_TOKEN"

Claude Desktop / Cursor (
mcp.json
)

{
  "mcpServers": {
    "flowyteam": {
      "transport": "http",
      "url": "https://flowyteam.com/api/v2/mcp/rpc",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}

Get Your API Token

  1. Log in to FlowyTeam → Settings → API Token
  2. Generate or copy your existing token
  3. Use as
    FLOWYTEAM_API_TOKEN

Protocol

  • Endpoint:
    POST https://flowyteam.com/api/v2/mcp/rpc
  • Transport: Streamable HTTP (JSON-RPC 2.0)
  • Auth:
    Authorization: Bearer <api_token>
  • Protocol Version:
    2024-11-05

All tools share a

method
parameter to select the HTTP verb:

method
Operation
GET
Read / list records
POST
Create a new record
PUT
Update an existing record
DELETE
Delete a record

Tools (31)


1.
tasks

Manage tasks and assignments

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringTask ID — required for PUT / DELETE
project_id
integer | stringFilter by project (GET) or assign to project (POST)
heading
stringTask title — required for POST
description
stringTask description
status
stringTask status (e.g.
incomplete
,
complete
)
priority
string
low
/
medium
/
high
/
urgent
assigned_to
integer | stringEmployee user ID to assign
user_id
integer | stringAlternative employee ID field
due_date
stringDue date
YYYY-MM-DD
task_category_id
integer | stringTask category ID
search
stringSearch by keyword

Examples:

// GET — list incomplete tasks in project 12
{ "method": "GET", "project_id": 12, "status": "incomplete" }

// POST — create task
{ "method": "POST", "heading": "Write API docs", "project_id": 12,
  "due_date": "2026-05-10", "priority": "medium", "assigned_to": 7 }

// PUT — mark complete
{ "method": "PUT", "id": 101, "status": "complete" }

// DELETE
{ "method": "DELETE", "id": 101 }

2.
projects

Manage projects and project workflow

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringProject ID — required for PUT / DELETE
project_name
stringProject name — required for POST
status
string
not started
/
in progress
/
on hold
/
finished
start_date
stringStart date
YYYY-MM-DD
deadline
stringDeadline
YYYY-MM-DD
client_id
integer | stringClient ID
category_id
integer | stringProject category ID
project_summary
stringShort description
notes
stringAdditional notes
search
stringSearch by keyword

Examples:

// GET — list in-progress projects
{ "method": "GET", "status": "in progress" }

// POST — create project
{ "method": "POST", "project_name": "Mobile App v2",
  "start_date": "2026-06-01", "deadline": "2026-09-30", "client_id": 3 }

// PUT — update status
{ "method": "PUT", "id": 12, "status": "on hold" }

// DELETE
{ "method": "DELETE", "id": 12 }

3.
employees

Manage employees and team members

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringEmployee ID — required for PUT / DELETE
name
stringFull name — required for POST
email
stringEmail — required for POST
password
stringPassword — required for POST
department_id
integer | stringDepartment ID
designation_id
integer | stringJob designation ID
employee_id
stringCustom employee ID/code
joining_date
stringJoining date
YYYY-MM-DD
status
string
active
/
inactive
search
stringSearch by name or email

Examples:

// GET — list active employees in department 4
{ "method": "GET", "department_id": 4, "status": "active" }

// POST — create employee
{ "method": "POST", "name": "John Doe", "email": "john@company.com",
  "password": "secret123", "department_id": 4, "designation_id": 2,
  "joining_date": "2026-06-01" }

// PUT — deactivate
{ "method": "PUT", "id": 7, "status": "inactive" }

// DELETE
{ "method": "DELETE", "id": 7 }

4.
objectives

Manage OKR objectives

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringObjective ID — required for PUT / DELETE
heading
stringObjective title — required for POST
description
stringObjective description
level
string
company
/
department
/
individual
type
string
qualitative
/
quantitative
status
string
on track
/
at risk
/
behind
/
achieved
cycle_id
integer | stringPerformance cycle ID
department_id
integer | stringFilter by department
search
stringSearch by keyword

Examples:

// GET — company-level objectives in cycle 3
{ "method": "GET", "cycle_id": 3, "level": "company" }

// POST — create objective
{ "method": "POST", "heading": "Improve NPS Score",
  "level": "company", "cycle_id": 3, "type": "qualitative" }

// PUT — update status
{ "method": "PUT", "id": 20, "status": "at risk" }

// DELETE
{ "method": "DELETE", "id": 20 }

5.
key-result

Manage OKR key results linked to objectives

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringKey result ID — required for PUT / DELETE
objective_id
integer | stringFilter by objective (GET)
krs_owner
integer | stringObjective ID owning this KR — required for POST
krs_title
stringKey result title
krs_description
stringDescription
krs_init
number | stringInitial value
krs_tar
number | stringTarget value
krs_now
number | stringCurrent value
krs_weight
number | stringWeight (1–100)
krs_unit
stringUnit (default
%
)
krs_leader
integer | stringEmployee details ID for KR owner
krs_conf
stringConfidence level
krs_remarks
stringRemarks
associate_kpis
arrayArray of indicator IDs to link
per_page
integerPage size
page
integerPage number

Examples:

// GET — key results for objective 20
{ "method": "GET", "objective_id": 20 }

// POST — create key result
{ "method": "POST", "krs_owner": 20, "krs_title": "Reduce churn to < 5%",
  "krs_init": 8, "krs_tar": 5, "krs_now": 8, "krs_weight": 100, "krs_unit": "%" }

// PUT — update current value
{ "method": "PUT", "id": 30, "krs_now": 4.2 }

// DELETE
{ "method": "DELETE", "id": 30 }

6.
indicators

Manage KPIs and performance indicators

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringKPI ID — required for PUT / DELETE
name
stringKPI name — required for POST
target
number | stringTarget value
unit
stringUnit (e.g.
%
,
USD
,
count
)
frequency
string
daily
/
weekly
/
monthly
/
quarterly
/
yearly
category_id
integer | stringIndicator category ID
employee_id
integer | stringAssign to employee
search
stringSearch by keyword

Examples:

// GET — monthly KPIs for employee 7
{ "method": "GET", "employee_id": 7, "frequency": "monthly" }

// POST — create KPI
{ "method": "POST", "name": "Customer Satisfaction Score",
  "target": 90, "unit": "%", "frequency": "monthly",
  "employee_id": 7, "category_id": 2 }

// PUT — update target
{ "method": "PUT", "id": 40, "target": 95 }

// DELETE
{ "method": "DELETE", "id": 40 }

7.
indicator-record

Manage KPI actual values per period

Methods:

GET
POST
DELETE

POST maps to

indicator-record/update-record
(upsert by period). GET with
id
returns a single record; GET without
id
returns a list.

ParameterTypeDescription
method
string
GET
/
POST
/
DELETE
id
integer | stringRecord ID — GET single / DELETE
indicator_id
integer | stringKPI indicator ID — required for GET list and POST
period_key
stringPeriod date
dd-m-YYYY
e.g.
01-6-2026
— required for POST
current_value
number | stringActual value for the period
target_value
number | stringTarget value for the period
remark
stringNotes
score
number | stringComputed score
month
integer | stringFilter by month number (GET list)
year
integer | stringFilter by year (GET list)
start_date
stringFilter from date (GET list)
end_date
stringFilter to date (GET list)
all
boolean | stringReturn all records without pagination
per_page
integerPage size
page
integerPage number

Examples:

// GET — records for KPI 40 in May 2026
{ "method": "GET", "indicator_id": 40, "month": 5, "year": 2026 }

// POST — submit/update actual value for a period
{ "method": "POST", "indicator_id": 40, "period_key": "01-6-2026",
  "current_value": 112000, "target_value": 100000, "remark": "Exceeded target" }

// DELETE
{ "method": "DELETE", "id": 200 }

8.
leads

Manage sales leads and prospects

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringLead ID — required for PUT / DELETE
client_name
stringLead contact name — required for POST
company_name
stringCompany name
email
stringContact email
mobile
stringContact mobile
website
stringCompany website
address
stringAddress
note
stringNotes
agent_id
integer | stringAssign to sales agent
source_id
integer | stringLead source ID (POST)
status_id
integer | stringLead status ID (POST)
status
integer | stringLead status ID (PUT)
source
integer | stringLead source ID (PUT)
meeting_date
stringScheduled meeting date
next_follow_up
string
yes
or
no
client
string
lead
or
client
filter (GET)
followUp
stringFilter follow-up required (GET)
startDate
stringFilter from date (GET)
endDate
stringFilter to date (GET)
sort_field
stringSort column
sort_direction
string
asc
/
desc
per_page
integerPage size
page
integerPage number

Examples:

// GET — list leads with pagination
{ "method": "GET", "client": "lead", "per_page": 20, "page": 1 }

// POST — create lead
{ "method": "POST", "client_name": "PT Maju Jaya",
  "email": "info@majujaya.com", "mobile": "+6281234567890",
  "status_id": 1, "agent_id": 7 }

// PUT — update status and add note
{ "method": "PUT", "id": 55, "status": 3, "note": "Proposal sent" }

// DELETE
{ "method": "DELETE", "id": 55 }

9.
clients

Manage clients and customer relationships

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringClient ID — required for PUT / DELETE
name
stringContact name — required for POST
email
stringEmail — required for POST
company_name
stringCompany name
website
stringCompany website
address
stringAddress
mobile
stringPhone number
send_email
string
yes
/
no
— send welcome email
skype
string | nullSkype handle
linkedin
string | nullLinkedIn URL
twitter
string | nullTwitter handle
facebook
string | nullFacebook URL
gst_number
string | nullTax/GST number
note
string | nullNotes
search
stringSearch by name or company

Examples:

// GET — search clients
{ "method": "GET", "search": "acme" }

// POST — create client
{ "method": "POST", "name": "Alice Johnson",
  "email": "alice@newclient.com", "company_name": "New Client Ltd",
  "mobile": "+0987654321", "send_email": "yes" }

// PUT — update website
{ "method": "PUT", "id": 3, "website": "https://acme-new.com" }

// DELETE
{ "method": "DELETE", "id": 3 }

10.
tickets

Manage support tickets and issues

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringTicket ID — required for PUT / DELETE
subject
stringTicket subject — required for POST
description
stringTicket description
status
string
open
/
pending
/
resolved
/
closed
priority
string
low
/
medium
/
high
/
urgent
type_id
integer | stringTicket type ID
channel_id
integer | stringTicket channel ID
agent_id
integer | stringAssign to agent
user_id
integer | stringReporter user ID
search
stringSearch by keyword

Examples:

// GET — high-priority open tickets
{ "method": "GET", "status": "open", "priority": "high" }

// POST — create ticket
{ "method": "POST", "subject": "Cannot export report",
  "description": "Export button not responding",
  "priority": "medium", "type_id": 1, "channel_id": 2, "user_id": 7 }

// PUT — resolve and reassign
{ "method": "PUT", "id": 500, "status": "resolved", "agent_id": 8 }

// DELETE
{ "method": "DELETE", "id": 500 }

11.
attendance

Manage attendance records and time tracking

Methods:

GET
POST
PUT

POST → clock in (

attendance/clock-in
) PUT → clock out (
attendance/clock-out
) GET with
today: true
→ today's attendance summary

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
id
integer | stringAttendance record ID — required for PUT (clock-out)
employee_id
integer | stringEmployee ID
date
stringSpecific date
YYYY-MM-DD
month
stringFilter by month
year
stringFilter by year
clock_in_time
stringClock-in time
HH:MM:SS
clock_out_time
stringClock-out time
HH:MM:SS
working_from
string
office
/
home
/
other
late_reason
stringReason if arriving late
today
boolean | stringSet
true
to get today's records (GET)

Examples:

// GET — today's attendance
{ "method": "GET", "today": true }

// GET — by month/year
{ "method": "GET", "employee_id": 7, "month": "5", "year": "2026" }

// POST — clock in
{ "method": "POST", "employee_id": 7, "working_from": "office" }

// PUT — clock out
{ "method": "PUT", "id": 300 }

12.
leave

Manage employee leave requests

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringLeave ID — required for PUT / DELETE
user_id
integer | stringEmployee user ID — required for POST
leave_type_id
integer | stringLeave type ID — required for POST / PUT
leave_date
stringLeave start date
YYYY-MM-DD
— required for POST
duration
string
full day
/
half day
/
multiple
reason
stringLeave reason
status
string
pending
/
approved
/
rejected
(PUT for approval)
multi_date
stringComma-separated dates for
multiple
duration
userId
integer | stringFilter by employee (GET)
startDate
stringFilter from date (GET)
endDate
stringFilter to date (GET)
search
stringSearch keyword
all
boolean | stringReturn all records without pagination
per_page
integerPage size
page
integerPage number

Examples:

// GET — pending leaves for employee 7
{ "method": "GET", "userId": 7, "status": "pending" }

// POST — apply for leave
{ "method": "POST", "user_id": 7, "leave_type_id": 1,
  "leave_date": "2026-05-15", "duration": "full day", "reason": "Family event" }

// PUT — approve leave
{ "method": "PUT", "id": 88, "status": "approved" }

// DELETE
{ "method": "DELETE", "id": 88 }

13.
department

Manage departments and teams

Methods:

GET
POST
PUT
DELETE

Supports lookup by

name
(string) in addition to
id
for PUT / DELETE.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringDepartment ID
name
stringCurrent department name — for lookup (PUT / DELETE)
team_name
stringDepartment name — required for POST / PUT
description
stringDepartment description
parent_id
integer | stringParent department ID
leader_id
integer | stringDepartment leader employee ID
search
stringSearch by name
sort_field
stringSort column
sort_direction
string
asc
/
desc

Examples:

// GET — search departments
{ "method": "GET", "search": "marketing" }

// POST — create department
{ "method": "POST", "team_name": "Product Design",
  "description": "UI/UX and product design team" }

// PUT — rename by ID
{ "method": "PUT", "id": 4, "team_name": "Digital Marketing & SEO" }

// PUT — rename by name (auto-resolves ID)
{ "method": "PUT", "name": "Digital Marketing", "team_name": "Digital Marketing & SEO" }

// DELETE
{ "method": "DELETE", "id": 4 }

14.
designation

Manage job designations and roles

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringDesignation ID — required for PUT / DELETE
name
stringDesignation name — required for POST / PUT
search
stringSearch by keyword

Examples:

// GET — search designations
{ "method": "GET", "search": "engineer" }

// POST — create designation
{ "method": "POST", "name": "DevOps Engineer" }

// PUT — rename
{ "method": "PUT", "id": 2, "name": "Principal Software Engineer" }

// DELETE
{ "method": "DELETE", "id": 2 }

15.
performance-cycle

Manage performance / OKR cycles

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringCycle ID — required for PUT / DELETE
name
stringCycle name — required for POST / PUT
cycle_type
stringCycle type — required for POST / PUT (e.g.
quarterly
,
annual
)
started_at
stringStart date
YYYY-MM-DD
— required for POST / PUT
finished_at
stringEnd date
YYYY-MM-DD
— required for POST / PUT
sort_field
stringSort column
sort_direction
string
asc
/
desc
per_page
integerPage size
page
integerPage number

Examples:

// GET — list cycles
{ "method": "GET", "per_page": 10, "page": 1 }

// POST — create quarterly cycle
{ "method": "POST", "name": "Q3 2026", "cycle_type": "quarterly",
  "started_at": "2026-07-01", "finished_at": "2026-09-30" }

// PUT — rename cycle
{ "method": "PUT", "id": 3, "name": "Q2 2026 Revised" }

// DELETE
{ "method": "DELETE", "id": 3 }

16.
holiday

Manage company holidays

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringHoliday ID — required for PUT / DELETE
occasion
stringHoliday name — required for POST / PUT
date
stringDate in
dd/mm/yyyy
format — required for POST / PUT
year
integer | stringFilter by year (GET)
status
string
upcoming
/
past
/
all
(GET)
search
stringSearch by keyword
all
boolean | stringReturn all records without pagination
sort_field
stringSort column
sort_direction
string
asc
/
desc
per_page
integerPage size
page
integerPage number

Examples:

// GET — upcoming holidays in 2026
{ "method": "GET", "year": 2026, "status": "upcoming" }

// POST — add holiday
{ "method": "POST", "occasion": "New Year's Day", "date": "01/01/2027" }

// PUT — rename holiday
{ "method": "PUT", "id": 10, "occasion": "National Independence Day" }

// DELETE
{ "method": "DELETE", "id": 10 }

17.
project-category

Manage project categories and classifications

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringCategory ID — required for PUT / DELETE
category_name
stringCategory name — required for POST / PUT
search
stringSearch by keyword

Examples:

// GET — search categories
{ "method": "GET", "search": "web" }

// POST
{ "method": "POST", "category_name": "Mobile Development" }

// PUT
{ "method": "PUT", "id": 1, "category_name": "Web & PWA Development" }

// DELETE
{ "method": "DELETE", "id": 1 }

18.
task-category

Manage task categories and types

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringCategory ID — required for PUT / DELETE
category_name
stringCategory name — required for POST / PUT
search
stringSearch by keyword

Examples:

// GET
{ "method": "GET", "search": "bug" }

// POST
{ "method": "POST", "category_name": "Feature Request" }

// PUT
{ "method": "PUT", "id": 1, "category_name": "Critical Bug Fix" }

// DELETE
{ "method": "DELETE", "id": 1 }

19.
ticket-type

Manage ticket types and classifications

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringTicket type ID — required for PUT / DELETE
type
stringTicket type name — required for POST / PUT
search
stringSearch by keyword

Examples:

// GET
{ "method": "GET", "search": "bug" }

// POST
{ "method": "POST", "type": "Feature Request" }

// PUT
{ "method": "PUT", "id": 1, "type": "Critical Bug" }

// DELETE
{ "method": "DELETE", "id": 1 }

20.
ticket-channel

Manage ticket channels and submission methods

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringChannel ID — required for PUT / DELETE
channel_name
stringChannel name — required for POST / PUT
search
stringSearch by keyword

Examples:

// GET — list all channels
{ "method": "GET" }

// POST
{ "method": "POST", "channel_name": "WhatsApp" }

// PUT
{ "method": "PUT", "id": 1, "channel_name": "Email Support" }

// DELETE
{ "method": "DELETE", "id": 1 }

21.
ticket-agent

List ticket agents and their groups

Methods:

GET

ParameterTypeDescription
method
string
GET

Example:

// GET — list all ticket agents
{ "method": "GET" }

Response:

{
  "status": "success",
  "data": [
    { "id": 7, "name": "Sarah Lee", "email": "sarah@company.com", "group": "Technical Support" }
  ]
}

22.
indicator-category

Manage KPI / indicator categories

Methods:

GET
POST
PUT
DELETE

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
integer | stringCategory ID — required for PUT / DELETE
indicator_type_name
stringCategory name — required for POST / PUT
status
stringFilter by status; omit or
all
for no filter (GET)
search
stringSearch by keyword
all
boolean | stringReturn all records without pagination
sort_field
stringSort column
sort_direction
string
asc
/
desc
per_page
integerPage size
page
integerPage number

Examples:

// GET — list all categories
{ "method": "GET", "all": true }

// POST
{ "method": "POST", "indicator_type_name": "Engineering" }

// PUT
{ "method": "PUT", "id": 1, "indicator_type_name": "Revenue & Sales" }

// DELETE
{ "method": "DELETE", "id": 1 }

23.
leave-type

Manage leave types (Annual, Sick, etc.)

Methods:

GET
POST
PUT
DELETE

Write operations (POST/PUT/DELETE) are admin-only. Lookup by

id
or
type_name
(partial match) for PUT/DELETE.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringLeave type ID — or use
type_name
to look up
type_name
stringLeave type name — required for POST
days
numberNumber of allowed days per year
color
stringColor code e.g.
#FF0000
is_paid
booleanIs this a paid leave type? Default:
true
search
stringSearch by name

Examples:

// GET — list all leave types
{ "method": "GET" }

// POST
{ "method": "POST", "type_name": "Maternity Leave", "days": 90, "is_paid": true }

// PUT — update days allowed
{ "method": "PUT", "type_name": "Annual Leave", "days": 14 }

// DELETE
{ "method": "DELETE", "id": "3" }

24.
invoices

Manage client invoices

Methods:

GET
POST
PUT
DELETE

Requires

invoices
module enabled. POST/PUT/DELETE are admin-only. Lookup by
id
or
invoice_number
(e.g.
INV#0001
) for PUT/DELETE. Employees see only invoices linked to projects they are members of.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringInvoice ID
invoice_number
stringDisplay number e.g.
INV#0001
— used to look up for PUT/DELETE
client_id
stringClient user ID
client_name
stringClient company or contact name — auto-resolved to ID
project_id
stringLink to project
issue_date
stringIssue date
YYYY-MM-DD
(defaults to today)
due_date
stringDue date
YYYY-MM-DD
sub_total
numberSubtotal amount
total
numberTotal amount — required for POST
currency_id
stringCurrency ID
note
stringInvoice notes
search
stringSearch by invoice number or client name
startDate
stringFilter from issue date
endDate
stringFilter to issue date

Examples:

// GET — list invoices
{ "method": "GET", "client_name": "Acme Corp" }

// POST — create invoice
{ "method": "POST", "client_name": "Acme Corp", "total": 5000,
  "issue_date": "2026-05-01", "due_date": "2026-05-31" }

// PUT — update due date
{ "method": "PUT", "invoice_number": "INV#0001", "due_date": "2026-06-15" }

// DELETE
{ "method": "DELETE", "invoice_number": "INV#0001" }

25.
estimates

Manage client estimates and quotes

Methods:

GET
POST
PUT
DELETE

Requires

estimates
module enabled. POST/PUT/DELETE are admin-only. Lookup by
id
or
estimate_number
(e.g.
EST#0001
) for PUT/DELETE.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringEstimate ID
estimate_number
stringDisplay number e.g.
EST#0001
— look up for PUT/DELETE
client_id
stringClient user ID
client_name
stringClient company or contact name — auto-resolved to ID
valid_till
stringExpiry date
YYYY-MM-DD
sub_total
numberSubtotal
total
numberTotal amount — required for POST
discount
numberDiscount amount
discount_type
string
percent
or
fixed
currency_id
stringCurrency ID
note
stringNotes
status
string
draft
/
sent
/
declined
/
accepted
search
stringSearch by number or client
startDate
stringFilter from
valid_till
endDate
stringFilter to
valid_till

Examples:

// GET — list accepted estimates
{ "method": "GET", "status": "accepted" }

// POST — create estimate
{ "method": "POST", "client_name": "Acme Corp", "total": 12000,
  "valid_till": "2026-06-30", "status": "draft" }

// PUT — mark as sent
{ "method": "PUT", "estimate_number": "EST#0003", "status": "sent" }

// DELETE
{ "method": "DELETE", "estimate_number": "EST#0003" }

26.
contracts

Manage client contracts

Methods:

GET
POST
PUT
DELETE

Requires

contracts
module enabled. POST/PUT/DELETE are admin-only. Lookup by
id
or
subject
(partial match) for PUT/DELETE.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringContract ID
subject
stringContract title — required for POST; also used for lookup
client_id
stringClient user ID
client_name
stringClient company name — auto-resolved to ID
contract_type_id
stringContract type ID
start_date
stringStart date
YYYY-MM-DD
end_date
stringEnd date
YYYY-MM-DD
amount
numberContract value
currency_id
stringCurrency ID
description
stringContract notes
search
stringSearch by contract subject
startDate
stringFilter by start_date from
endDate
stringFilter by end_date to

Examples:

// GET — list contracts for a client
{ "method": "GET", "client_name": "Acme Corp" }

// POST — create contract
{ "method": "POST", "subject": "Annual Support Contract",
  "client_name": "Acme Corp", "start_date": "2026-01-01",
  "end_date": "2026-12-31", "amount": 24000 }

// PUT — update amount
{ "method": "PUT", "subject": "Annual Support Contract", "amount": 30000 }

// DELETE
{ "method": "DELETE", "id": "7" }

27.
events

Manage company calendar events

Methods:

GET
POST
PUT
DELETE

Requires

events
module enabled. POST/PUT/DELETE are admin-only. Lookup by
id
or
event_name
(partial match) for PUT/DELETE. Distinct from
holiday
— use
events
for internal company events, meetings, etc.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringEvent ID
event_name
stringEvent name — required for POST; also used for lookup
where
stringEvent location
description
stringEvent description
start_date_time
stringStart date/time
YYYY-MM-DD HH:mm
required for POST
end_date_time
stringEnd date/time
YYYY-MM-DD HH:mm
required for POST
repeat
string
yes
/
no
(default:
no
)
repeat_every
integerRepeat interval (e.g. every 2 weeks)
repeat_cycles
integerNumber of repetitions
repeat_type
string
daily
/
weekly
/
monthly
/
yearly
label_color
stringBootstrap class or hex color (default:
bg-info
)
month
stringFilter by month number 1–12
year
stringFilter by year
startDate
stringFilter events from date
endDate
stringFilter events to date
search
stringSearch by event name

Examples:

// GET — events in June 2026
{ "method": "GET", "month": "6", "year": "2026" }

// POST — create event
{ "method": "POST", "event_name": "Q2 All-Hands Meeting",
  "start_date_time": "2026-06-15 09:00",
  "end_date_time": "2026-06-15 11:00", "where": "Main Conference Room" }

// PUT — change location
{ "method": "PUT", "event_name": "Q2 All-Hands Meeting", "where": "Zoom" }

// DELETE
{ "method": "DELETE", "id": "15" }

28.
expenses

Manage expenses and claims

Methods:

GET
POST
PUT
DELETE

Requires

expenses
module enabled. DELETE is admin-only. Employees can create/update their own pending expenses. Admin-created expenses default to
approved
; employee-submitted default to
pending
. Lookup by
id
or
item_name
(partial match) for PUT/DELETE.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringExpense ID
item_name
stringExpense item name — required for POST; also used for lookup
purchase_date
stringPurchase date
YYYY-MM-DD
required for POST
price
numberExpense amount — required for POST
purchase_from
stringWhere it was purchased
currency_id
stringCurrency ID (defaults to company currency)
expense_category_id
stringExpense category ID
user_id
stringEmployee user ID (admin only; defaults to self)
employee_name
stringEmployee name — auto-resolved to
user_id
project_id
stringLink to project
description
stringAdditional notes
status
string
pending
/
approved
/
rejected
— filter (GET) or update (PUT, admin only)
can_claim
integer | boolean
1
= reimbursement claim,
0
= regular expense
startDate
stringFilter from purchase date
endDate
stringFilter to purchase date

Examples:

// GET — pending expenses
{ "method": "GET", "status": "pending" }

// POST — submit expense
{ "method": "POST", "item_name": "Team Lunch", "purchase_date": "2026-05-10",
  "price": 250, "can_claim": 1, "description": "Client meeting lunch" }

// PUT — approve expense (admin)
{ "method": "PUT", "id": "99", "status": "approved" }

// DELETE
{ "method": "DELETE", "id": "99" }

29.
expense-category

Manage expense categories

Methods:

GET
POST
PUT
DELETE

Requires

expenses
module enabled. Write operations are admin-only. Lookup by
id
or
category_name
(partial match) for PUT/DELETE.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringCategory ID
category_name
stringCategory name — required for POST; also used for lookup
search
stringSearch by category name

Examples:

// GET
{ "method": "GET" }

// POST
{ "method": "POST", "category_name": "Travel & Accommodation" }

// PUT
{ "method": "PUT", "category_name": "Travel", "category_name": "Travel & Accommodation" }

// DELETE
{ "method": "DELETE", "id": "5" }

30.
notices

Manage company notice board

Methods:

GET
POST
PUT
DELETE

Requires

notices
module enabled. POST/PUT/DELETE are admin-only. Employees see only notices addressed to
all
or
employee
. Lookup by
id
or
heading
(partial match) for PUT/DELETE.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringNotice ID
heading
stringNotice title — required for POST; also used for lookup
description
stringNotice content body — required for POST
to
stringTarget audience:
all
/
employee
/
client
(default:
all
)
search
stringSearch by heading
startDate
stringFilter from created date
endDate
stringFilter to created date

Examples:

// GET — notices for employees
{ "method": "GET", "to": "employee" }

// POST — create announcement
{ "method": "POST", "heading": "Office Closed on Friday",
  "description": "The office will be closed this Friday for maintenance.",
  "to": "all" }

// PUT — update content
{ "method": "PUT", "heading": "Office Closed on Friday",
  "description": "Updated: Office closed Friday AND Monday." }

// DELETE
{ "method": "DELETE", "id": "12" }

31.
timelogs

Manage project and task time logs

Methods:

GET
POST
PUT
DELETE

Requires

timelogs
module enabled. DELETE is admin-only. POST starts a timer (sets
end_time = null
). PUT stops a running timer by providing
end_time
, or edits any field. PUT without
id
finds the active (running) timer for the target user. Employees see only their own time logs. Supports lookup by name:
project_name
project_id
,
task_name
task_id
,
employee_name
user_id
.

ParameterTypeDescription
method
string
GET
/
POST
/
PUT
/
DELETE
id
stringTime log ID — required for DELETE
project_id
stringProject ID
project_name
stringProject name — auto-resolved to
project_id
task_id
stringTask ID
task_name
stringTask heading — auto-resolved to
task_id
user_id
stringEmployee user ID (admin only; defaults to self)
employee_name
stringEmployee name — auto-resolved to
user_id
start_time
stringStart datetime
YYYY-MM-DD HH:mm
(defaults to now on POST)
end_time
stringEnd datetime — provide on PUT to stop the timer
memo
stringOptional note for the time log
date
stringFilter by specific date (GET)
month
stringFilter by month number 1–12 (GET)
year
stringFilter by year (GET)
active_only
boolean | string
true
= return only running timers (GET)

Examples:

// GET — my time logs this month
{ "method": "GET", "month": "5", "year": "2026" }

// GET — active running timers
{ "method": "GET", "active_only": true }

// POST — start timer for a project
{ "method": "POST", "project_name": "Mobile App v2",
  "task_name": "Design landing page", "memo": "Working on hero section" }

// PUT — stop running timer
{ "method": "PUT", "end_time": "2026-05-10 17:30" }

// PUT — stop timer by ID
{ "method": "PUT", "id": "88", "end_time": "2026-05-10 17:30" }

// DELETE
{ "method": "DELETE", "id": "88" }

Error Codes

CodeMeaning
200
Success
401
Unauthenticated — missing or invalid Bearer token
403
Forbidden — authenticated but lacks permission
404
Resource not found
422
Validation error — check the
errors
object in the response
429
Too many requests — rate limit exceeded
500
Server error

Natural Language Examples

Once connected, you can ask Claude:

"Create a task 'Review Q2 Report' in the Marketing project,
 assign to Sarah, due April 30"

"Show me all open high-priority tickets"

"List company-level OKRs for Q2 2026"

"Who is on leave this week?"

"Add a new employee: John Doe, email john@company.com,
 Engineering department, joining June 1"

"What are the KPI scores for the Sales team this month?"

"Create a new lead: PT Maju Jaya, contact info@majujaya.com,
 assign to agent ID 7"

"Clock in employee 7 from office"

"List all upcoming holidays in 2026"

"Show me all pending expense claims"

"Create an invoice for Acme Corp, total $5,000, due May 31"

"What events do we have in June?"

"Post an announcement: office closed Friday"

"Log 8 hours on the Mobile App project for today"

"Show me all running timers right now"

Links