Getfly CRM MCP by usefulapi

MCP server for Getfly CRM — customers, opportunities, orders, tickets and tasks.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
89%
命名品質
99%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(1)

  • LOWTool 'getfly_list_opportunity_comments' name length outside 3-30 range在 getfly_list_opportunity_comments 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~9,305Token(工具定義)
~2.6 KB典型回應大小
顯著的注意力影響(128k 上下文的 7.27%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 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"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本29 個工具