Skip to content

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.

Deletes · 5Changes · 1

25 tools: 5 can delete or cancel things, 1 change things and 19 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "chargeover_run_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "chargeover_run_report" says "run": a word for a change.

    What this check looks for

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".

      Matched text

      annotations: {"readOnlyHint":true}; The name "chargeover_run_report" says "run": a word for a change.

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.