Skip to main content
Glama

Beacon CRM MCP by usefulapi

Create or update record by key field

beaconcrm_upsert_record
Destructive

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.

Input Schema

NameRequiredDescriptionDefault
entityYesRecord type key, e.g. person, organization, payment or a custom type such as c_application. See beaconcrm_list_record_types.
fieldsYesField 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.
primary_field_keyYesField key used to match an existing record, e.g. emails or external_id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, readOnlyHint=false and idempotentHint=false; the description adds genuinely new behavior: an empty array leaves an existing value untouched, and Beacon workflows may fire as a side effect (which explains why the call is not idempotent). It stops short of describing the response shape or required permissions, but that is a minor gap against this annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation type and the core match logic, then edge cases and the endpoint. Dense but every sentence carries information; slightly long for a three-parameter tool, though nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the mutation, match semantics, empty-array edge case, and workflow side effects, which is what an agent needs to invoke it safely. Return values and authentication requirements are unaddressed, and there is no output schema to compensate, leaving a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining the relationship between parameters: primary_field_key names the match field and fields must carry a value for it. It also conveys the overwrite/merge semantics of fields that the schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb (create/update) and resource (record), and explicitly defines the upsert matching rule, which separates it from the sibling beaconcrm_create_record and beaconcrm_update_record. The WRITE prefix and endpoint (PUT /entity/{entity}/upsert) make the operation unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames the context in which upsert applies: a match on primary_field_key means update, no match means create. However, it never names the alternatives (beaconcrm_create_record, beaconcrm_update_record) or states when NOT to use this tool, so the 'use create instead if...' routing is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.