← 返回
未分类 Key 中文

Flowyteam Mcp

Manage FlowyTeam projects, tasks, OKRs, KPIs, HR, CRM, finance, support tickets, attendance, and more via MCP — 34 tools for complete workspace management.
通过 MCP 管理 FlowyTeam 的项目、任务、OKR、KPI、HR、CRM、财务、工单、考勤等,共 34 种工具,实现全方位工作区管理。
flowy-team flowy-team 来源
未分类 clawhub v1.1.8 2 版本 99826.7 Key: 需要
★ 0
Stars
📥 576
下载
💾 2
安装
2
版本
#latest

概述

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.


Endpoints

| Endpoint | Auth | Purpose |

|---|---|---|

| POST /api/mcp/gateway | None (per-call) | Gatewayauth_register & auth_verify_email run without token for new account setup; all other tools read Bearer from header |

| POST /api/v2/mcp/rpc | Bearer token | RPC — authenticated-only endpoint for all 31 workspace tools |


Setup

Recommended — Connect with API token

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

Get your token: FlowyTeam → Settings → MCP & AI Integration → copy token.

Claude Desktop / Cursor (mcp.json)

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

Protocol

  • Gateway: POST https://flowyteam.com/api/mcp/gateway
  • RPC: POST https://flowyteam.com/api/v2/mcp/rpc
  • Transport: Streamable HTTP (JSON-RPC 2.0)
  • Auth: Authorization: Bearer (not required for auth_register / auth_verify_email)
  • Protocol Version: 2024-11-05

All workspace 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 |

Account setup tools (auth_register, auth_verify_email) only use POST and do not need a method field.


Safety Guidelines

> Always require explicit user confirmation before any write or delete action.

  • Use a limited-permission token. Connect with an Employee token for self-service tasks; request an Admin token only when admin operations are explicitly needed.
  • Require explicit confirmation. Never execute POST (create), PUT (update), or DELETE without a direct instruction from the user in the current turn — this applies to all records including employees, HR data, contracts, invoices, expenses, notices, and client data.
  • Never act autonomously. Do not infer or anticipate write actions. Only act on what the user has explicitly asked for.
  • Prefer read-first. When intent is ambiguous, default to GET to show the user what exists before offering to change it.

Tools (34)

> All tools require a valid FLOWYTEAM_API_TOKEN Bearer token. See Setup above.


1. tasks (requires Bearer token)

Manage tasks and assignments

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Task ID — required for PUT / DELETE |

| project_id | integer \| string | Filter by project (GET) or assign to project (POST) |

| heading | string | Task title — required for POST |

| description | string | Task description |

| status | string | Task status (e.g. incomplete, complete) |

| priority | string | low / medium / high / urgent |

| assigned_to | integer \| string | Employee user ID to assign |

| user_id | integer \| string | Alternative employee ID field |

| due_date | string | Due date YYYY-MM-DD |

| task_category_id | integer \| string | Task category ID |

| search | 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

Manage projects and project workflow

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Project ID — required for PUT / DELETE |

| project_name | string | Project name — required for POST |

| status | string | not started / in progress / on hold / finished |

| start_date | string | Start date YYYY-MM-DD |

| deadline | string | Deadline YYYY-MM-DD |

| client_id | integer \| string | Client ID |

| category_id | integer \| string | Project category ID |

| project_summary | string | Short description |

| notes | string | Additional notes |

| search | 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

Manage employees and team members

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Employee ID — required for PUT / DELETE |

| name | string | Full name — required for POST |

| email | string | Email — required for POST |

| password | string | Optional — new employee sets their own on first login |

| department_id | integer \| string | Department ID |

| designation_id | integer \| string | Job designation ID |

| employee_id | string | Custom employee ID/code |

| joining_date | string | Joining date YYYY-MM-DD |

| status | string | active / inactive |

| search | string | Search by name or email |

Examples:

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

