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.
git clone https://github.com/openclaw/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"
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"
skills/agungksidik/flowyteam-mcp/skills/flowyteam-mcp/SKILL.mdFlowyTeam 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
)
mcp.json{ "mcpServers": { "flowyteam": { "transport": "http", "url": "https://flowyteam.com/api/v2/mcp/rpc", "headers": { "Authorization": "Bearer YOUR_API_TOKEN" } } } }
Get Your API Token
- Log in to FlowyTeam → Settings → API Token
- Generate or copy your existing token
- 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:
| Operation |
|---|---|
| Read / list records |
| Create a new record |
| Update an existing record |
| Delete a record |
Tools (31)
1. tasks
tasksManage tasks and assignments
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Task ID — required for PUT / DELETE |
| integer | string | Filter by project (GET) or assign to project (POST) |
| string | Task title — required for POST |
| string | Task description |
| string | Task status (e.g. , ) |
| string | / / / |
| integer | string | Employee user ID to assign |
| integer | string | Alternative employee ID field |
| string | Due date |
| integer | string | Task category ID |
| string | Search 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
projectsManage projects and project workflow
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Project ID — required for PUT / DELETE |
| string | Project name — required for POST |
| string | / / / |
| string | Start date |
| string | Deadline |
| integer | string | Client ID |
| integer | string | Project category ID |
| string | Short description |
| string | Additional notes |
| string | Search 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
employeesManage employees and team members
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Employee ID — required for PUT / DELETE |
| string | Full name — required for POST |
| string | Email — required for POST |
| string | Password — required for POST |
| integer | string | Department ID |
| integer | string | Job designation ID |
| string | Custom employee ID/code |
| string | Joining date |
| string | / |
| string | Search 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
objectivesManage OKR objectives
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Objective ID — required for PUT / DELETE |
| string | Objective title — required for POST |
| string | Objective description |
| string | / / |
| string | / |
| string | / / / |
| integer | string | Performance cycle ID |
| integer | string | Filter by department |
| string | Search 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
key-resultManage OKR key results linked to objectives
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Key result ID — required for PUT / DELETE |
| integer | string | Filter by objective (GET) |
| integer | string | Objective ID owning this KR — required for POST |
| string | Key result title |
| string | Description |
| number | string | Initial value |
| number | string | Target value |
| number | string | Current value |
| number | string | Weight (1–100) |
| string | Unit (default ) |
| integer | string | Employee details ID for KR owner |
| string | Confidence level |
| string | Remarks |
| array | Array of indicator IDs to link |
| integer | Page size |
| integer | Page 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
indicatorsManage KPIs and performance indicators
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | KPI ID — required for PUT / DELETE |
| string | KPI name — required for POST |
| number | string | Target value |
| string | Unit (e.g. , , ) |
| string | / / / / |
| integer | string | Indicator category ID |
| integer | string | Assign to employee |
| string | Search 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
indicator-recordManage KPI actual values per period
Methods:
GET POST DELETE
POST maps to
(upsert by period). GET withindicator-record/update-recordreturns a single record; GET withoutidreturns a list.id
| Parameter | Type | Description |
|---|---|---|
| string | / / |
| integer | string | Record ID — GET single / DELETE |
| integer | string | KPI indicator ID — required for GET list and POST |
| string | Period date e.g. — required for POST |
| number | string | Actual value for the period |
| number | string | Target value for the period |
| string | Notes |
| number | string | Computed score |
| integer | string | Filter by month number (GET list) |
| integer | string | Filter by year (GET list) |
| string | Filter from date (GET list) |
| string | Filter to date (GET list) |
| boolean | string | Return all records without pagination |
| integer | Page size |
| integer | Page 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
leadsManage sales leads and prospects
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Lead ID — required for PUT / DELETE |
| string | Lead contact name — required for POST |
| string | Company name |
| string | Contact email |
| string | Contact mobile |
| string | Company website |
| string | Address |
| string | Notes |
| integer | string | Assign to sales agent |
| integer | string | Lead source ID (POST) |
| integer | string | Lead status ID (POST) |
| integer | string | Lead status ID (PUT) |
| integer | string | Lead source ID (PUT) |
| string | Scheduled meeting date |
| string | or |
| string | or filter (GET) |
| string | Filter follow-up required (GET) |
| string | Filter from date (GET) |
| string | Filter to date (GET) |
| string | Sort column |
| string | / |
| integer | Page size |
| integer | Page 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
clientsManage clients and customer relationships
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Client ID — required for PUT / DELETE |
| string | Contact name — required for POST |
| string | Email — required for POST |
| string | Company name |
| string | Company website |
| string | Address |
| string | Phone number |
| string | / — send welcome email |
| string | null | Skype handle |
| string | null | LinkedIn URL |
| string | null | Twitter handle |
| string | null | Facebook URL |
| string | null | Tax/GST number |
| string | null | Notes |
| string | Search 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
ticketsManage support tickets and issues
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Ticket ID — required for PUT / DELETE |
| string | Ticket subject — required for POST |
| string | Ticket description |
| string | / / / |
| string | / / / |
| integer | string | Ticket type ID |
| integer | string | Ticket channel ID |
| integer | string | Assign to agent |
| integer | string | Reporter user ID |
| string | Search 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
attendanceManage attendance records and time tracking
Methods:
GET POST PUT
POST → clock in (
) PUT → clock out (attendance/clock-in) GET withattendance/clock-out→ today's attendance summarytoday: true
| Parameter | Type | Description |
|---|---|---|
| string | / / |
| integer | string | Attendance record ID — required for PUT (clock-out) |
| integer | string | Employee ID |
| string | Specific date |
| string | Filter by month |
| string | Filter by year |
| string | Clock-in time |
| string | Clock-out time |
| string | / / |
| string | Reason if arriving late |
| boolean | string | Set 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
leaveManage employee leave requests
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Leave ID — required for PUT / DELETE |
| integer | string | Employee user ID — required for POST |
| integer | string | Leave type ID — required for POST / PUT |
| string | Leave start date — required for POST |
| string | / / |
| string | Leave reason |
| string | / / (PUT for approval) |
| string | Comma-separated dates for duration |
| integer | string | Filter by employee (GET) |
| string | Filter from date (GET) |
| string | Filter to date (GET) |
| string | Search keyword |
| boolean | string | Return all records without pagination |
| integer | Page size |
| integer | Page 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
departmentManage departments and teams
Methods:
GET POST PUT DELETE
Supports lookup by
(string) in addition tonamefor PUT / DELETE.id
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Department ID |
| string | Current department name — for lookup (PUT / DELETE) |
| string | Department name — required for POST / PUT |
| string | Department description |
| integer | string | Parent department ID |
| integer | string | Department leader employee ID |
| string | Search by name |
| string | Sort column |
| string | / |
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
designationManage job designations and roles
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Designation ID — required for PUT / DELETE |
| string | Designation name — required for POST / PUT |
| string | Search 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
performance-cycleManage performance / OKR cycles
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Cycle ID — required for PUT / DELETE |
| string | Cycle name — required for POST / PUT |
| string | Cycle type — required for POST / PUT (e.g. , ) |
| string | Start date — required for POST / PUT |
| string | End date — required for POST / PUT |
| string | Sort column |
| string | / |
| integer | Page size |
| integer | Page 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
holidayManage company holidays
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Holiday ID — required for PUT / DELETE |
| string | Holiday name — required for POST / PUT |
| string | Date in format — required for POST / PUT |
| integer | string | Filter by year (GET) |
| string | / / (GET) |
| string | Search by keyword |
| boolean | string | Return all records without pagination |
| string | Sort column |
| string | / |
| integer | Page size |
| integer | Page 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
project-categoryManage project categories and classifications
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Category ID — required for PUT / DELETE |
| string | Category name — required for POST / PUT |
| string | Search 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
task-categoryManage task categories and types
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Category ID — required for PUT / DELETE |
| string | Category name — required for POST / PUT |
| string | Search 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
ticket-typeManage ticket types and classifications
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Ticket type ID — required for PUT / DELETE |
| string | Ticket type name — required for POST / PUT |
| string | Search 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
ticket-channelManage ticket channels and submission methods
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Channel ID — required for PUT / DELETE |
| string | Channel name — required for POST / PUT |
| string | Search 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
ticket-agentList ticket agents and their groups
Methods:
GET
| Parameter | Type | Description |
|---|---|---|
| string | |
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
indicator-categoryManage KPI / indicator categories
Methods:
GET POST PUT DELETE
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| integer | string | Category ID — required for PUT / DELETE |
| string | Category name — required for POST / PUT |
| string | Filter by status; omit or for no filter (GET) |
| string | Search by keyword |
| boolean | string | Return all records without pagination |
| string | Sort column |
| string | / |
| integer | Page size |
| integer | Page 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
leave-typeManage leave types (Annual, Sick, etc.)
Methods:
GET POST PUT DELETE
Write operations (POST/PUT/DELETE) are admin-only. Lookup by
orid(partial match) for PUT/DELETE.type_name
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Leave type ID — or use to look up |
| string | Leave type name — required for POST |
| number | Number of allowed days per year |
| string | Color code e.g. |
| boolean | Is this a paid leave type? Default: |
| string | Search 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
invoicesManage client invoices
Methods:
GET POST PUT DELETE
Requires
module enabled. POST/PUT/DELETE are admin-only. Lookup byinvoicesorid(e.g.invoice_number) for PUT/DELETE. Employees see only invoices linked to projects they are members of.INV#0001
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Invoice ID |
| string | Display number e.g. — used to look up for PUT/DELETE |
| string | Client user ID |
| string | Client company or contact name — auto-resolved to ID |
| string | Link to project |
| string | Issue date (defaults to today) |
| string | Due date |
| number | Subtotal amount |
| number | Total amount — required for POST |
| string | Currency ID |
| string | Invoice notes |
| string | Search by invoice number or client name |
| string | Filter from issue date |
| string | Filter 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
estimatesManage client estimates and quotes
Methods:
GET POST PUT DELETE
Requires
module enabled. POST/PUT/DELETE are admin-only. Lookup byestimatesorid(e.g.estimate_number) for PUT/DELETE.EST#0001
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Estimate ID |
| string | Display number e.g. — look up for PUT/DELETE |
| string | Client user ID |
| string | Client company or contact name — auto-resolved to ID |
| string | Expiry date |
| number | Subtotal |
| number | Total amount — required for POST |
| number | Discount amount |
| string | or |
| string | Currency ID |
| string | Notes |
| string | / / / |
| string | Search by number or client |
| string | Filter from |
| string | Filter to |
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
contractsManage client contracts
Methods:
GET POST PUT DELETE
Requires
module enabled. POST/PUT/DELETE are admin-only. Lookup bycontractsorid(partial match) for PUT/DELETE.subject
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Contract ID |
| string | Contract title — required for POST; also used for lookup |
| string | Client user ID |
| string | Client company name — auto-resolved to ID |
| string | Contract type ID |
| string | Start date |
| string | End date |
| number | Contract value |
| string | Currency ID |
| string | Contract notes |
| string | Search by contract subject |
| string | Filter by start_date from |
| string | Filter 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
eventsManage company calendar events
Methods:
GET POST PUT DELETE
Requires
module enabled. POST/PUT/DELETE are admin-only. Lookup byeventsorid(partial match) for PUT/DELETE. Distinct fromevent_name— useholidayfor internal company events, meetings, etc.events
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Event ID |
| string | Event name — required for POST; also used for lookup |
| string | Event location |
| string | Event description |
| string | Start date/time — required for POST |
| string | End date/time — required for POST |
| string | / (default: ) |
| integer | Repeat interval (e.g. every 2 weeks) |
| integer | Number of repetitions |
| string | / / / |
| string | Bootstrap class or hex color (default: ) |
| string | Filter by month number 1–12 |
| string | Filter by year |
| string | Filter events from date |
| string | Filter events to date |
| string | Search 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
expensesManage expenses and claims
Methods:
GET POST PUT DELETE
Requires
module enabled. DELETE is admin-only. Employees can create/update their own pending expenses. Admin-created expenses default toexpenses; employee-submitted default toapproved. Lookup bypendingorid(partial match) for PUT/DELETE.item_name
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Expense ID |
| string | Expense item name — required for POST; also used for lookup |
| string | Purchase date — required for POST |
| number | Expense amount — required for POST |
| string | Where it was purchased |
| string | Currency ID (defaults to company currency) |
| string | Expense category ID |
| string | Employee user ID (admin only; defaults to self) |
| string | Employee name — auto-resolved to |
| string | Link to project |
| string | Additional notes |
| string | / / — filter (GET) or update (PUT, admin only) |
| integer | boolean | = reimbursement claim, = regular expense |
| string | Filter from purchase date |
| string | Filter 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
expense-categoryManage expense categories
Methods:
GET POST PUT DELETE
Requires
module enabled. Write operations are admin-only. Lookup byexpensesorid(partial match) for PUT/DELETE.category_name
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Category ID |
| string | Category name — required for POST; also used for lookup |
| string | Search 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
noticesManage company notice board
Methods:
GET POST PUT DELETE
Requires
module enabled. POST/PUT/DELETE are admin-only. Employees see only notices addressed tonoticesorall. Lookup byemployeeorid(partial match) for PUT/DELETE.heading
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Notice ID |
| string | Notice title — required for POST; also used for lookup |
| string | Notice content body — required for POST |
| string | Target audience: / / (default: ) |
| string | Search by heading |
| string | Filter from created date |
| string | Filter 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
timelogsManage project and task time logs
Methods:
GET POST PUT DELETE
Requires
module enabled. DELETE is admin-only. POST starts a timer (setstimelogs). PUT stops a running timer by providingend_time = null, or edits any field. PUT withoutend_timefinds the active (running) timer for the target user. Employees see only their own time logs. Supports lookup by name:id→project_name,project_id→task_name,task_id→employee_name.user_id
| Parameter | Type | Description |
|---|---|---|
| string | / / / |
| string | Time log ID — required for DELETE |
| string | Project ID |
| string | Project name — auto-resolved to |
| string | Task ID |
| string | Task heading — auto-resolved to |
| string | Employee user ID (admin only; defaults to self) |
| string | Employee name — auto-resolved to |
| string | Start datetime (defaults to now on POST) |
| string | End datetime — provide on PUT to stop the timer |
| string | Optional note for the time log |
| string | Filter by specific date (GET) |
| string | Filter by month number 1–12 (GET) |
| string | Filter by year (GET) |
| boolean | string | = 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
| Code | Meaning |
|---|---|
| Success |
| Unauthenticated — missing or invalid Bearer token |
| Forbidden — authenticated but lacks permission |
| Resource not found |
| Validation error — check the object in the response |
| Too many requests — rate limit exceeded |
| 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
- Website: flowyteam.com
- MCP Docs: flowyteam.com/get/mcp-server
- API Reference: flowyteam.com/get/mcp-docs
- Sign Up: app.flowyteam.com/register