Getfly CRM MCP by usefulapi
MCP server for Getfly CRM — customers, opportunities, orders, tickets and tasks.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWgetfly_list_opportunity_comments에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`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"
}커뮤니티
증거