Skip to main content
Glama

Propstack MCP by usefulapi

Update contact

propstack_update_contact
DestructiveIdempotent

WRITE: change the given fields of an existing contact; fields not given stay as they are. Returns the updated contact (business fields). PUT /contacts/{id}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
emailNoPrimary email address.
companyNoCompany the contact works for.
languageNoContact language.
positionNoPosition in the company.
broker_idNoUser id of the person looking after the contact.
home_cellNoMobile number.
last_nameNoLast name.
contact_idYesPropstack contact id.
first_nameNoFirst name.
home_phoneNoLandline number.
is_companyNoTrue if the contact is a company.
salutationNoSalutation: mr or ms.
descriptionNoInternal note on the contact.
office_cellNoBusiness mobile number.
office_phoneNoBusiness phone number.
custom_fieldsNoCustom field values by field name; only the given fields change.
academic_titleNoAcademic title, e.g. Dr.
client_source_idNoContact source id (see propstack_get_reference_data contact_sources).
client_status_idNoContact status id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real behavioral value: omitted fields are left untouched (merge semantics) and the response is the updated contact's business fields. It omits auth/permission requirements, and the stated HTTP verb 'PUT' conflicts semantically with the partial-update behavior it describes, but that is an internal wording issue rather than a contradiction of the annotations.

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

Conciseness5/5

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

Three short clauses lead with the 'WRITE:' classification, then the partial-update rule, then the return value and route. No filler, no restatement of the title, and every element earns its place.

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?

For a 19-parameter mutation tool the description covers the essentials: write nature, merge semantics, and the return shape, and the annotations cover the safety profile. It does not address failure modes (e.g. unknown contact id, invalid reference ids for client_source_id/client_status_id), so it is slightly short of complete.

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

Parameters3/5

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

Schema description coverage is 100% across all 19 parameters including the nested custom_fields object, so the schema already carries full parameter meaning. The description adds only the blanket rule that unlisted fields are unchanged, which is a semantic nuance (notably for custom_fields) but no field-level detail beyond the schema.

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 specific verb+resource ('change the given fields of an existing contact') and immediately scopes the operation as a partial update on an existing entity, which cleanly separates it from propstack_create_contact and propstack_get_contact. An agent can identify the target record type from the description alone.

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

Usage Guidelines3/5

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

The phrasing 'change the given fields of an existing contact' implies when to use it (existing contact, partial change) but never explicitly contrasts with siblings such as propstack_create_contact or propstack_get_contact, nor states prerequisites like needing a valid contact id. Usage is inferable but not spelled out.

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.