Method CRM MCP server

Query Method CRM customers, leads, activities and invoices; create and update records. Hosted by usefulapi — connect from Claude, ChatGPT, Cursor, or any MCP client.

Claude claude.ai · Desktop

  1. Open Customize → Connectors, then click + Add → Add custom connector.
  2. Enter the name Method CRM and this URL, then click Add:
    https://method-crm.usefulapi.io/mcp
  3. Claude opens the login page: enter your Method API key.
  4. In a chat, click + → Connectors and turn on Method CRM.

Team and Enterprise: an Owner adds the connector for the organization first.

Claude Code

Run this command, then run /mcp in Claude Code to log in:

claude mcp add --transport http method-crm https://method-crm.usefulapi.io/mcp

Cursor

Add to Cursor or add this to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "method-crm": {
      "url": "https://method-crm.usefulapi.io/mcp"
    }
  }
}

VS Code

Add to VS Code or add this to .vscode/mcp.json:

{
  "servers": {
    "method-crm": {
      "type": "http",
      "url": "https://method-crm.usefulapi.io/mcp"
    }
  }
}

ChatGPT chatgpt.com

  1. Open Plugins, click +, then Add custom MCP server.
  2. Enter the name Method CRM and this URL, choose OAuth as the authentication, confirm the warning and create it:
    https://method-crm.usefulapi.io/mcp
  3. ChatGPT opens the login page: enter your Method API key.
  4. In Plugins, install Method CRM, then choose it in a chat.

No Add custom MCP server option? It depends on your account or workspace settings: see OpenAI's guide.

Codex

Run these commands. The second one opens the login page:

codex mcp add method-crm --url https://method-crm.usefulapi.io/mcp
codex mcp login method-crm

Other MCP clients (Windsurf, Cline, Zed and more): add the URL as a remote MCP server (Streamable HTTP). The client then opens the login page in your browser. Do not add an Authorization header: see Before you connect.

live20 toolsFree 50 tool calls / monthPro $9/mo · $90/yr

Before you connect

The login page asks for your Method API key.

Only a Method Admin can create one: sign in to Method, click the blue circle icon (top right) → Integrations → API → New, name it and copy the key at once (it is shown only once). The key acts with that user's permissions and cannot be read-only, so a dedicated user makes its activity easy to track. It is used only to call the Method API on your behalf and is never shown to anyone.

Add only the URL. Do not add an Authorization header or an API key to the client config. The server signs you in with OAuth: the login page asks for your Method API key. If the config has such a header, remove it: some clients then send that header instead of the login token, and every call fails with 401.

Example prompts

Turn on the Method CRM connector, then ask in plain words. The AI picks the tools.

Tools 20

ToolTypeWhat it does
method_get_accountread
Get API key owner
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.
method_list_tablesread
List tables
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.
method_get_table_fieldsread
Get table fields
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.
method_query_recordsread
Query records
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}.
method_count_recordsread
Count records
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.
method_get_recordread
Get record
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}.
method_search_customersread
Search customers and leads
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.
method_list_contactsread
List contacts
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.
method_list_activitiesread
List activities
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.
method_list_invoicesread
List invoices
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.
method_list_filesread
List files on a record
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.
method_get_file_urlread
Get file download link
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.
method_create_customerwrite
Create customer or lead
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.
method_create_activitywrite
Log an activity
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.
method_create_recordwrite
Create a record
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}.
method_update_recordwrite
Update a record
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}.
method_usage_statusmeta
Usage status (free-tier meter)
Report the caller's current usage: the plan, calls used this month, the limit of the plan (the free monthly cap or the Pro fair use limit), remaining, and whether the limit is reached. Read-only; does not count against the meter.
method_request_featuremeta
Request a missing feature
Tell usefulapi that the user needs something the Method CRM tools cannot do yet (a missing tool, field or filter). Call it only when the user asks for something none of the tools can do, and tell the user that you send the request. Do not call it for errors or for normal requests. Do not include personal data, credentials or customer records. Stored with the product name and the client type (for example Claude or Cursor), without the user's account. At most 5 requests per day. Does not count against the meter.
method_upgrademeta
Upgrade to Pro (unlimited*)
Get Pro: unlimited tool calls (fair use limit: 10,000 a month) on Method CRM (the free tier caps monthly usage). Plans: "monthly" — $9/month; "yearly" — $90/year (2 months free). Cancel any time: Pro then runs to the end of the paid period, so it also suits a one-time job. *A fair use limit applies. Returns a short link to open in your browser (it opens Stripe Checkout); after payment the account upgrades automatically. Does not count against the meter.
method_cancel_subscriptionmeta
Cancel the Pro subscription
Cancel the caller's Method CRM Pro subscription at the end of the paid period (no refund for the current period; Pro continues until then, then the free tier applies). Requires confirm: true. Run method_upgrade later to undo the cancel before the period ends. Does not count against the meter.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Proper user$9/mo · $90/yrUnlimited*

