Skip to main content
Glama

Method CRM MCP by usefulapi

Server Details

Query Method CRM customers, leads, activities and invoices; create and update records.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A4.1/5.0

Scored across 16 tools

Disambiguation4/5

The generic table tools (method_query_records, method_create_record, method_update_record, method_get_record) intentionally overlap with the dedicated wrappers (method_search_customers, method_list_invoices, method_list_activities, method_create_customer, method_create_activity), but the descriptions explicitly state which to prefer ("For customers/leads and activities use the dedicated tools"), which resolves most ambiguity. Residual confusion remains between method_search_customers and a filtered method_query_records on Customer, and between method_list_invoices and method_query_records with `apply`, but an agent can pick correctly.

Naming Consistency5/5

Every tool follows the same method_<verb>_<noun> snake_case pattern with a consistent verb vocabulary (count, create, get, list, query, search, update). No mixed conventions or stray naming styles.

Tool Count4/5

16 tools is at the upper edge but each maps to a real need: a generic table layer (list_tables, get_table_fields, query_records, count_records, get_record, create_record, update_record) plus focused CRM helpers for the most common tables. A few helpers (list_invoices, search_customers, list_activities) are convenience wrappers over the generic layer, but they add filter semantics worth the surface.

Completeness3/5

Create/read/update and discovery are well covered, but the server explicitly has no delete operation, and child line records (e.g. InvoiceLine) cannot be created through method_create_record, so building a complete invoice is a dead end. File listing/download exists but there is no upload or attach operation.

Available Tools

16 tools
method_count_recordsCount recordsA
Read-only
Inspect

How many records a table has, optionally matching a filter (same filter syntax as method_query_records). Cheap: call it before paging through a big table. GET /api/v1/tables/{table}/count.

NameRequiredDescriptionDefault
tableYesTable name exactly as method_list_tables shows it, e.g. Customer, Contacts, Activity, Invoice, Estimate.
filterNoFilter expression.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a useful cost hint ('Cheap') and the backing GET endpoint, but says nothing about rate limits, response shape beyond an implied count, or filtering behavior on large tables. Useful but modest added value over 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?

Two tight sentences with the purpose front-loaded, followed by the cost/workflow tip and the endpoint. Nothing is redundant and every clause carries information.

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 two-parameter, read-only count tool with no output schema, the description covers purpose, filter reuse, and cost guidance. The return value (a count) is implied clearly enough, though the exact response envelope is not spelled out.

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 adds real meaning by noting the filter uses the same syntax as method_query_records — context the schema's bare 'Filter expression' lacks. The table parameter is left to the schema, which documents it well.

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

Purpose4/5

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

States a specific verb and resource: counting records in a table, with an optional filter. It names method_query_records in passing, which implicitly separates it from the record-returning sibling, though it never explicitly contrasts the two. An agent can identify it as the count-only tool without opening the schema.

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?

'Cheap: call it before paging through a big table' gives an explicit when-to-use condition and a practical workflow context. It also points to method_query_records for the filter syntax, tying it to the alternative. It doesn't state when NOT to use it, keeping it 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.

method_create_activityLog an activityA
Destructive
Inspect