// POST — create employee (password is set by the new employee on first login)
{ "method": "POST", "name": "John Doe", "email": "john@company.com",
  "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

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Objective ID — required for PUT / DELETE |

| heading | string | Objective title — required for POST |

| description | string | Objective description |

| level | string | company / department / individual |

| type | string | qualitative / quantitative |

| status | string | on track / at risk / behind / achieved |

| cycle_id | integer \| string | Performance cycle ID |

| department_id | integer \| string | Filter by department |

| search | 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

Manage OKR key results linked to objectives

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Key result ID — required for PUT / DELETE |

| objective_id | integer \| string | Filter by objective (GET) |

| krs_owner | integer \| string | Objective ID owning this KR — required for POST |

| krs_title | string | Key result title |

| krs_description | string | Description |

| krs_init | number \| string | Initial value |

| krs_tar | number \| string | Target value |

| krs_now | number \| string | Current value |

| krs_weight | number \| string | Weight (1–100) |

| krs_unit | string | Unit (default %) |

| krs_leader | integer \| string | Employee details ID for KR owner |

| krs_conf | string | Confidence level |

| krs_remarks | string | Remarks |

| associate_kpis | array | Array of indicator IDs to link |

| per_page | integer | Page size |

| page | 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

Manage KPIs and performance indicators

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | KPI ID — required for PUT / DELETE |

| name | string | KPI name — required for POST |

| target | number \| string | Target value |

| unit | string | Unit (e.g. %, USD, count) |

| frequency | string | daily / weekly / monthly / quarterly / yearly |

| category_id | integer \| string | Indicator category ID |

| employee_id | integer \| string | Assign to employee |

| search | 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

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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / DELETE |

| id | integer \| string | Record ID — GET single / DELETE |

| indicator_id | integer \| string | KPI indicator ID — required for GET list and POST |

| period_key | string | Period date dd-m-YYYY e.g. 01-6-2026 — required for POST |

| current_value | number \| string | Actual value for the period |

| target_value | number \| string | Target value for the period |

| remark | string | Notes |

| score | number \| string | Computed score |

| month | integer \| string | Filter by month number (GET list) |

| year | integer \| string | Filter by year (GET list) |

| start_date | string | Filter from date (GET list) |

| end_date | string | Filter to date (GET list) |

| all | boolean \| string | Return all records without pagination |

| per_page | integer | Page size |

| page | 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

Manage sales leads and prospects

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Lead ID — required for PUT / DELETE |

| client_name | string | Lead contact name — required for POST |

| company_name | string | Company name |

| email | string | Contact email |

| mobile | string | Contact mobile |

| website | string | Company website |

| address | string | Address |

| note | string | Notes |

| agent_id | integer \| string | Assign to sales agent |

| source_id | integer \| string | Lead source ID (POST) |

| status_id | integer \| string | Lead status ID (POST) |

| status | integer \| string | Lead status ID (PUT) |

| source | integer \| string | Lead source ID (PUT) |

| meeting_date | string | Scheduled meeting date |

| next_follow_up | string | yes or no |

| client | string | lead or client filter (GET) |

| followUp | string | Filter follow-up required (GET) |

| startDate | string | Filter from date (GET) |

| endDate | string | Filter to date (GET) |

| sort_field | string | Sort column |

| sort_direction | string | asc / desc |

| per_page | integer | Page size |

| page | 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

Manage clients and customer relationships

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Client ID — required for PUT / DELETE |

| name | string | Contact name — required for POST |

| email | string | Email — required for POST |

| company_name | string | Company name |

| website | string | Company website |

| address | string | Address |

| mobile | string | Phone number |

| send_email | string | yes / no — send welcome email |

| skype | string \| null | Skype handle |

| linkedin | string \| null | LinkedIn URL |

| twitter | string \| null | Twitter handle |

| facebook | string \| null | Facebook URL |

| gst_number | string \| null | Tax/GST number |

| note | string \| null | Notes |

| search | 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

Manage support tickets and issues

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Ticket ID — required for PUT / DELETE |

| subject | string | Ticket subject — required for POST |

| description | string | Ticket description |

| status | string | open / pending / resolved / closed |

| priority | string | low / medium / high / urgent |

| type_id | integer \| string | Ticket type ID |

| channel_id | integer \| string | Ticket channel ID |

| agent_id | integer \| string | Assign to agent |

| user_id | integer \| string | Reporter user ID |

| search | 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

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

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT |

| id | integer \| string | Attendance record ID — required for PUT (clock-out) |

| employee_id | integer \| string | Employee ID |

| date | string | Specific date YYYY-MM-DD |

| month | string | Filter by month |

| year | string | Filter by year |

| clock_in_time | string | Clock-in time HH:MM:SS |

| clock_out_time | string | Clock-out time HH:MM:SS |

| working_from | string | office / home / other |

| late_reason | string | Reason if arriving late |

| today | boolean \| string | Set 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

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Leave ID — required for PUT / DELETE |

| user_id | integer \| string | Employee user ID — required for POST |

| leave_type_id | integer \| string | Leave type ID — required for POST / PUT |

| leave_date | string | Leave start date YYYY-MM-DD — required for POST |

| duration | string | full day / half day / multiple |

| reason | string | Leave reason |

| status | string | pending / approved / rejected (PUT for approval) |

| multi_date | string | Comma-separated dates for multiple duration |

| userId | integer \| string | Filter by employee (GET) |

| startDate | string | Filter from date (GET) |

| endDate | string | Filter to date (GET) |

| search | string | Search keyword |

| all | boolean \| string | Return all records without pagination |

| per_page | integer | Page size |

| page | 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

Manage departments and teams

Methods: GET POST PUT DELETE

> Supports lookup by name (string) in addition to id for PUT / DELETE.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Department ID |

| name | string | Current department name — for lookup (PUT / DELETE) |

| team_name | string | Department name — required for POST / PUT |

| description | string | Department description |

| parent_id | integer \| string | Parent department ID |

| leader_id | integer \| string | Department leader employee ID |

| search | string | Search by name |

| sort_field | string | Sort 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

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Designation ID — required for PUT / DELETE |

| name | string | Designation name — required for POST / PUT |

| search | 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

Manage performance / OKR cycles

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Cycle ID — required for PUT / DELETE |

| name | string | Cycle name — required for POST / PUT |

| cycle_type | string | Cycle type — required for POST / PUT (e.g. quarterly, annual) |

| started_at | string | Start date YYYY-MM-DD — required for POST / PUT |

| finished_at | string | End date YYYY-MM-DD — required for POST / PUT |

| sort_field | string | Sort column |

| sort_direction | string | asc / desc |

| per_page | integer | Page size |

| page | 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

Manage company holidays

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Holiday ID — required for PUT / DELETE |

| occasion | string | Holiday name — required for POST / PUT |

| date | string | Date in dd/mm/yyyy format — required for POST / PUT |

| year | integer \| string | Filter by year (GET) |

| status | string | upcoming / past / all (GET) |

| search | string | Search by keyword |

| all | boolean \| string | Return all records without pagination |

| sort_field | string | Sort column |

| sort_direction | string | asc / desc |

| per_page | integer | Page size |

| page | 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

Manage project categories and classifications

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Category ID — required for PUT / DELETE |

| category_name | string | Category name — required for POST / PUT |

| search | 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

Manage task categories and types

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Category ID — required for PUT / DELETE |

| category_name | string | Category name — required for POST / PUT |

| search | 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

Manage ticket types and classifications

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Ticket type ID — required for PUT / DELETE |

| type | string | Ticket type name — required for POST / PUT |

| search | 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

Manage ticket channels and submission methods

Methods: GET POST PUT DELETE

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Channel ID — required for PUT / DELETE |

| channel_name | string | Channel name — required for POST / PUT |

| search | 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

List ticket agents and their groups

Methods: GET

| Parameter | Type | Description |

|---|---|---|

| 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

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | integer \| string | Category ID — required for PUT / DELETE |

| indicator_type_name | string | Category name — required for POST / PUT |

| status | string | Filter by status; omit or all for no filter (GET) |

| search | string | Search by keyword |

| all | boolean \| string | Return all records without pagination |

| sort_field | string | Sort column |

| sort_direction | string | asc / desc |

| per_page | integer | Page size |

| page | 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

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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Leave type ID — or use type_name to look up |

| type_name | string | Leave type name — required for POST |

| days | number | Number of allowed days per year |

| color | string | Color code e.g. #FF0000 |

| is_paid | boolean | Is this a paid leave type? Default: true |

| search | 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

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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Invoice ID |

| invoice_number | string | Display number e.g. INV#0001 — used to look up for PUT/DELETE |

| client_id | string | Client user ID |

| client_name | string | Client company or contact name — auto-resolved to ID |

| project_id | string | Link to project |

| issue_date | string | Issue date YYYY-MM-DD (defaults to today) |

| due_date | string | Due date YYYY-MM-DD |

| sub_total | number | Subtotal amount |

| total | number | Total amount — required for POST |

| currency_id | string | Currency ID |

| note | string | Invoice notes |

| search | string | Search by invoice number or client name |

| startDate | string | Filter from issue date |

| endDate | 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

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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Estimate ID |

| estimate_number | string | Display number e.g. EST#0001 — look up for PUT/DELETE |

| client_id | string | Client user ID |

| client_name | string | Client company or contact name — auto-resolved to ID |

| valid_till | string | Expiry date YYYY-MM-DD |

| sub_total | number | Subtotal |

| total | number | Total amount — required for POST |

| discount | number | Discount amount |

| discount_type | string | percent or fixed |

| currency_id | string | Currency ID |

| note | string | Notes |

| status | string | draft / sent / declined / accepted |

| search | string | Search by number or client |

| startDate | string | Filter from valid_till |

| endDate | string | Filter 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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Contract ID |

| subject | string | Contract title — required for POST; also used for lookup |

| client_id | string | Client user ID |

| client_name | string | Client company name — auto-resolved to ID |

| contract_type_id | string | Contract type ID |

| start_date | string | Start date YYYY-MM-DD |

| end_date | string | End date YYYY-MM-DD |

| amount | number | Contract value |

| currency_id | string | Currency ID |

| description | string | Contract notes |

| search | string | Search by contract subject |

| startDate | string | Filter by start_date from |

| endDate | 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

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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Event ID |

| event_name | string | Event name — required for POST; also used for lookup |

| where | string | Event location |

| description | string | Event description |

| start_date_time | string | Start date/time YYYY-MM-DD HH:mmrequired for POST |

| end_date_time | string | End date/time YYYY-MM-DD HH:mmrequired for POST |

| repeat | string | yes / no (default: no) |

| repeat_every | integer | Repeat interval (e.g. every 2 weeks) |

| repeat_cycles | integer | Number of repetitions |

| repeat_type | string | daily / weekly / monthly / yearly |

| label_color | string | Bootstrap class or hex color (default: bg-info) |

| month | string | Filter by month number 1–12 |

| year | string | Filter by year |

| startDate | string | Filter events from date |

| endDate | string | Filter events to date |

| search | 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

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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Expense ID |

| item_name | string | Expense item name — required for POST; also used for lookup |

| purchase_date | string | Purchase date YYYY-MM-DDrequired for POST |

| price | number | Expense amount — required for POST |

| purchase_from | string | Where it was purchased |

| currency_id | string | Currency ID (defaults to company currency) |

| expense_category_id | string | Expense category ID |

| user_id | string | Employee user ID (admin only; defaults to self) |

| employee_name | string | Employee name — auto-resolved to user_id |

| project_id | string | Link to project |

| description | string | Additional notes |

| status | string | pending / approved / rejected — filter (GET) or update (PUT, admin only) |

| can_claim | integer \| boolean | 1 = reimbursement claim, 0 = regular expense |

| startDate | string | Filter from purchase date |

| endDate | 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

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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Category ID |

| category_name | string | Category name — required for POST; also used for lookup |

| search | 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

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.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Notice ID |

| heading | string | Notice title — required for POST; also used for lookup |

| description | string | Notice content body — required for POST |

| to | string | Target audience: all / employee / client (default: all) |

| search | string | Search by heading |

| startDate | string | Filter from created date |

| endDate | 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

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_nameproject_id, task_nametask_id, employee_nameuser_id.

| Parameter | Type | Description |

|---|---|---|

| method | string | GET / POST / PUT / DELETE |

| id | string | Time log ID — required for DELETE |

| project_id | string | Project ID |

| project_name | string | Project name — auto-resolved to project_id |

| task_id | string | Task ID |

| task_name | string | Task heading — auto-resolved to task_id |

| user_id | string | Employee user ID (admin only; defaults to self) |

| employee_name | string | Employee name — auto-resolved to user_id |

| start_time | string | Start datetime YYYY-MM-DD HH:mm (defaults to now on POST) |

| end_time | string | End datetime — provide on PUT to stop the timer |

| memo | string | Optional note for the time log |

| date | string | Filter by specific date (GET) |

| month | string | Filter by month number 1–12 (GET) |

| year | string | Filter 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" }

Account Setup (no API token yet?)

Existing account: Go to FlowyTeam → Settings → MCP & AI Integration → copy your API token, then use the Recommended setup above.

New account: Use auth_register + auth_verify_email below. Both tools are available via https://flowyteam.com/api/mcp/gateway without a token, and must only be invoked when the user explicitly requests it — never autonomously.

auth_register

Create a new FlowyTeam company account.

Call only when the user explicitly requests account creation. A verification email with a 6-digit code is sent immediately. No setup password needed — one is generated and delivered via the verification email.

| Parameter | Type | Required | Description |

|---|---|---|---|

| name | string | ✓ | Full name of the admin user |

| email | string | ✓ | Email address |

| company_name | string | ✓ | Company / organisation name |

| phone | string | — | Phone number |

Response: Returns status: pending_verification. Ask the user to check their email for the 6-digit code, then call auth_verify_email.


auth_verify_email

Activate account and retrieve API token.

Call after auth_register once the user shares the 6-digit code from their verification email.

| Parameter | Type | Required | Description |

|---|---|---|---|

| verification_code | string | ✓ | 6-digit code from the verification email |

Response: Returns api_token — use this as the Bearer token and reconfigure the MCP connection.


Error Codes

| Code | Meaning |

|---|---|

| 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

版本历史

共 2 个版本

  • v1.1.8 当前
    2026-05-07 03:48 安全 安全
  • v1.1.3
    2026-05-03 06:23 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

business-ops

Calendar

ndcccccc
日历管理与日程安排。创建事件、管理会议,并实现多日历平台同步。
★ 7 📥 23,153
business-ops

Stripe

byungkyu
Stripe API 集成,支持托管 OAuth,实现对客户、订阅、发票、产品、价格和支付的可写金融集成。
★ 27 📥 25,996
business-ops

Trello

steipete
使用 Trello REST API 管理看板、列表和卡片
★ 162 📥 41,263