Braintree MCP by usefulapi

Search Braintree transactions, customers and payment methods, and refund or void charges.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
99%
Naming quality
77%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'braintree_customer_payment_methods' name length outside 3-30 rangein braintree_customer_payment_methods

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,299Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (1.01% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "braintree": {
      "url": "https://braintree.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://braintree.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢braintree_find_transaction(id)

Fetch one transaction by its GraphQL global ID (the opaque `id` returned by braintree_search_transactions, NOT the short legacy id). Uses the GraphQL `node` query. Returns amount, status, timestamps, order id, and the linked customer.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "GraphQL global transaction ID (opaque, base64-looking), e.g. from a search result's `node.id`."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢braintree_search_transactions(customerId, status, createdAfter, createdBefore, first)

Search transactions by created-at date range, status, and/or customer. Builds a TransactionSearchInput (operators: status `in`, createdAt `greaterThanOrEqualTo`/`lessThanOrEqualTo`, customer.id `is`). Returns a page of transaction nodes (id, legacyId, amount, status, createdAt). GraphQL `search { transactions }`.

Input Schema

{
  "type": "object",
  "properties": {
    "customerId": {
      "description": "GraphQL global Customer ID to filter to one customer's transactions.",
      "type": "string"
    },
    "status": {
      "description": "One or more transaction statuses to match (e.g. [\"SETTLED\",\"VOIDED\"]).",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "AUTHORIZATION_EXPIRED",
          "AUTHORIZING",
          "AUTHORIZED",
          "GATEWAY_REJECTED",
          "FAILED",
          "PROCESSOR_DECLINED",
          "SETTLED",
          "SETTLING",
          "SETTLEMENT_CONFIRMED",
          "SETTLEMENT_DECLINED",
          "SETTLEMENT_PENDING",
          "SUBMITTED_FOR_SETTLEMENT",
          "VOIDED"
        ]
      }
    },
    "createdAfter": {
      "description": "Only transactions created at or after this ISO-8601 timestamp.",
      "type": "string"
    },
    "createdBefore": {
      "description": "Only transactions created at or before this ISO-8601 timestamp.",
      "type": "string"
    },
    "first": {
      "description": "Max transactions to return (page size). Default 25.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢braintree_find_customer(id)

Fetch one customer by GraphQL global Customer ID via the `node` query. Returns id, legacyId, name, company, and created-at. To also enumerate stored cards/PayPal accounts use braintree_customer_payment_methods.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "GraphQL global Customer ID (opaque). Legacy numeric ids differ — resolve them via a transaction search or the id-conversion query first."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢braintree_customer_payment_methods(id, first)

List the vaulted payment methods (credit cards, PayPal accounts, etc.) for one customer, by GraphQL global Customer ID. Returns each method's id, legacyId, usage, created-at, and detail type. GraphQL `node { ... on Customer { paymentMethods } }`.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "GraphQL global Customer ID (opaque)."
    },
    "first": {
      "description": "Max payment methods to return. Default 50.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢braintree_list_subscriptions(customerId, first)

List a customer's recurring / subscription payment activity. IMPORTANT: Braintree's GraphQL API does NOT expose native Subscription objects (recurring-billing management is still legacy-API only — see braintree/graphql-api issue #1). This tool therefore returns the customer's transactions (the observable evidence of subscription charges) via a TransactionSearchInput scoped to the customer; inspect each node's status/amount/createdAt to trace recurring charges. For full subscription CRUD you must use Braintree's legacy server SDK / REST API.

Input Schema

{
  "type": "object",
  "properties": {
    "customerId": {
      "type": "string",
      "description": "GraphQL global Customer ID whose recurring/subscription charges to list."
    },
    "first": {
      "description": "Max transactions to return. Default 50.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "customerId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴braintree_refund_transaction(transactionId, amount)

DESTRUCTIVE. Refund a SETTLED (or settling) transaction, returning money to the customer. Use the GraphQL global transaction ID. Omit `amount` for a full refund, or pass a decimal string for a partial refund. GraphQL mutation `refundTransaction`. For transactions not yet settled, use braintree_void_transaction instead.

Input Schema

{
  "type": "object",
  "properties": {
    "transactionId": {
      "type": "string",
      "description": "GraphQL global transaction ID to refund."
    },
    "amount": {
      "description": "Partial-refund amount as a decimal string (e.g. \"10.00\"). Omit for a full refund.",
      "type": "string",
      "pattern": "^\\d+(\\.\\d{1,2})?$"
    }
  },
  "required": [
    "transactionId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴braintree_void_transaction(transactionId)

DESTRUCTIVE. Void (cancel) a transaction that has NOT yet settled — e.g. an authorization or one submitted-for-settlement. Use the GraphQL global transaction ID. GraphQL mutation `voidTransaction`. For already-settled transactions use braintree_refund_transaction instead.

Input Schema

{
  "type": "object",
  "properties": {
    "transactionId": {
      "type": "string",
      "description": "GraphQL global transaction ID to void."
    }
  },
  "required": [
    "transactionId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
failed observationversion not recorded—