*Pro fair use limit: 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this Method CRM server only. Subscribe with method_upgrade (it returns a Stripe Checkout link). Cancel any time with method_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running method_upgrade before then undoes the cancel. Or write to [email protected].

FAQ

Is this an official Method CRM product?

No. usefulapi is an independent service. It is not affiliated with or endorsed by Method CRM. The server calls the Method CRM API with your own Method CRM access, so it sees only the data that your account can see.

Can I connect Method CRM to Claude or ChatGPT?

Yes. In Claude, add this server's URL as a custom connector. In ChatGPT, add it as a custom MCP server in Plugins. Then log in once. Cursor, VS Code, Claude Code and Codex work too. See the setup steps.

What do I need to connect?

The login page asks for your Method API key. See Before you connect for where to find it.

Do I put my Method CRM key or an Authorization header in the client config?

No. Add only the URL. Do not add an Authorization header or an API key to the client config. The server signs you in with OAuth: the login page asks for your Method API key. If the config has such a header, remove it: some clients then send that header instead of the login token, and every call fails with 401.

How do you keep my Method CRM credentials?

The login stores them encrypted in the authorization grant of your connection. The server uses them to call the Method CRM API for you and to derive a private account id for usage metering. usefulapi does not show them on any page or in any reply. To stop all access, remove the connector and change or delete these credentials in Method CRM.

Can the AI change my Method CRM data?

Yes, if you approve it. 4 of the 16 Method CRM tools can create or change data. The other 12 are marked read-only. Most MCP clients ask you to approve a tool call before it runs.

What does it cost?

The Free plan gives 50 tool calls / month. Pro costs $9/mo or $90/yr, with unlimited tool calls (fair use limit: 10,000 tool calls a month), for this Method CRM server only. Cancel any time: Pro then runs to the end of the paid period. Run method_usage_status to see how many calls you used.

How do I subscribe or cancel?

Ask the AI to run method_upgrade: it returns a Stripe Checkout link. To cancel, run method_cancel_subscription. Pro continues to the end of the paid period.

What if a Method CRM tool that I need is missing?

Tell the AI what you wanted to do. It can send the request with method_request_feature. We store the text with the server name, the type of AI client and the tool you tried, not with your account, and read every request when we plan new tools. You can send up to 5 requests per day.

Which AI clients can I use?

Any client that supports remote MCP servers (Streamable HTTP) with OAuth login: Claude (web and desktop), Claude Code, ChatGPT, Codex, Cursor, VS Code, Windsurf and others.

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.

More CRM & Sales MCP servers

AgencyBlocChurchSuiteCiviCRMCopperFolkFollow Up BossInsightlyJobNimbusLess Annoying CRMmyPhonernoCRM.ioPipedrivePipeline CRMPobuca ConnectPropstackSuiteDashTeamgateTeamleader FocusTwenty

All CRM & Sales servers →