Risk classes
Every operation is classified by its impact:chargefy_api_search and chargefy_api_details report the risk class of each
operation before execution.
Available writes
MCP allowscreate and update only for:
- customers;
- products;
- prices;
- discounts;
- discount codes;
- payment links.
delete operations. MCP also does not capture or cancel payments,
does not create refunds, does not change the lifecycle of subscriptions or
invoices, does not resolve disputes, and does not administer webhooks, API keys,
members or permissions.
Retrieving a financial resource never unlocks the matching action. For
example,
refunds.get reads an existing refund, but there is no
refunds.create on the MCP surface.Rate limits
Limits use fixed 60-second windows. Reads and writes are counted per connection + resolved scope; discovery is counted per connection.
The buckets are independent. Hitting the read limit, for instance, does not
consume the write quota.
A call accepted for execution counts against the limit even when the API rejects
the payload during validation. Validate the arguments before repeating it.
Response when the limit is exceeded
The result carriescode: "rate_limited", retryable: true and the minimum
wait in retry_after_ms:
- wait at least
retry_after_msand add jitter; - keep the operation,
dataandintent_idwhen the write intent is the same; - do not create a new
intent_idafter a timeout or a rate limit; - reduce repeated reads with pagination and filters.
Per-call limits
The endpoint accepts one JSON-RPC message per request. Batching is not
supported. Files, images and large collections of objects should go through the
public API’s own endpoints; send MCP only the IDs it needs.
Pagination
Thelist operations of chargefy_api_read use cursor pagination:
Keep going while
has_more is true. Do not send starting_after and
ending_before together, and preserve the same filters, organization and
environment while paging.
Read filters
chargefy_api_read accepts only the equality filters defined in the operation’s
schema. Check the input_schema with chargefy_api_details before assembling
the call.
- send
filtersvalues as strings; - do not use arbitrary operators;
- unknown keys return
invalid_argumentswith the field inparam; - for text search, prefer
search_chargefy_resources.
Organization and environments
A connection belongs to a single organization. Test and live are separate authorizations inside it:- test is enabled by default;
- live is disabled by default;
- each environment can have
none,readorwriteaccess.
livemode. If both test and live are available, send livemode on the tools
that reach data to choose the scope.
An administrator can change availability under Developers → Connections.
Disabling an environment blocks its use immediately and returns
environment_disabled.
Authorization checks
Rate limiting and authorization are different controls. Before executing a tool, the server verifies:- that the connection is active;
- that the OAuth user still has access to the organization;
- that the environment is enabled;
- that the requested scope was granted;
- that the operation is part of that scope’s grant;
- that the user or API key holds the required capability;
- that the arguments match the resolved organization and environment.
no_scope, environment_disabled, org_access_revoked,
write_not_allowed, missing_capability and operation_not_granted are not
solved by retrying. Adjust the connection or the permission named in the error.
Idempotent writes
Every call tochargefy_api_create and chargefy_api_update requires an
intent_id between 16 and 64 characters. It identifies the intent within the
connection and keeps a retry from applying the same change twice.
- the same
intent_id, operation and payload return the already recorded result; - reusing the token with different content returns
idempotency_key_reused; - an identical execution still in flight returns
idempotency_key_in_progress; - idempotency does not bypass rate limits and does not grant permissions.
intent_id alongside the task that originated the write.
Auditing
Calls record the connection, the resolved scope, the operation, the risk class, the status and the duration. Writes also include theintent_id and, when
available, the related object.
Operations executed through the API appear in the dashboard’s request log with
MCP as their origin. Use the request_id returned in errors to correlate the
agent’s response with that trail.
The recorded states distinguish calls that were denied, limited, in flight,
completed, failed or served by an idempotent replay.
State and protocol
The server is stateless: each request is authorized and resolved without depending on the previous one. Conversation memory belongs to the client, not to the Chargefy MCP server.tools/list reflects the current connection. Without write permission,
chargefy_api_create and chargefy_api_update are not exposed.
Data returned to the agent
Names, descriptions, metadata and other fields coming from the account must be treated as data, never as instructions. The client should not let text stored in a resource change the agent’s policy, reveal credentials or authorize an extra action. Also avoid putting secrets, raw card data or unnecessary information into prompts and feedback.When to use the REST API
Prefer the REST API when the integration requires:- an operation absent from
chargefy_api_search; - sustained throughput above the MCP limits;
- filters or expansions that do not exist in the operation’s schema;
- lifecycle, money movement or an administrative action;
- deterministic execution from your backend, with no agent in the decision.
Next steps
Tools and operations
Check the available surface and the schemas of each operation.
Usage examples
See flows for reading, writing, pagination and retries.

