ChargeOver MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Read ChargeOver customers, invoices, transactions, subscriptions, reports; create customers, quotes.
25 tools: 5 can delete or cancel things, 1 change things and 19 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads19Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http chargeover https://chargeover.usefulapi.io/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "chargeover_run_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "chargeover_run_report" says "run": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
25 tools
Deletes or cancels 5Claude Code: deny
chargeover_create_contactWRITE: add a contact (person) to an existing customer.No findings
Why it is in this group
- The name "chargeover_create_contact" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add a contact (person) to an existing customer. No email is sent by this call. Returns the new user_id. POST /user.
Annotations the server declares
- title: Add a contact to a customer
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
chargeover_create_customerWRITE: create a new customer (no charge, no invoice, no email is sent by this call).No findings
Why it is in this group
- The name "chargeover_create_customer" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create a new customer (no charge, no invoice, no email is sent by this call). Returns the new customer_id. Add a primary contact with the superuser_* fields. Use chargeover_list_customers first to avoid a duplicate (external_key is unique). POST /customer.
Annotations the server declares
- title: Create a customer
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
chargeover_create_noteWRITE: add a note to a customer, subscription, invoice, contact, quote or item (shown in the ChargeOver UI to the team; never sent to the customer).No findings
Why it is in this group
- The name "chargeover_create_note" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add a note to a customer, subscription, invoice, contact, quote or item (shown in the ChargeOver UI to the team; never sent to the customer). Returns the note id. POST /note.
Annotations the server declares
- title: Add a note
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
chargeover_create_quoteWRITE: create a quote (a proposal) for an existing customer.No findings
Why it is in this group
- The name "chargeover_create_quote" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create a quote (a proposal) for an existing customer. Nothing is billed and no email is sent: the quote stays open until someone sends or accepts it in ChargeOver. Each line refers to an existing item (chargeover_list_items). paycycle: one = one-time invoice, mon = monthly, 2mn = every 2 months, qtr = quarterly, six = every 6 months, yrl = yearly, 2yr, 3yr, 1wk = weekly, 2wk. Returns the new quote_id. POST /quote.
Annotations the server declares
- title: Create a quote
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
chargeover_update_customerWRITE: change fields of an existing customer; send only the fields to change.No findings
Why it is in this group
- The name "chargeover_update_customer" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: change fields of an existing customer; send only the fields to change. Cannot touch payment methods, balances or status. Replaces the previous values of the fields you send. PUT /customer/{customer_id}.
Annotations the server declares
- title: Update a customer
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
Changes things 1Claude Code: ask
chargeover_run_reportRun a saved report and return its rows (read only; nothing is changed).1 finding
Why it is in this group
- The name "chargeover_run_report" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "chargeover_run_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "chargeover_run_report" says "run": a word for a change.
Description, as the server wrote it Run a saved report and return its rows (read only; nothing is changed). Filters use the report's own field names from chargeover_get_report, for example [{field:'transaction_transaction_date',op:'GTE',value:'2026-01-01'}]. Operators vary by field (dates GTE/LTE/EQUALS, ids EQUALS, strings CONTAINS/DOES_NOT_CONTAIN). To page (offset > 0) an order is required. Max 1000 rows per page. POST /_report/{report_id}/_action/reportData.
Annotations the server declares
- title: Run a report
- readOnlyHint: true
Only reads 19Claude Code: allow
chargeover_get_contactGet one contact (user) by user_id: name, email, phone, username, the customers they belong to.No findings
Why it is in this group
- The name "chargeover_get_contact" says "get": a word for reading.
Description, as the server wrote it Get one contact (user) by user_id: name, email, phone, username, the customers they belong to. GET /user/{user_id}.
Annotations the server declares
- title: Get a contact
- readOnlyHint: true
chargeover_get_customerGet one customer by customer_id: company, status, addresses, primary contact, terms, balance fields, custom fields.No findings
Why it is in this group
- The name "chargeover_get_customer" says "get": a word for reading.
Description, as the server wrote it Get one customer by customer_id: company, status, addresses, primary contact, terms, balance fields, custom fields. GET /customer/{customer_id}.
Annotations the server declares
- title: Get a customer
- readOnlyHint: true
chargeover_get_invoiceGet one invoice by invoice_id: status, line items, totals, balance, payments and credits applied, billing address.No findings
Why it is in this group
- The name "chargeover_get_invoice" says "get": a word for reading.
Description, as the server wrote it Get one invoice by invoice_id: status, line items, totals, balance, payments and credits applied, billing address. GET /invoice/{invoice_id}.
Annotations the server declares
- title: Get an invoice
- readOnlyHint: true
chargeover_get_itemGet one item (product, service or discount) by item_id: name, type, SKU, pricing tiers per currency.No findings
Why it is in this group
- The name "chargeover_get_item" says "get": a word for reading.
Description, as the server wrote it Get one item (product, service or discount) by item_id: name, type, SKU, pricing tiers per currency. GET /item/{item_id}.
Annotations the server declares
- title: Get an item
- readOnlyHint: true
chargeover_get_quoteGet one quote by quote_id: status, line items, totals, memo, links to the invoice or subscription it became.No findings
Why it is in this group
- The name "chargeover_get_quote" says "get": a word for reading.
Description, as the server wrote it Get one quote by quote_id: status, line items, totals, memo, links to the invoice or subscription it became. GET /quote/{quote_id}.
Annotations the server declares
- title: Get a quote
- readOnlyHint: true
chargeover_get_reportA report's name, its available_filters (field names and allowed operators), available_columns and default_columns.No findings
Why it is in this group
- The name "chargeover_get_report" says "get": a word for reading.
Description, as the server wrote it A report's name, its available_filters (field names and allowed operators), available_columns and default_columns. Read this before chargeover_run_report to know which filters and columns to use. GET /_report/{report_id}.
Annotations the server declares
- title: Get a report's definition
- readOnlyHint: true
chargeover_get_subscriptionGet one subscription (package) by package_id: status, payment cycle, pay method, next invoice date, line items.No findings
Why it is in this group
- The name "chargeover_get_subscription" says "get": a word for reading.
Description, as the server wrote it Get one subscription (package) by package_id: status, payment cycle, pay method, next invoice date, line items. GET /package/{package_id}.
Annotations the server declares
- title: Get a subscription
- readOnlyHint: true
chargeover_get_transactionGet one transaction (payment, refund or credit that already happened) by transaction_id: amount, method, status, the invoices it was applied to, related refunds.No findings
Why it is in this group
- The name "chargeover_get_transaction" says "get": a word for reading.
Description, as the server wrote it Get one transaction (payment, refund or credit that already happened) by transaction_id: amount, method, status, the invoices it was applied to, related refunds. GET /transaction/{transaction_id}.
Annotations the server declares
- title: Get a transaction (read only)
- readOnlyHint: true
chargeover_list_contactsList contacts (the people at customers; the API calls them users).No findings
Why it is in this group
- The name "chargeover_list_contacts" says "list": a word for reading.
Description, as the server wrote it List contacts (the people at customers; the API calls them users). Filterable fields: user_id, external_key, first_name, last_name, email, phone, user_type_id, username, customers.customer_id (contacts of one customer). Paged: pass next_offset as offset. GET /user.
Annotations the server declares
- title: List or search contacts
- readOnlyHint: true
chargeover_list_couponsList coupons (code, description, type, enabled, linked discount item).No findings
Why it is in this group
- The name "chargeover_list_coupons" says "list": a word for reading.
Description, as the server wrote it List coupons (code, description, type, enabled, linked discount item). Filterable fields: none documented; the list is small. Paged: pass next_offset as offset. GET /coupon.
Annotations the server declares
- title: List coupons
- readOnlyHint: true
chargeover_list_customersList customers (companies that are billed).No findings
Why it is in this group
- The name "chargeover_list_customers" says "list": a word for reading.
Description, as the server wrote it List customers (companies that are billed). Filterable fields: customer_id, parent_customer_id, bill_state, ship_state, bill_country, ship_country, external_key, token, company, superuser_id, superuser_email, customer_status_state (a = active, i = inactive), customer_status_str (active-current, active-overdue, inactive-manual, inactive-activity), custom_1..custom_50, write_datetime, mod_datetime. Paged: pass next_offset as offset. GET /customer.
Annotations the server declares
- title: List or search customers
- readOnlyHint: true
chargeover_list_invoicesList invoices with status, totals, credits, payments and balance.No findings
Why it is in this group
- The name "chargeover_list_invoices" says "list": a word for reading.
Description, as the server wrote it List invoices with status, totals, credits, payments and balance. Filterable fields: invoice_id, refnumber, customer_id, invoice_status_str (open-unpaid, open-overdue, open-collections, closed-void, closed-paid), invoice_status_state (o = open, c = closed), package_id, package_token, date, currency_id, total, balance, subtotal, token, bill_state, bill_country, line_items.item_id, write_datetime, mod_datetime. Paged: pass next_offset as offset. GET /invoice.
Annotations the server declares
- title: List or search invoices
- readOnlyHint: true
chargeover_list_itemsList items: the products, services and discounts that go on invoices, quotes and subscriptions, with their pricing tiers.No findings
Why it is in this group
- The name "chargeover_list_items" says "list": a word for reading.
Description, as the server wrote it List items: the products, services and discounts that go on invoices, quotes and subscriptions, with their pricing tiers. Filterable fields: item_id, name, external_key, accounting_sku, item_type (service or discount), custom_1, custom_2, custom_3. Paged: pass next_offset as offset. GET /item.
Annotations the server declares
- title: List or search items (products and discounts)
- readOnlyHint: true
chargeover_list_notesList notes attached to customers, subscriptions, invoices, contacts, quotes and items.No findings
Why it is in this group
- The name "chargeover_list_notes" says "list": a word for reading.
Description, as the server wrote it List notes attached to customers, subscriptions, invoices, contacts, quotes and items. Filterable fields: context_str (customer, billing_package, invoice, user, quote, item), context_id. Paged: pass next_offset as offset. GET /note.
Annotations the server declares
- title: List notes
- readOnlyHint: true
chargeover_list_quotesList quotes (proposals for a customer or lead; the list has no line items, get one quote for those).No findings
Why it is in this group
- The name "chargeover_list_quotes" says "list": a word for reading.
Description, as the server wrote it List quotes (proposals for a customer or lead; the list has no line items, get one quote for those). Filterable fields: quote_id, customer_id, brand_id, currency_id, refnumber, token, external_key, date, bill_state, bill_country, quote_status_str (open-new, open-sent, closed-won, closed-lost), quote_status_state (o = open, c = closed). Paged: pass next_offset as offset. GET /quote.
Annotations the server declares
- title: List or search quotes
- readOnlyHint: true
chargeover_list_reportsList the account's saved reports (report_id and name).No findings
Why it is in this group
- The name "chargeover_list_reports" says "list": a word for reading.
Description, as the server wrote it List the account's saved reports (report_id and name). Run one with chargeover_run_report. GET /_report.
Annotations the server declares
- title: List reports
- readOnlyHint: true
chargeover_list_subscriptionsList subscriptions (the API calls them packages): recurring billing plans of customers.No findings
Why it is in this group
- The name "chargeover_list_subscriptions" says "list": a word for reading.
Description, as the server wrote it List subscriptions (the API calls them packages): recurring billing plans of customers. Filterable fields: package_id, customer_id, token, brand_id, paymethod, paycycle (mon, qtr, yrl...), nickname, package_status_state (a active, c cancelled, e expired, s suspended), package_status_str (active-trial, active-current, active-overdue, canceled-nonpayment, canceled-manual, expired-expired, expired-trial, suspended-suspended), external_key, write_datetime, mod_datetime, cancel_datetime, line_items.item_id, customer.superuser_email, customer.users.email. Paged: pass next_offset as offset. GET /package.
Annotations the server declares
- title: List or search subscriptions
- readOnlyHint: true
chargeover_list_transactionsList transactions (payments, refunds and credits that already happened; this tool only reads them).No findings
Why it is in this group
- The name "chargeover_list_transactions" says "list": a word for reading.
Description, as the server wrote it List transactions (payments, refunds and credits that already happened; this tool only reads them). Filterable fields: transaction_id, customer_id, gateway_id, currency_id, creditcard_id, ach_id, tokenized_id, token, external_key, gateway_status, gateway_transid, amount, fee, transaction_type, transaction_method, transaction_detail, transaction_datetime, transaction_status.state, transaction_status.str, applied_to.invoice_id, applied_to.package_id. Paged: pass next_offset as offset. GET /transaction.
Annotations the server declares
- title: List or search transactions (read only)
- readOnlyHint: true
chargeover_list_usageList usage (metered billing) data points recorded against subscription line items.No findings
Why it is in this group
- The name "chargeover_list_usage" says "list": a word for reading.
Description, as the server wrote it List usage (metered billing) data points recorded against subscription line items. Filterable fields: line_item_id, external_key, from (date), to (date). Paged: pass next_offset as offset. GET /usage.
Annotations the server declares
- title: List usage (metered) data
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http chargeover https://chargeover.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__chargeover__chargeover_list_customers",
"mcp__chargeover__chargeover_list_contacts",
"mcp__chargeover__chargeover_list_invoices",
"mcp__chargeover__chargeover_list_transactions",
"mcp__chargeover__chargeover_list_quotes",
"mcp__chargeover__chargeover_list_subscriptions",
"mcp__chargeover__chargeover_list_items",
"mcp__chargeover__chargeover_list_notes",
"mcp__chargeover__chargeover_list_usage",
"mcp__chargeover__chargeover_list_coupons",
"mcp__chargeover__chargeover_get_customer",
"mcp__chargeover__chargeover_get_contact",
"mcp__chargeover__chargeover_get_invoice",
"mcp__chargeover__chargeover_get_transaction",
"mcp__chargeover__chargeover_get_quote",
"mcp__chargeover__chargeover_get_subscription",
"mcp__chargeover__chargeover_get_item",
"mcp__chargeover__chargeover_list_reports",
"mcp__chargeover__chargeover_get_report"
],
"ask": [
"mcp__chargeover__chargeover_run_report"
],
"deny": [
"mcp__chargeover__chargeover_create_customer",
"mcp__chargeover__chargeover_update_customer",
"mcp__chargeover__chargeover_create_contact",
"mcp__chargeover__chargeover_create_note",
"mcp__chargeover__chargeover_create_quote"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as chargeover. Review it before you use it.