Method CRM MCP by usefulapi

io.usefulapi/method-crm · v1.0.0 · sales-and-crm

Method CRM MCP by usefulapi is healthy: it completed an MCP handshake in 1826 ms and exposes 16 tools.

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

Endpoint: https://method-crm.usefulapi.io/mcp (streamable-http)

Repository · Website · JSON · Add to my inventory

Facts

Users (last 30 days)0
HandshakeHealthy
Auth neededNone
Tool count16
Latency1826 ms
Last checked (UTC)2026-10-24T11:30:16.858Z

Health history

Checked (UTC)StatusLatencyError
2026-10-24T11:30:16.858ZHealthy1826

Tools (16)

method_get_accountWho 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.
method_list_tablesList 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.
method_get_table_fieldsThe 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.
method_query_recordsQuery 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
method_count_recordsHow 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.
method_get_recordOne 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/ta
method_search_customersFind 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 wit
method_list_contactsList 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/t
method_list_activitiesList 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.
method_list_invoicesList 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 `appl
method_list_filesList the files attached to a record (name, size, who added it, id). Use the id with method_get_file_url. GET /api/v1/files.
method_get_file_urlA 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.
method_create_customerWRITE: 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
method_create_activityWRITE: 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
method_create_recordWRITE: 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
method_update_recordWRITE: 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