Skip to main content
Glama

FreeAgent MCP by usefulapi

Update a contact

freeagent_update_contact
Destructive

Update fields on an existing contact; only the fields you pass change. status=Hidden hides it (reversible with Active). FreeAgent: PUT /v2/contacts/:id.

Input Schema

NameRequiredDescriptionDefault
townNoTown or city.
emailNoEmail address.
localeNoInvoice language locale, e.g. en.
mobileNoMobile number.
regionNoRegion / county.
statusNoHide or unhide the contact.
contactYesThe contact's numeric id or full FreeAgent URL.
countryNoCountry name, e.g. United Kingdom.
address1NoAddress line 1.
address2NoAddress line 2.
address3NoAddress line 3.
postcodeNoPostcode.
last_nameNoContact last name.
first_nameNoContact first name.
phone_numberNoPhone number.
billing_emailNoEmail address invoices are sent to.
charge_sales_taxNoWhether to charge VAT/sales tax.
organisation_nameNoOrganisation / company name.
contact_name_on_invoicesNoShow the contact's name on invoices.
default_payment_terms_in_daysNoDefault payment terms for invoices to this contact.
sales_tax_registration_numberNoThe contact's VAT registration number.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only offer destructiveHint=true, a bare safety flag. The description adds genuinely useful behavior: the operation is a partial patch, so unspecified fields survive, and the Hidden status is reversible with Active — context that materially softens and clarifies the destructive hint. It doesn't cover auth or failure modes, keeping it below 5.

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?

One sentence plus two tight clauses; the partial-update rule is front-loaded, then the status behavior, then the endpoint. No filler and nothing an agent needs is buried.

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 21-parameter mutation with a single required param and no output schema, the description covers the two riskiest pieces an agent must know — patch semantics and the reversibility of hiding. It omits any hint about the required `contact` identifier or error behavior, so it is strong but not exhaustive.

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 21 parameters, so the schema already carries the field semantics; baseline is 3. The description adds only marginal value by explaining what status=Hidden does (reversible with Active) beyond the schema's 'Hide or unhide the contact.'

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 and resource ('Update fields on an existing contact') plus the patch semantic 'only the fields you pass change', which cleanly separates it from freeagent_create_contact and the read-only freeagent_get_contact. The API endpoint reference (PUT /v2/contacts/:id) reinforces the exact operation.

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?

Makes the partial-update contract explicit ('only the fields you pass change') and notes that status=Hidden is the hide path, reversible via Active. It never names an alternative tool or states when not to use it, so it falls short of a 5.

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.