Getfly CRM MCP by usefulapi
MCP server for Getfly CRM — customers, opportunities, orders, tickets and tasks.
我该使用它吗
质量与安全性
发现(1)
- LOW在 getfly_list_opportunity_comments 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"getfly-crm": {
"url": "https://getfly-crm.usefulapi.io/mcp"
}
}
}远程端点
https://getfly-crm.usefulapi.io/mcpstreamable-http它能做什么
工具清单
工具(29)
🟢getfly_list_users(sort, direction, limit, offset, fields, ...)
List the Getfly CRM users (employees): user id, name, department, email, phone. Use the user_name (login name) for the recipient/manager arguments of the create tools. Filters: user_id, contact_name, email, contact_mobile, valid (1 = active users). GET /api/v6.1/users.
输入模式
{
"type": "object",
"properties": {
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
},
"filters": {
"description": "Filters as { \"field\": value } or { \"field:operator\": value }; operators eq, is, in, not_in, contains, between, not_between, gte, gt, lte, lt. in, not_in, between and not_between take an array. Examples: {\"email:contains\":\"@acme.com\"}, {\"id:in\":[1,2,3]}, {\"created_at:between\":[\"2026-10-01 00:00:00\",\"2026-10-31 23:59:59\"]}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
}
]
}
}
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_get_user(user_id, user_username, fields)
One user by id or by login name (exactly one of user_id and user_username). GET /api/v6.1/user.
输入模式
{
"type": "object",
"properties": {
"user_id": {
"description": "User id (from getfly_list_users).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"user_username": {
"description": "User login name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_accounts(sort, direction, limit, offset, fields, ...)
List customers (accounts, i.e. companies or individuals) with code, name, phone, email, address, type, source, relationship, manager, total revenue and contacts. Filters: id, account_code, account_name, phone_office, email, account_type, account_source, relation_id, industry, billing_address_street, created_at, updated_at (gte/lte/between), account_manager (user id), sale_order_status. Newest first. GET /api/v6/accounts.
输入模式
{
"type": "object",
"properties": {
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
},
"filters": {
"description": "Filters as { \"field\": value } or { \"field:operator\": value }; operators eq, is, in, not_in, contains, between, not_between, gte, gt, lte, lt. in, not_in, between and not_between take an array. Examples: {\"email:contains\":\"@acme.com\"}, {\"id:in\":[1,2,3]}, {\"created_at:between\":[\"2026-10-01 00:00:00\",\"2026-10-31 23:59:59\"]}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
}
]
}
}
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_get_account(account_code, fields)
One customer by its customer code (account_code, e.g. KH/2025/000001): full profile with contacts, custom fields, type, source, industry, manager and revenue. GET /api/v6.1/account?account_code=.
输入模式
{
"type": "object",
"properties": {
"account_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Customer code (account_code), from getfly_list_accounts."
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"required": [
"account_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡getfly_create_account(account_name, account_code, email, phone_office, billing_address_street, ...)
WRITE: Create a new customer (account) in Getfly CRM. The customer code must be unique (leave it out to let Getfly generate one). Type, source, industry, relationship, country, province, district and ward are given by NAME and must match the names configured in Getfly. Optionally adds one primary contact. Creating records may trigger the workflows and notifications set up in the CRM. POST /api/v6.1/account.
输入模式
{
"type": "object",
"properties": {
"account_name": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Customer name (company or person)."
},
"account_code": {
"description": "Unique customer code. Optional.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"phone_office": {
"description": "Office phone number.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"billing_address_street": {
"description": "Street address.",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"website": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"sic_code": {
"description": "Tax code.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"birthday": {
"description": "Birthday or founding date, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"account_manager_username": {
"description": "Login name of the managing user (getfly_list_users → user_name).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"account_type_names": {
"description": "Customer type names.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"account_source_names": {
"description": "Customer source names.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"industry_names": {
"description": "Industry names.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"relation_name": {
"description": "Relationship name (e.g. New customer).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"country_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"province_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"district_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"ward_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact": {
"description": "One primary contact person.",
"type": "object",
"properties": {
"first_name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Contact name."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"phone_home": {
"description": "Contact phone.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"email": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"first_name"
]
},
"custom_fields": {
"description": "Custom field values by field key.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"account_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴getfly_update_account(current_account_code, account_code, account_name, email, phone_office, ...)
WRITE: Update fields of an existing customer, found by its current customer code. Send only the fields to change. Names (relationship, country, province...) must match those configured in Getfly. Contacts and the type/source/industry lists are not editable here. PUT /api/v6.1/account.
输入模式
{
"type": "object",
"properties": {
"current_account_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The customer's current code (account_code)."
},
"account_code": {
"description": "New customer code, only to rename the code.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"account_name": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"email": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"phone_office": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"billing_address_street": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"website": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"sic_code": {
"description": "Tax code.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"birthday": {
"description": "yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"account_manager_username": {
"description": "Login name of the new managing user.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"relation_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"country_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"province_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"district_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"ward_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"custom_fields": {
"description": "Custom field values by field key.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"current_account_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_campaigns(fields)
List sales campaigns (opportunity pipelines): campaign code and name, responsible user, lock state, related users and the pipeline stages (status ids and names). GET /api/v6.1/campaigns.
输入模式
{
"type": "object",
"properties": {
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_get_campaign_stages(campaign_id, campaign_code)
The pipeline stages of one campaign (status id, name and how many opportunities are in each). Pass exactly one of campaign_id and campaign_code. GET /api/v6.1/campaign/status.
输入模式
{
"type": "object",
"properties": {
"campaign_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"campaign_code": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_opportunities(campaign_code, sort, direction, limit, offset, ...)
List sales opportunities (deals in a campaign pipeline) with code, name, stage, probability, handler, customer and campaign. Filter by campaign with the campaign_code argument. GET /api/v6.1/opportunities.
输入模式
{
"type": "object",
"properties": {
"campaign_code": {
"description": "Only opportunities of this campaign (campaign code from getfly_list_campaigns).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
},
"filters": {
"description": "Filters as { \"field\": value } or { \"field:operator\": value }; operators eq, is, in, not_in, contains, between, not_between, gte, gt, lte, lt. in, not_in, between and not_between take an array. Examples: {\"email:contains\":\"@acme.com\"}, {\"id:in\":[1,2,3]}, {\"created_at:between\":[\"2026-10-01 00:00:00\",\"2026-10-31 23:59:59\"]}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
}
]
}
}
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_get_opportunity(opportunity_code, fields)
One opportunity by its code (e.g. CH2284): stage, probability, handler, customer and campaign. GET /api/v6.1/opportunity.
输入模式
{
"type": "object",
"properties": {
"opportunity_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Opportunity code (opportunity_code)."
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"required": [
"opportunity_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_opportunity_comments(opportunity_id, sort, direction, limit, offset, ...)
The discussion (comments) on an opportunity: author, text and time. GET /api/v6.1/opportunity/{id}/comments.
输入模式
{
"type": "object",
"properties": {
"opportunity_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Opportunity id (the numeric id, not the code)."
},
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"required": [
"opportunity_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡getfly_create_opportunity(campaign_code, account_name, account_phone, contact_name, contact_phone, ...)
WRITE: Create a sales opportunity in a campaign for a customer and assign it to a user. Creates (or links) the customer and contact from the details given. The assigned user and the campaign rules may be notified by Getfly. POST /api/v6.1/opportunity.
输入模式
{
"type": "object",
"properties": {
"campaign_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Campaign code (getfly_list_campaigns)."
},
"account_name": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Customer name."
},
"account_phone": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Customer phone number."
},
"contact_name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Contact person name."
},
"contact_phone": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Contact phone number."
},
"recipient_username": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Login name of the user who handles it (getfly_list_users → user_name)."
},
"account_code": {
"description": "Existing customer code, if the customer already exists.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"account_email": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_email": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"campaign_code",
"account_name",
"account_phone",
"contact_name",
"contact_phone",
"recipient_username"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴getfly_move_opportunity_stage(opportunity_code, opportunity_id, campaign_code, campaign_id, opportunity_status_name, ...)
WRITE: Move an opportunity to another stage of its campaign pipeline, without changing anything else. Identify the opportunity by code (or id) and the campaign by code (or id); the new stage by name (or status id) from getfly_get_campaign_stages. Won/lost/cancelled results are not set here. PUT /api/v6.1/opportunity/stage.
输入模式
{
"type": "object",
"properties": {
"opportunity_code": {
"description": "Opportunity code. Use this or opportunity_id.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"opportunity_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"campaign_code": {
"description": "Campaign code. Use this or campaign_id.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"campaign_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"opportunity_status_name": {
"description": "New stage name. Use this or opportunity_status.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"opportunity_status": {
"description": "New stage (status) id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡getfly_add_opportunity_comment(opportunity_id, content, user_id)
WRITE: Post a comment in the discussion of an opportunity, as the given user. Other users following the opportunity may be notified. POST /api/v6.1/opportunity/{id}/comments.
输入模式
{
"type": "object",
"properties": {
"opportunity_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Opportunity id (the numeric id, not the code)."
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 4000,
"description": "Comment text."
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "User id posting the comment (getfly_list_users)."
}
},
"required": [
"opportunity_id",
"content",
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_products(sort, direction, limit, offset, fields)
List products and services with code, name, category, unit, retail/wholesale/online price, sale price, VAT and dates. GET /api/v6.1/products.
输入模式
{
"type": "object",
"properties": {
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_get_product(product_code, fields)
One product by its code (e.g. SP.00192): prices, unit, category, VAT, variants and custom fields. GET /api/v6.1/product.
输入模式
{
"type": "object",
"properties": {
"product_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Product code (product_code)."
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"required": [
"product_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_sale_orders(order_date_from, order_date_to, updated_since, sort, direction, ...)
List sales orders with code, customer, amounts, discount, VAT, status, payment status, assigned user and line items. Filters: id, order_date, created_at, updated_at (eq, gte, lte, between). Newest first. GET /api/v6.1/sale_orders.
输入模式
{
"type": "object",
"properties": {
"order_date_from": {
"description": "Orders dated on or after this day, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"order_date_to": {
"description": "Orders dated on or before this day, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"updated_since": {
"description": "Orders updated at or after this time, yyyy-mm-dd hh:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$"
},
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
},
"filters": {
"description": "Filters as { \"field\": value } or { \"field:operator\": value }; operators eq, is, in, not_in, contains, between, not_between, gte, gt, lte, lt. in, not_in, between and not_between take an array. Examples: {\"email:contains\":\"@acme.com\"}, {\"id:in\":[1,2,3]}, {\"created_at:between\":[\"2026-10-01 00:00:00\",\"2026-10-31 23:59:59\"]}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
}
]
}
}
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_get_sale_order(order_code, fields)
One sales order by its order code: status, payment status, amounts, customer, line items, shipping info and custom fields. Add payment_periods to fields to include the payment schedule. GET /api/v6.1/sale_order.
输入模式
{
"type": "object",
"properties": {
"order_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Order code (order_code), from getfly_list_sale_orders."
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"required": [
"order_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_tickets(sort, direction, limit, offset, fields, ...)
List support tickets with code, title, content, category, customer and custom fields. GET /api/v6.1/tickets.
输入模式
{
"type": "object",
"properties": {
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
},
"filters": {
"description": "Filters as { \"field\": value } or { \"field:operator\": value }; operators eq, is, in, not_in, contains, between, not_between, gte, gt, lte, lt. in, not_in, between and not_between take an array. Examples: {\"email:contains\":\"@acme.com\"}, {\"id:in\":[1,2,3]}, {\"created_at:between\":[\"2026-10-01 00:00:00\",\"2026-10-31 23:59:59\"]}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
}
]
}
}
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_get_ticket(ticket_code, fields)
One support ticket by its ticket code. GET /api/v6.1/ticket.
输入模式
{
"type": "object",
"properties": {
"ticket_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Ticket code (ticket_code), from getfly_list_tickets."
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"required": [
"ticket_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_ticket_comments(ticket_id, sort, direction, limit, offset, ...)
The discussion (comments) on a support ticket: author, text and time. GET /api/v6.1/ticket/{id}/comments.
输入模式
{
"type": "object",
"properties": {
"ticket_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Ticket id (the numeric id, not the code)."
},
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"required": [
"ticket_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_ticket_categories
The support ticket categories (id and name). Use a name as cate_name when creating a ticket. GET /api/v6.1/ticket/categories.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_ticket_statuses
The support ticket statuses (id and name). Use a name as status_name when creating a ticket. GET /api/v6.1/ticket/status.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡getfly_create_ticket(ticket_title, ticket_content, cate_name, status_name, account_code, ...)
WRITE: Create a support ticket, optionally for a customer. Category and status are given by NAME and must match the names configured in Getfly (getfly_list_ticket_categories, getfly_list_ticket_statuses). The content may contain HTML. Getfly may notify the support team. POST /api/v6.1/ticket.
输入模式
{
"type": "object",
"properties": {
"ticket_title": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Short title."
},
"ticket_content": {
"type": "string",
"minLength": 1,
"maxLength": 10000,
"description": "Ticket text (HTML allowed)."
},
"cate_name": {
"description": "Category name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status_name": {
"description": "Initial status name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"account_code": {
"description": "Customer code.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"account_email": {
"description": "Customer email.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_name": {
"description": "Contact person name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"expected_at": {
"description": "Expected resolution date, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"emergency_phone": {
"description": "Emergency contact phone.",
"type": "string",
"minLength": 1,
"maxLength": 50
}
},
"required": [
"ticket_title",
"ticket_content"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_tasks(limit, offset, fields)
List tasks with code, name, start/end time, status, progress, assignee, project and related customers. GET /api/v6.1/tasks.
输入模式
{
"type": "object",
"properties": {
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_get_task(task_code, fields)
One task by its task code: status, progress, assignee, project, dates and custom fields. GET /api/v6.1/task.
输入模式
{
"type": "object",
"properties": {
"task_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Task code (task_code), from getfly_list_tasks."
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
}
},
"required": [
"task_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡getfly_create_task(task_name, task_start_date, task_end_date, project_name, task_type_name, ...)
WRITE: Create a task, optionally in a project, assigned to a user and linked to a customer. Project and task type are given by NAME and must exist in Getfly; users by login name. The assignee may be notified by Getfly. POST /api/v6.1/task.
输入模式
{
"type": "object",
"properties": {
"task_name": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Task name."
},
"task_start_date": {
"description": "Start, yyyy-mm-dd hh:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$"
},
"task_end_date": {
"description": "End, yyyy-mm-dd hh:mm:ss.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$"
},
"project_name": {
"description": "Project name (must exist).",
"type": "string",
"minLength": 1,
"maxLength": 300
},
"task_type_name": {
"description": "Task type name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"task_description": {
"description": "Description (HTML allowed).",
"type": "string",
"minLength": 1,
"maxLength": 10000
},
"task_receiver_username": {
"description": "Login name of the assignee (getfly_list_users → user_name).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"related_users": {
"description": "Login names of related users.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"task_code": {
"description": "Unique task code. Optional.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"task_parent_code": {
"description": "Code of the parent task.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"account_code": {
"description": "Code of a customer to link to the task.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"task_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴getfly_complete_task(task_code)
WRITE: Mark a task as completed, by its task code. POST /api/v6.1/task/complete.
输入模式
{
"type": "object",
"properties": {
"task_code": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Task code (task_code)."
}
},
"required": [
"task_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢getfly_list_funds(sort, direction, limit, offset, fields, ...)
List the cash/bank funds (accounts for receipts and payments) with id, name, parent, level and financial account. GET /api/v6.1/funds.
输入模式
{
"type": "object",
"properties": {
"sort": {
"description": "Field to sort by (e.g. id, created_at, updated_at). Default: newest id first.",
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,60}$"
},
"direction": {
"description": "Sort direction, used with sort (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Records to return, 1-100 (default 20).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Records to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"fields": {
"description": "Comma-separated field names to return (e.g. id,account_name,email). Leave empty for the default set.",
"type": "string",
"pattern": "^[A-Za-z0-9_.,]{1,2000}$"
},
"filters": {
"description": "Filters as { \"field\": value } or { \"field:operator\": value }; operators eq, is, in, not_in, contains, between, not_between, gte, gt, lte, lt. in, not_in, between and not_between take an array. Examples: {\"email:contains\":\"@acme.com\"}, {\"id:in\":[1,2,3]}, {\"created_at:between\":[\"2026-10-01 00:00:00\",\"2026-10-31 23:59:59\"]}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
}
]
}
}
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据