Beacon CRM MCP by usefulapi

Read and filter Beacon CRM records of any type; create, update, upsert, delete records; run exports.

我該用這個嗎

品質與安全性

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

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

上下文成本

~3,082Token(工具定義)
~1.9 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.41%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "beacon-crm": {
      "url": "https://beacon-crm.usefulapi.io/mcp"
    }
  }
}

遠端端點

https://beacon-crm.usefulapi.io/mcpstreamable-http

它能做什麼

工具清單

工具(11)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢beaconcrm_list_record_types

List the record types of this Beacon account (people, organisations, payments, custom types, ...) with their fields (keys, types, options). Call this first: the keys are what the other tools take as `entity` and as field names. GET /entity_types.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beaconcrm_list_users(page, per_page)

List the users of the Beacon account (id, role, name, email). Use the inner user.id for 'link to a user' fields. GET /users.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beaconcrm_list_records(entity, page, per_page, sort_by, sort_direction, ...)

List records of one type (for example person, organization, payment), one page at a time. Use beaconcrm_filter_records to search by field values. GET /entities/{entity}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
      "description": "Record type key, e.g. person, organization, payment or a custom type such as c_application. See beaconcrm_list_record_types."
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort_by": {
      "description": "Field key to sort by, e.g. created_at.",
      "type": "string",
      "pattern": "^[A-Za-z0-9_.]{1,100}$"
    },
    "sort_direction": {
      "description": "Sort direction (default: Beacon's default order).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "populate": {
      "description": "Include data from linked records (point-to-another-record fields). Beacon's default applies when omitted.",
      "type": "boolean"
    },
    "archived": {
      "description": "true = list deleted (archived) records instead of active ones.",
      "type": "boolean"
    }
  },
  "required": [
    "entity"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beaconcrm_get_record(entity, id, populate)

One record by type and id, with all its fields. GET /entity/{entity}/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
      "description": "Record type key, e.g. person, organization, payment or a custom type such as c_application. See beaconcrm_list_record_types."
    },
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Record id."
    },
    "populate": {
      "description": "Include data from linked records (point-to-another-record fields). Beacon's default applies when omitted.",
      "type": "boolean"
    }
  },
  "required": [
    "entity",
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beaconcrm_filter_records(entity, filter_conditions, filter_strictness, page, per_page, ...)

Search records of one type with Beacon filter conditions (read-only; it uses POST because the filter is a body). Each condition is {"field", "operator", "value"}. Operators by field type: text == != starts_with ends_with contains not_contains null not_null; select (value is an array) contains not_contains in not_in null not_null; number == != > < null not_null; date date_on date_after date_before date_between (value e.g. "2026-01-01", "last_month", or ["2026-01-01","2026-06-01"]); checkbox == true; point-to-record (value is an array of ids) contains not_contains. Location parts: address.city etc.; emails: emails.email. Conditions can nest as {"filter_conditions": [...], "filter_strictness": "all"|"any"}. Example: [{"field":"emails.email","operator":"==","value":"[email protected]"}]. POST /entities/{entity}/filter.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
      "description": "Record type key, e.g. person, organization, payment or a custom type such as c_application. See beaconcrm_list_record_types."
    },
    "filter_conditions": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      },
      "description": "Filter conditions (see the description). An empty list matches every record."
    },
    "filter_strictness": {
      "description": "\"all\" = AND (default), \"any\" = OR.",
      "type": "string",
      "enum": [
        "all",
        "any"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort_by": {
      "description": "Field key to sort by, e.g. created_at.",
      "type": "string",
      "pattern": "^[A-Za-z0-9_.]{1,100}$"
    },
    "sort_direction": {
      "description": "Sort direction (default: Beacon's default order).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "populate": {
      "description": "Include data from linked records (point-to-another-record fields). Beacon's default applies when omitted.",
      "type": "boolean"
    },
    "archived": {
      "description": "true = list deleted (archived) records instead of active ones.",
      "type": "boolean"
    }
  },
  "required": [
    "entity",
    "filter_conditions"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡beaconcrm_create_record(entity, fields)

WRITE: create ONE new record of the given type in the live Beacon database. Not idempotent: calling it twice creates two records (use beaconcrm_upsert_record to avoid duplicates). Beacon workflows may run as a result. Invalid field values are rejected with the rule that failed. POST /entity/{entity}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
      "description": "Record type key, e.g. person, organization, payment or a custom type such as c_application. See beaconcrm_list_record_types."
    },
    "fields": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Field values keyed by field key, in Beacon's field formats (see beaconcrm_list_record_types for keys). Select and point-to-record fields are ARRAYS (e.g. {\"type\": [\"Donation\"], \"customer\": [1725]}); emails are [{\"email\", \"is_primary\"}]; currency is {\"value\", \"currency\"}; dates are ISO strings."
    }
  },
  "required": [
    "entity",
    "fields"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴beaconcrm_update_record(entity, id, fields)

WRITE: change fields of ONE existing record. Only the fields you pass are changed; a select or reference field passed as an empty array [] is CLEARED, removing its existing values. The previous values are not kept by this tool. Beacon workflows may run as a result. PATCH /entity/{entity}/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
      "description": "Record type key, e.g. person, organization, payment or a custom type such as c_application. See beaconcrm_list_record_types."
    },
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Record id."
    },
    "fields": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Field values keyed by field key, in Beacon's field formats (see beaconcrm_list_record_types for keys). Select and point-to-record fields are ARRAYS (e.g. {\"type\": [\"Donation\"], \"customer\": [1725]}); emails are [{\"email\", \"is_primary\"}]; currency is {\"value\", \"currency\"}; dates are ISO strings."
    }
  },
  "required": [
    "entity",
    "id",
    "fields"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴beaconcrm_upsert_record(entity, primary_field_key, fields)

WRITE: create a record, or update the existing one whose key field matches. `primary_field_key` names the field used to find the match (for example "emails" for a person, or "external_id"); `fields` must contain a value for it. If a record matches it is UPDATED with the given fields (an empty array leaves an existing value untouched on upsert); otherwise a new record is created. Beacon workflows may run as a result. PUT /entity/{entity}/upsert.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
      "description": "Record type key, e.g. person, organization, payment or a custom type such as c_application. See beaconcrm_list_record_types."
    },
    "primary_field_key": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.]{1,100}$",
      "description": "Field key used to match an existing record, e.g. emails or external_id."
    },
    "fields": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Field values keyed by field key, in Beacon's field formats (see beaconcrm_list_record_types for keys). Select and point-to-record fields are ARRAYS (e.g. {\"type\": [\"Donation\"], \"customer\": [1725]}); emails are [{\"email\", \"is_primary\"}]; currency is {\"value\", \"currency\"}; dates are ISO strings."
    }
  },
  "required": [
    "entity",
    "primary_field_key",
    "fields"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴beaconcrm_delete_record(entity, id)

WRITE, DESTRUCTIVE: delete ONE record. Beacon keeps deleted records as 'archived' (listable with archived=true), but this server has no restore tool, so treat the deletion as irreversible. Related data that depends on the record may be affected. It is sent once and never retried. DELETE /entity/{entity}/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$",
      "description": "Record type key, e.g. person, organization, payment or a custom type such as c_application. See beaconcrm_list_record_types."
    },
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Id of the record to delete."
    }
  },
  "required": [
    "entity",
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡beaconcrm_trigger_export(entity_export_template_id)

WRITE: start an export job from an existing export template (created in Beacon). Returns the new export's id with status in_progress; then poll beaconcrm_list_exports with that id until progress is 100 and it carries a download url. Each call starts another job. POST /entity_export/trigger.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity_export_template_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Id of the export template (shown in the Beacon URL when you view the template)."
    }
  },
  "required": [
    "entity_export_template_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢beaconcrm_list_exports(entity_export_id)

List recent export jobs with status, progress (100 = complete) and, when complete, a signed download url. Pass entity_export_id to check one job started by beaconcrm_trigger_export. GET /entity_exports.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity_export_id": {
      "description": "Only this export (the id returned by beaconcrm_trigger_export).",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社群

為此伺服器評分

證據

近期觀測

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