Beacon CRM MCP by usefulapi
Read and filter Beacon CRM records of any type; create, update, upsert, delete records; run exports.
- 1.0.0
- Version
- remote
- Transport
- 11
- Tools
Security review
Review passedReviewed 2h ago.
- tools: 11 tools scanned
- metadata: scanned
No findings.
Tools (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.
beaconcrm_list_users
List the users of the Beacon account (id, role, name, email). Use the inner user.id for 'link to a user' fields. GET /users.
beaconcrm_list_records
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}.
beaconcrm_get_record
One record by type and id, with all its fields. GET /entity/{entity}/{id}.
beaconcrm_filter_records
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":"a@b.org"}]. POST /entities/{entity}/filter.
beaconcrm_create_record
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}.
beaconcrm_update_record
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}.
beaconcrm_upsert_record
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.
beaconcrm_delete_record
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}.
beaconcrm_trigger_export
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.
beaconcrm_list_exports
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.