Skip to main content
This page is the technical reference for the Chargefy MCP. You do not need it to use the assistant day to day: it discovers all of this on its own. It is here to help you understand what happens behind each request and to build calls by hand when you want full control. The assistant sees 11 tools and, through them, executes 63 operations. It works in stages: first it understands the connection, then it discovers the right operation, reads the contract (which fields go in and come out) and only then executes.
That way the tool list stays small and every operation uses the same validation and returns the same object as the public API.
Every connection sees nine tools. The two write tools, chargefy_api_create and chargefy_api_update, only appear when at least one environment was authorized with read and write access.

Catalog of the 11 tools

Context

get_chargefy_account_info

It is the first call of every conversation and the answer to “which environment am I in?”. It takes no arguments.
The response tells you:
  • oauth or api_key authentication;
  • the client name, when available;
  • the contract version;
  • the connection’s organization;
  • the test and/or production scopes;
  • the read or write access of each scope;
  • environment_enabled per scope — whether MCP is enabled in that environment;
  • the authenticated user, under OAuth.
An environment with environment_enabled: false appears in the list, but any call in it answers environment_disabled until an administrator turns MCP on for that environment, under Developers → Agents. If the connection has test and production, the tools that access data need to receive livemode. With a single environment, the server already knows which one to use.

Operation discovery

Searches the catalog for the operations this connection can execute. It is how the assistant discovers that “list customers” is called customers.list.
Each result carries the operation_id, a summary, the HTTP method, the path, the risk class and whether the connection can execute it (executable). When it cannot, not_executable_reason explains why, for example “write permission missing”.

chargefy_api_details

Returns the full contract of an operation, that is, everything the assistant needs to know before calling it:
  • input_schema and output_schema;
  • method and path;
  • risk class;
  • required capability;
  • allowed environments;
  • whether intent_id is required;
  • execution state for this connection;
  • the API reference URL.
A good assistant calls chargefy_api_details before the first write of each operation. The data sent must follow the input_schema exactly; an unknown field makes the call fail instead of being ignored.

Execution

chargefy_api_read

Executes a read operation (class R0): listing or looking up a resource.
starting_after and ending_before never go together. An unknown or invalid filter answers invalid_arguments.

chargefy_api_create

Creates a resource (class R1). It only accepts operations ending in .create; if it receives an .update, it refuses and points at the right tool.
Creating only adds, so the tool is marked as non-destructive. That is why many assistants run creates without asking for confirmation on every call. If you want to approve first, say so in your request.

chargefy_api_update

Changes an existing resource, identified by id (class R1). It only accepts operations ending in .update.
Updating touches something that already exists, so the tool is marked as destructive (destructiveHint). Assistants that respect the marking ask for confirmation before each execution. Fields that do not appear in data keep their current value. On both tools, repeating the same call with the same intent_id returns the original result, without executing again. The same intent_id with another operation or other data is refused.

Searching and loading data

search_chargefy_resources

Searches for a text in the visible fields of each resource. It is what handles requests like “find Maria’s customer record”. Arguments:
  • query: required, 2 to 200 characters;
  • resources: up to 8 types; omit it to search every granted resource;
  • limit: 1 to 25; defaults to 10;
  • livemode: needed when both environments are available;
  • organization: optional and usually inferred.
The response carries only a summary of each result: id, object, display_name and created_at. For the full object, the assistant uses fetch_chargefy_resources or chargefy_api_read.

fetch_chargefy_resources

Loads up to 25 objects at once, from their IDs. The ID prefix tells the resource type:
IDs that do not exist, that the assistant does not know or that it is not allowed to see show up under missing, without saying which of the three it is. That way, an ID from another organization does not even reveal that it exists.

Support

search_chargefy_documentation

Searches this documentation. It is how the assistant answers “how do I verify a webhook signature?” with the right page.
The response carries the title, URL, language and a short excerpt of each page. The content found is reference material for the assistant to read, not an instruction for it to follow.

chargefy_implementation_planner

Builds a step-by-step plan for an integration goal, such as “sell a monthly plan through a link”. The plan lists prerequisites, operations and documentation pages. It never executes anything.
In requests about activation, the planner distinguishes your own account from an organization connected to your platform. MCP guides both cases and reads connected organizations (organizations.list and organizations.get); creating, changing and activating them still goes through the public API. See Activate an organization by API or Activate an organization with a hosted session.

send_chargefy_mcp_feedback

Sends a report to the Chargefy team about MCP itself: a bug, a missing operation or a documentation question.
This tool only records the report. It does not change anything in the account.

The 63 operations

They are 49 reads, 2 calculations (invoice and payment previews, which simulate an amount without changing anything and therefore run through chargefy_api_read with data) and 12 writes: Each operation’s name follows <resource>.<action>: invoices.list, subscriptions.get, prices.update.
Each connection is valid for one organization. On accounts with Chargefy for Platforms, the connection made in the platform organization also reads the organizations connected to it: organizations.list and organizations.get return the full object, with the activation_status and the requirements list of pending items, and organization.* events show up in events.list. Creating, updating and activating connected organizations still goes through the public API.
Being able to look something up does not mean being able to act on it. refunds.get reads a refund that already exists; refunds.create does not exist in MCP.

Responses

When it succeeds, the tool returns:
  • content, the result as JSON text, for assistants that read text;
  • structuredContent, the same result in structured form;
  • on execution operations, exactly the same object the public API returns.
Lists use:
When it fails, the response comes with isError: true and a structured error, with the code, the message and what to do:
request_id, to locate the call in the log, and retry_after_ms, the wait time when a limit is hit, may appear as well. Protocol errors (JSON-RPC) are reserved for malformed messages or tools that do not exist.

Keep going

Usage examples

See how to combine context, discovery, reads and writes.

Limits and security

Check rate limits, auditing and unavailable operations.
* create on previews is a calculation: it runs through chargefy_api_read with data, requires no intent_id and never changes data. ** Only for accounts with Chargefy for Platforms: the connection made in the platform organization reads the organizations connected to it. Without a platform, the operation answers platform_required. *** Only for accounts with Chargefy for Platforms, and only on the connection made with the platform’s API key: it reads the platform’s own fee plans, without on_behalf_of. OAuth connections, even in the platform organization, and connections without a platform answer permission_denied. Plans are created and edited in the dashboard.