WRITE: logs an activity (call, email, to-do, note) on a customer/lead. entity_id is the Customer RecordID; contact_id is the Contact RecordID (not the Customer's; method_list_contacts finds it). The text goes in Comments. Prefer activity_type_id (read it from an existing activity of that type) over the caption activity_type: a caption that matches zero or several options is silently dropped. Method requires an assignee on standard accounts. The reply re-reads the activity so you can check the links were stored (field names are account-specific; method_get_table_fields with table Activity shows them). It does not email anyone. Not idempotent. POST /api/v1/tables/Activity.

NameRequiredDescriptionDefault
dueNoDue/start time, YYYY-MM-DDTHH:mm:ss.
commentsYesThe note body.
entity_idYesThe Customer (entity) RecordID the activity belongs to, so it shows in its history.
status_idNoActivityStatus_RecordID (account-defined, e.g. Not Started / Completed).
contact_idNoThe Contact RecordID.
activity_typeNoActivity type caption, e.g. Call. Use only if you have no id.
assigned_to_idNoMethod user id of the owner (method_get_account).
activity_type_idNoActivityType_RecordID from an existing activity of the wanted type.

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that captions can be silently dropped, that Method requires an assignee on standard accounts, that the reply re-reads the activity so links can be verified, and that no email is sent. These are non-obvious server-side behaviors an agent would otherwise only discover by failing.

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?

Front-loads the mutating nature with 'WRITE:' and then packs id resolution, the caption pitfall, auth requirement, return behavior, and side effects into dense, non-redundant sentences. No filler.

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

Completeness5/5

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

With 8 parameters, no output schema, and no enums, the description compensates fully: it identifies required inputs, explains id lookup, warns about the silent-drop trap, and describes the response ('re-reads the activity'). Nothing needed to invoke it correctly is missing.

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 adds real cross-field meaning: contact_id is the Contact's RecordID 'not the Customer's', the note body goes in Comments, and activity_type_id should be preferred over activity_type. It does not cover due, status_id, or assigned_to_id beyond what the schema says.

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?

Opens with 'WRITE: logs an activity (call, email, to-do, note) on a customer/lead', giving a specific verb, resource, and enumerated subtypes. An agent can immediately separate it from siblings like method_list_activities and the generic method_create_record.

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?

Gives actionable routing advice: prefer activity_type_id over the caption because 'a caption that matches zero or several options is silently dropped', and points to method_list_contacts and method_get_table_fields for resolving ids. It doesn't explicitly say when to use this versus method_create_record, but the context is otherwise clear.

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

method_create_customerCreate customer or leadA
Destructive
Inspect

WRITE: creates a record in Method's Customer table. is_lead true = a Customer Lead (does not sync to the accounting system); is_lead false = a full customer, which Method syncs to QuickBooks/Xero (it appears there too). Method also creates the primary Contact; its RecordID is returned as contact_id when it could be found (use it, not the customer id, to link activities). Name is required (for a person with no company use "First Last"). extra_fields sets other fields by their exact names (see method_get_table_fields, table Customer). Not idempotent: calling twice creates two records, so search first (method_search_customers). POST /api/v1/tables/Customer.

NameRequiredDescriptionDefault
nameYesDisplay name of the customer or lead.
emailNo
phoneNo
is_leadYestrue = lead (not synced to accounting), false = customer (synced to QuickBooks/Xero).
last_nameNo
first_nameNo
lead_statusNoAccount-defined lead status, e.g. Open (leads only).
extra_fieldsNoField name -> value, exactly as method_get_table_fields names them (case-sensitive; a misspelled name is silently ignored by Method). For a dropdown/linked field send the integer id in its `_RecordID` field (e.g. Customer_RecordID: 1234), not the caption.
assigned_to_idNoOwner: a Method user id (method_get_account, or the Users table).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag non-idempotent, destructive and open-world, but the description adds real consequences: a second call creates a duplicate record, a full customer also appears in QuickBooks/Xero, and a primary Contact record is created as a side effect. That side-effect disclosure is genuinely beyond the structured fields. The remaining gap is the response shape, which is only partially described (contact_id).

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 a 'WRITE:' marker and the core purpose, then the mode distinction, then the side effects and prerequisites. Every sentence carries information, though the heavy parenthetical nesting makes it dense to parse.

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 9-parameter nested-object write tool with no output schema, the description covers the risky parts: duplicate creation, accounting sync, auto-created Contact, and how to address extra_fields. It stops short of describing the full returned payload (e.g. the customer's own id field name), which matters with no output schema.

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 56%, and the description compensates for the most consequential parameters: is_lead's sync semantics, name's requiredness and formatting, and extra_fields' exact-name/case-sensitivity behavior plus the `_RecordID` convention for dropdown fields. email, phone, first_name, last_name and lead_status are left to the schema, which is tolerable since they are largely self-describing.

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?

Opens with a concrete verb and exact target ('creates a record in Method's Customer table') and immediately differentiates the two modes of the resource (lead vs full customer synced to QuickBooks/Xero). An agent can tell this apart from the generic sibling method_create_record without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit routing: search first with method_search_customers because the call is not idempotent, and use method_get_table_fields to discover valid extra_fields names. It also gives a conditional naming rule (use "First Last" when there is no company) and tells the agent to link activities via contact_id rather than the customer id.

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

method_create_recordCreate a recordA
Destructive
Inspect

WRITE: creates a record in any table that allows it (method_list_tables shows canCreate), e.g. Estimate, Invoice, Item, Vendor. For customers/leads and activities use the dedicated tools. Field names are case-sensitive and a wrong one is silently ignored: read them with method_get_table_fields first, and send dropdown links as their _RecordID integer. Creating accounting records (Invoice, Estimate, Customer ...) makes Method sync them to QuickBooks/Xero. Child lines (InvoiceLine ...) are not supported here. Not idempotent. Returns the new RecordID. POST /api/v1/tables/{table}.

NameRequiredDescriptionDefault
tableYesTable name exactly as method_list_tables shows it, e.g. Customer, Contacts, Activity, Invoice, Estimate.
fieldsYesField name -> value, exactly as method_get_table_fields names them (case-sensitive; a misspelled name is silently ignored by Method). For a dropdown/linked field send the integer id in its `_RecordID` field (e.g. Customer_RecordID: 1234), not the caption.

TDQS

A4.4/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: wrong field names are silently ignored, accounting records trigger a QuickBooks/Xero sync side effect, and the call returns the new RecordID. The 'Not idempotent' sentence merely restates idempotentHint=false, and the destructive/openWorld traits are left to the annotations, but the silent-failure and external-sync disclosures are the kind of thing annotations cannot convey.

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 class and verb, then layered constraints in descending importance; nearly every clause is actionable. The example lists (Estimate, Invoice, Item, Vendor) are somewhat expendable given the schema's own examples, keeping it just short of a 5.

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

Completeness5/5

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

For a 2-parameter but nested/any-table mutation with no output schema, it covers everything an agent needs: eligibility check, field-name resolution, dropdown encoding, unsupported child lines, external sync consequences, and the returned RecordID. Nothing material is left to inference.

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 coverage is 100% and the schema already documents the exact-name matching, case sensitivity, silent-ignore behavior, and the `_RecordID` integer convention for dropdowns. The description restates the same guidance rather than adding new syntax or format detail, so the baseline 3 applies.

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?

Starts with an explicit category marker and verb+resource ('WRITE: creates a record in any table that allows it'), then narrows scope immediately: customers/leads and activities go to dedicated tools, child lines are unsupported here. An agent can distinguish this from method_create_customer, method_create_activity, and method_update_record without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use (any table where method_list_tables shows canCreate), when-not (Customer/lead and Activity records, InvoiceLine child lines), and the prerequisite ordering (call method_get_table_fields before creating). It even names the alternative tools rather than leaving the agent to guess.

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

method_get_accountGet API key ownerA
Read-only
Inspect

Who the API key acts as: the Method user behind it (id and name; use the id as an assignee). Also a cheap check that the key works. GET /api/v1/me.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context: what fields come back (id and name), that it doubles as a cheap credential/health check, and the underlying endpoint. It doesn't say what an invalid key returns, which keeps it below a 5.

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?

Three short, front-loaded fragments with no filler. The opening 'Who the API key acts as' is slightly elliptical in isolation but the following clause disambiguates immediately.

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 zero-param read tool with no output schema, the description covers the essential contract by naming the returned fields and the auth-check use case. Error behavior for an invalid key is the only meaningful 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4. The schema and annotations are complete for a no-arg call.

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: returns the Method user (id and name) that the API key authenticates as. No sibling tool does identity lookup, so the distinction is clear, and the endpoint 'GET /api/v1/me' reinforces the exact semantics.

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?

Gives two concrete uses: resolving the id to use as an assignee, and verifying the key works. This is clear context for when to call it, though it doesn't state exclusions or name alternatives (there are none obvious among siblings).

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

method_get_file_urlGet file download linkA
Read-only
Inspect

A temporary download link (valid 20 minutes) for an attached file, by the file id from method_list_files. The link works without the API key: share it only with someone allowed to see the file. GET /api/v1/files/{id}/url.

NameRequiredDescriptionDefault
file_idYesFile id (a GUID).

TDQS

A4.7/5.0
Behavior5/5

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

The annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds substantial behavioral context beyond that: the link is temporary and valid for 20 minutes, it works without an API key, and it should only be shared with someone authorized to see the file.

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?

The description is short, front-loads the key fact (temporary download link valid 20 minutes), then covers the parameter source, security caveat, and endpoint. Every sentence adds useful information without repetition.

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

Completeness5/5

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

For a simple one-parameter read operation with no output schema, the definition covers what the tool returns conceptually, how long the link lasts, where the file id comes from, and the sharing security constraint. Nothing needed to call it correctly is missing.

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 file_id description already explains that it is a GUID. The description adds useful provenance by specifying that the id comes from method_list_files, which helps the agent obtain a valid value before calling.

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?

The description states a specific verb and resource: get a temporary download link for an attached file. It also names the sibling tool where the required file id comes from, so the agent can distinguish this from method_list_files and other list/get tools.

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 establishes the prerequisite by saying the file id comes from method_list_files, and it gives a sharing constraint: share the link only with someone allowed to see the file. It does not explicitly state when not to use this tool or name a true alternative, so it falls short of the full 5 criteria.

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

method_get_recordGet recordA
Read-only
Inspect

One record by RecordID from any table. Pass select to limit the columns; expand names a related CHILD table whose rows are embedded (e.g. InvoiceLine on Invoice; at most 50 rows); a parent such as a contact's Entity is not expanded: read it with its own RecordID (Entity_RecordID). GET /api/v1/tables/{table}/{recordId}.

NameRequiredDescriptionDefault
tableYesTable name exactly as method_list_tables shows it, e.g. Customer, Contacts, Activity, Invoice, Estimate.
expandNoA child table to embed (a table with a dropdown field to this one), e.g. InvoiceLine on Invoice. At most 50 child rows.
selectNoField names to return (case-sensitive, from method_get_table_fields). Without a select Method returns hundreds of columns per row.
record_idYesThe record's RecordID.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the read-only annotations, it discloses important behavior: omitting `select` can return hundreds of columns, `expand` embeds at most 50 child rows, and parent records are not expanded. That is meaningful call-shaping context for an agent.

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?

The definition is front-loaded with the core operation and then efficiently packs parameter guidance into a few dense but useful clauses. There is no wasted text.

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

Completeness5/5

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

With annotations covering safety and the schema covering parameter details, the description supplies the remaining behavioral context needed to call this tool correctly, including return shape hints and expansion limits.

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 schema already documents all four parameters. The description still adds cross-parameter meaning, especially the child-vs-parent `expand` distinction and the `Entity_RecordID` workaround for parents, though much of it overlaps with 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?

The description states a specific verb and resource: get one record by RecordID from any table. It clearly distinguishes this from list/query siblings by emphasizing a single record keyed by RecordID.

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 gives clear operational context for using RecordID and explains when to use `select` and `expand`, including that only child tables are expandable. It does not explicitly name alternatives such as `method_query_records`, 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.

method_get_table_fieldsGet table fieldsA
Read-only
Inspect

The exact field names of a table with type, whether required, creatable and mutable, and for dropdowns the table they reference. Use it to pick select fields and to name fields in create/update calls (names are case-sensitive and wrong ones are silently ignored). GET /api/v1/tables/{table}/fields.

NameRequiredDescriptionDefault
tableYesTable name exactly as method_list_tables shows it, e.g. Customer, Contacts, Activity, Invoice, Estimate.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds a genuinely non-obvious behavioral trait: field names are case-sensitive and wrong names are silently ignored — a failure mode an agent could not infer from annotations. It stops short of auth or rate-limit context, so not a 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?

Two sentences, front-loaded with the returned fields, followed by the usage rule and the silent-failure caveat. The trailing GET path is compact and useful for debugging; nothing is wasted.

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

Completeness5/5

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

One required parameter, read-only annotations, and no output schema — the description compensates by enumerating the shape of the returned field metadata, which is exactly what an agent needs before relying on the response.

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%, and the schema already states the table name must match what method_list_tables returns, with the regex pattern and examples. The description adds no format or naming detail beyond that, so baseline 3 applies.

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 ('The exact field names of a table') and enumerates the metadata returned (type, required, creatable, mutable, dropdown reference table). It is clearly distinguishable from the sibling method_list_tables, which returns tables rather than fields.

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?

Explicitly says when to use it: to pick `select` fields and to supply field names in create/update calls. It does not name the alternative tool to call for a different need, but the usage context is concrete enough that an agent knows the trigger condition.

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

method_list_activitiesList activitiesA
Read-only
Inspect

List activities (calls, emails, to-dos, notes), newest first. Filter by the entity they belong to, the assigned user or a due-date window. The note text is in Comments. Override select for other fields (method_get_table_fields with table Activity). GET /api/v1/tables/Activity.

NameRequiredDescriptionDefault
topNoRows per page, 1-100 (default 25).
skipNoRows to skip (default 0). Pass the previous reply's next_skip.
selectNoField names to return (case-sensitive, from method_get_table_fields). Without a select Method returns hundreds of columns per row.
due_afterNoISO 8601 date-time WITH a timezone (Z or +hh:mm), e.g. 2026-10-01T00:00:00Z.
entity_idNoOnly activities of this entity (Customer RecordID).
due_beforeNoISO 8601 date-time WITH a timezone (Z or +hh:mm), e.g. 2026-10-01T00:00:00Z.
assigned_to_idNoOnly activities assigned to this user id (method_get_account or the Users table).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, so the bar is lower, and the description still adds real operational context: results are newest-first, the note body lives in the Comments field, and omitting `select` returns hundreds of columns per row. It does not describe pagination behavior, though the schema covers that via next_skip.

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?

Four short sentences, front-loaded with purpose and ordering, followed by filtering, a field-location note, and a schema-hint. Every sentence carries information an agent could act on; nothing is redundant with the name or annotations.

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 read-only list tool with 7 fully documented parameters and no output schema, the description supplies the missing context an agent needs: default ordering, field defaults, and the note-text location. Only minor gaps remain, such as result shape and total-count behavior.

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 adds meaning: due_after/due_before are framed as a due-date window, entity_id is tied to 'the entity they belong to', and `select` is explained as an override for the default field set. It does not clarify interaction semantics such as whether filters combine with AND.

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

Purpose4/5

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

States a specific verb and resource and enumerates the activity subtypes (calls, emails, to-dos, notes) plus the default ordering (newest first), which lets an agent distinguish it from list tools for other record types. It does not differentiate itself from the generic sibling method_query_records, so it falls short of a 5.

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?

Gives concrete usage context: filter by entity, assigned user, or a due-date window, and route to method_get_table_fields to discover field names for `select`. No explicit when-not-to-use guidance or comparison against the generic query sibling, so it stops 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.

method_list_contactsList contactsA
Read-only
Inspect

List contacts (people), optionally those of one customer/lead entity (entity_id = the Customer's RecordID) or matching text in name/email/phone. Returns RecordID, name, email, phone, the entity link and active flag. Use a Contact's RecordID (not the Customer's) when linking activities. GET /api/v1/tables/Contacts.

NameRequiredDescriptionDefault
topNoRows per page, 1-100 (default 25).
skipNoRows to skip (default 0). Pass the previous reply's next_skip.
textNoMatches contacts whose Name, Email or Phone contains this text.
selectNoField names to return (case-sensitive, from method_get_table_fields). Without a select Method returns hundreds of columns per row.
entity_idNoOnly contacts of this entity (the Customer/Vendor RecordID).

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the returned field set (RecordID, name, email, phone, entity link, active flag), which is useful since there is no output schema, but it says nothing about pagination behavior or result caps beyond what the schema's top/skip already state.

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 tight sentences: capability first, filter semantics second, the RecordID caveat third. No repetition of schema constraints and no filler; even the endpoint reference is a single trailing clause.

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

Completeness5/5

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

For a five-parameter, zero-required read tool with no output schema, the description covers what is listed, how to scope it, and the return fields, while pagination and field selection are fully documented in the schema. An agent has everything needed to call it correctly on the first attempt.

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, and the description goes further by clarifying that entity_id is the Customer/Vendor RecordID and warning not to confuse it with a Contact's RecordID — a semantic distinction the schema does not spell out. It adds no extra detail on select or text beyond the schema wording.

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 ('List contacts (people)') plus the two filtering modes (entity_id scoping, text matching) and names the backing endpoint. It is immediately distinguishable from siblings such as method_search_customers or method_list_activities, which operate on different resources.

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?

Explains the two ways to narrow the list and gives a concrete downstream rule of thumb ('Use a Contact's RecordID (not the Customer's) when linking activities'). It does not, however, say when to prefer this over method_query_records or method_search_customers, so tool selection across siblings is left to inference.

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

method_list_filesList files on a recordA
Read-only
Inspect

List the files attached to a record (name, size, who added it, id). Use the id with method_get_file_url. GET /api/v1/files.

NameRequiredDescriptionDefault
tableYesTable name exactly as method_list_tables shows it, e.g. Customer, Contacts, Activity, Invoice, Estimate.
record_idYesThe record's RecordID.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds the return payload shape and the follow-up call pattern, which is real value beyond the annotations; only pagination/limits are unaddressed.

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 segments: what it does, what it returns, and how to chain it — front-loaded with zero filler. The trailing 'GET /api/v1/files' is a compact implementation hint that some agents find useful.

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?

With no output schema, the description correctly compensates by enumerating the returned fields. For a read-only two-param tool whose annotations cover safety, the only omission is whether results are paginated or bounded.

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% — both 'table' and 'record_id' are documented in the schema, including the pointer to method_list_tables. The description adds no parameter-level detail, so the baseline 3 applies.

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 ('List the files attached to a record') plus the exact fields returned (name, size, adder, id). An agent can immediately distinguish it from siblings like method_get_file_url or method_get_record.

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?

Clearly positions the tool as the discovery step before method_get_file_url ('Use the id with method_get_file_url'), which is an explicit alternative chaining cue. It doesn't state when not to use it (e.g., for a single known file id), but the workflow context is clear.

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

method_list_invoicesList invoicesA
Read-only
Inspect

List invoices, newest first, optionally only unpaid ones (BalanceRemaining > 0), one customer's (customer_id = Customer RecordID) or created since a time. Returns reference number, customer, dates, amount and balance; override select for other fields. For totals use method_query_records with apply. GET /api/v1/tables/Invoice.

NameRequiredDescriptionDefault
topNoRows per page, 1-100 (default 25).
skipNoRows to skip (default 0). Pass the previous reply's next_skip.
selectNoField names to return (case-sensitive, from method_get_table_fields). Without a select Method returns hundreds of columns per row.
customer_idNoOnly invoices of this customer (Customer RecordID).
unpaid_onlyNoOnly invoices with an outstanding balance.
created_sinceNoISO 8601 date-time WITH a timezone (Z or +hh:mm), e.g. 2026-10-01T00:00:00Z.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds that results come newest-first, what field set is returned by default, and the caveat that omitting `select` returns hundreds of columns. It does not discuss page size/next_skip behavior, but the schema documents that.

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 dense sentence with the core behavior front-loaded, filters in the middle, and the alternative-tool routing at the end. No filler or repetition of schema mechanics.

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?

With no output schema, the description does its job by listing the returned fields and the default-column caveat. Pagination (next_skip/top/skip) is left entirely to the schema, which is acceptable but the one remaining gap for a paged list tool.

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 baseline is 3, but the description adds interpretive meaning: what counts as unpaid (BalanceRemaining > 0), that customer_id is a Customer RecordID, that created_since needs a timezone-bearing ISO timestamp, and that `select` overrides the default field set. This is real value beyond the schema text.

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 (list invoices) along with ordering (newest first) and the optional filters it supports, and explicitly distinguishes itself from method_query_records for aggregates. An agent can tell exactly what this tool returns without opening the schema.

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

Usage Guidelines5/5

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

Gives concrete conditions for each filter (unpaid = BalanceRemaining > 0, customer_id = Customer RecordID, created_since = ISO time) and names the alternative tool (method_query_records with `apply`) for totals. Routing guidance is explicit rather than implied.

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

method_list_tablesList tablesA
Read-only
Inspect

List every table on this Method account (standard QuickBooks/Xero/Method tables and custom ones) with its source and whether it can be created, updated or deleted. Tables differ per account: call this before querying a table you are unsure of. GET /api/v1/tables.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds useful context beyond those annotations by explaining that tables vary per account and that results include source and create/update/delete capabilities, though it does not mention authentication, pagination, or rate limits.

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 sentences are front-loaded with the main purpose, followed by the key usage condition and the endpoint. Every sentence adds useful information without filler.

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

Completeness5/5

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

For a zero-parameter, read-only metadata tool, the description is complete enough: it explains what is returned, why account-specific results matter, and when to call it. Although there is no output schema, the return contents are described sufficiently for correct invocation.

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?

The tool has zero parameters and schema coverage is 100%, so there are no parameter semantics that need explanation. The baseline for a zero-parameter tool is 4.

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?

The description states a specific verb and resource: listing every table on the Method account, including standard QuickBooks/Xero/Method and custom tables. It also clarifies that the response includes source and CRUD capabilities, which distinguishes this metadata-listing tool from sibling query/get tools.

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 gives clear usage context: "call this before querying a table you are unsure of," because tables differ per account. It does not name an alternative sibling or state when not to use this tool, so it stops 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.

method_query_recordsQuery recordsA
Read-only
Inspect

Query any table (Customer, Contacts, Activity, Invoice, Estimate, Item, Users, custom tables ...). Always pass select. filter uses OData-style syntax: strings in single quotes, dates as '2026-05-26T00:00:00Z' with Z or an offset, operators eq ne lt gt le ge and or not, functions contains(Name,'x') startswith() endswith(); e.g. "BalanceRemaining gt 0 and DueDate lt '2026-10-01T00:00:00Z'". apply runs server-side aggregation instead of listing rows, e.g. "aggregate(BalanceRemaining with sum as Outstanding)" or "groupby((Customer), aggregate(Amount with sum as Total))". Default order is RecordID ascending (stable paging); page with next_skip. GET /api/v1/tables/{table}.

NameRequiredDescriptionDefault
topNoRows per page, 1-100 (default 25).
skipNoRows to skip (default 0). Pass the previous reply's next_skip.
applyNoAggregation, e.g. "aggregate($count as Total)"; ignores paging.
tableYesTable name exactly as method_list_tables shows it, e.g. Customer, Contacts, Activity, Invoice, Estimate.
filterNoFilter expression, e.g. "IsLeadStatusOnly eq true and contains(Name,'Smith')".
selectNoField names to return (case-sensitive, from method_get_table_fields). Without a select Method returns hundreds of columns per row.
orderbyNoSort, e.g. "RecordID desc" or "TotalBalance desc,RecordID".

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/destructiveHint/openWorldHint, yet the description still adds real behavioral detail: the default RecordID-ascending ordering that guarantees stable paging, the next_skip paging contract, and the warning that omitting select returns hundreds of columns per row. It omits the response envelope shape, but that is a minor gap against otherwise strong disclosure.

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 core action and the mandatory `select` rule, then the two most error-prone syntax surfaces (filter, apply) with examples. Dense but almost every clause carries operational value; the trailing raw endpoint `GET /api/v1/tables/{table}` is the one piece that may not earn 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 7-parameter, output-schema-less query tool with a non-trivial filter/aggregation DSL, the description supplies the syntax, the paging pattern, the default sort and the select requirement. It does not explain the returned fields (rows array vs next_skip vs aggregate result shape), which an agent would still have to discover at call time.

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; the description goes beyond it by documenting the OData filter grammar (quoting, date format, operators, functions) with a worked example and by showing both aggregate and groupby forms for `apply`. Only `top`/`skip` semantics are left entirely to the schema, which already handles them.

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

Purpose4/5

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

States a concrete verb+resource ("Query any table") and enumerates the table families it covers, making clear it is the generic table reader. It does not explicitly contrast itself with siblings like method_get_record or method_list_contacts, so an agent must infer that those are single-record or pre-filtered alternatives.

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?

Gives concrete in-tool usage rules ("Always pass `select`", "page with next_skip", apply "instead of listing rows") which implicitly tell the agent how to call it. It never says when to prefer this over method_get_record, method_list_* or method_search_customers, so tool-selection guidance is left to inference.

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

method_search_customersSearch customers and leadsA
Read-only
Inspect

Find customers and leads (the Customer table: Customers & Leads in Method) by text in the name or email, by lead/customer type, or list them all. Returns RecordID, name, email, phone, lead flag and status; override select for other fields (see method_get_table_fields with table Customer). Page with next_skip. GET /api/v1/tables/Customer.

NameRequiredDescriptionDefault
topNoRows per page, 1-100 (default 25).
kindNoleads = IsLeadStatusOnly true, customers = false (default all).
skipNoRows to skip (default 0). Pass the previous reply's next_skip.
textNoMatches records whose Name or Email contains this text (case-insensitive).
selectNoField names to return (case-sensitive, from method_get_table_fields). Without a select Method returns hundreds of columns per row.
active_onlyNoOnly active records (IsActive true).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavior: it lists the default return fields, warns that omitting select returns hundreds of columns, and explains pagination via next_skip. It does not cover auth or rate limits, but that is a minor gap.

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 sentences, front-loaded with the core purpose, followed by return details and pagination, ending with the endpoint. Every sentence contributes useful information with no redundancy.

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

Completeness5/5

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

Given six optional parameters, no output schema, and annotations that cover safety, the description is complete: it explains what is returned by default, how to customize fields, how pagination works, and where to find field names. No critical invocation detail is missing.

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%, so all parameters are documented in the schema. The description reiterates text and kind usage and mentions select and skip (as next_skip), but adds no semantics beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states a specific verb (Find) and resource (customers and leads), and scopes the search to text, type, or listing all. It does not explicitly distinguish this search from the generic method_query_records sibling, so sibling differentiation is left implicit.

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?

Usage is implied by the description of search modes (text, type, all) and the note to override select via method_get_table_fields, but there is no explicit when-to-use or when-not-to-use guidance relative to alternatives like method_query_records.

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

method_update_recordUpdate a recordA
DestructiveIdempotent
Inspect

WRITE: changes fields on one record (PATCH: only the fields you pass change). Field names are case-sensitive and Method silently ignores wrong or read-only names, so the reply re-reads the record and shows the stored values of the fields you sent: check them. Linked fields are changed through their _RecordID integer field. Updating accounting records (Customer, Invoice ...) makes Method sync the change to QuickBooks/Xero; setting IsLeadStatusOnly to false converts a lead into a synced customer. There is no delete tool. PATCH /api/v1/tables/{table}/{recordId}.

NameRequiredDescriptionDefault
tableYesTable name exactly as method_list_tables shows it, e.g. Customer, Contacts, Activity, Invoice, Estimate.
fieldsYesField name -> value, exactly as method_get_table_fields names them (case-sensitive; a misspelled name is silently ignored by Method). For a dropdown/linked field send the integer id in its `_RecordID` field (e.g. Customer_RecordID: 1234), not the caption.
record_idYesThe record's RecordID.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well past the annotations by disclosing the silent-failure mode (wrong/read-only field names are ignored without error), the mitigation (reply re-reads and shows stored values, so verify), and an external side effect consistent with openWorldHint: syncing accounting records to QuickBooks/Xero and converting leads into synced customers. No contradiction with destructiveHint=true — the description clarifies mutation scope rather than denying it.

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-loads "WRITE:" and the PATCH distinction, then layers hazards in order of importance. Dense but every clause carries risk information; the trailing endpoint path is the only mildly redundant element given the tool name.

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

Completeness5/5

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

With no output schema, the description correctly explains what the response contains (re-read stored values of the sent fields) and tells the agent to check them. For a nested-object, side-effect-bearing mutation tool, all the call-shaping information an agent needs is present.

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 coverage is 100% and both the case-sensitivity of `fields` and the `_RecordID` integer convention are already documented in the schema, so the description largely restates them. It reinforces the silent-ignore risk rather than adding new syntax or format detail, so the baseline 3 applies.

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?

Opens with an explicit verb+resource+scope: "WRITE: changes fields on one record" and immediately qualifies it as PATCH semantics ("only the fields you pass change"). An agent can distinguish this from method_create_record and method_get_record without opening any schema.

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?

Gives concrete operating conditions: linked fields must be set via `_RecordID` integers, accounting records trigger a QuickBooks/Xero sync, and "There is no delete tool" implicitly bounds what this tool is for. It does not explicitly route the agent to create_record for new records or name when this should be avoided, so it stops short of full when/when-not guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updates
    • First observedmethod_count_records
    • First observedmethod_create_activity
    • First observedmethod_create_customer
    • First observedmethod_create_record
    • First observedmethod_get_account
    • First observedmethod_get_file_url
    • First observedmethod_get_record
    • First observedmethod_get_table_fields
    • First observedmethod_list_activities
    • First observedmethod_list_contacts
    • First observedmethod_list_files
    • First observedmethod_list_invoices
    • First observedmethod_list_tables
    • First observedmethod_query_records
    • First observedmethod_search_customers
    • First observedmethod_update_record

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Remote MCP server for operating a LocalTry CRM with plain-language instructions, enforcing tenant isolation via OAuth-bound connections. Enables searching and managing customers, companies, contacts, leads, jobs, estimates, invoices, and workspace customizations.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides live Zoho CRM data access via MCP tools, enabling queries on modules, records, fields, and related lists without syncing data.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables MCP clients to read, search, create, update, and manage records in Twenty CRM with a safe, composable 14-tool interface and guarded destructive operations.
    14
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with VTiger CRM through tools for module listing, CRUD operations, querying, and searching records.
    1
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.