Pin Payments MCP by usefulapi

Read Pin Payments charges, refunds, balances, transfers and subscriptions without moving money.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
94%
Naming quality
74%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (10)

  • LOWTool 'pinpayments_list_charge_refunds' name length outside 3-30 rangein pinpayments_list_charge_refunds
  • LOWTool 'pinpayments_list_authorisations' name length outside 3-30 rangein pinpayments_list_authorisations
  • LOWTool 'pinpayments_list_customer_charges' name length outside 3-30 rangein pinpayments_list_customer_charges
  • LOWTool 'pinpayments_list_customer_cards' name length outside 3-30 rangein pinpayments_list_customer_cards
  • LOWTool 'pinpayments_list_customer_subscriptions' name length outside 3-30 rangein pinpayments_list_customer_subscriptions
  • LOWTool 'pinpayments_list_transfer_line_items' name length outside 3-30 rangein pinpayments_list_transfer_line_items
  • LOWTool 'pinpayments_list_recipient_transfers' name length outside 3-30 rangein pinpayments_list_recipient_transfers
  • LOWTool 'pinpayments_get_dispute_activity' name length outside 3-30 rangein pinpayments_get_dispute_activity
  • LOWTool 'pinpayments_list_plan_subscriptions' name length outside 3-30 rangein pinpayments_list_plan_subscriptions
  • LOWTool 'pinpayments_get_subscription_ledger' name length outside 3-30 rangein pinpayments_get_subscription_ledger

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,772Tokens (tool definitions)
~994 BTypical response size
Significant attention impact (4.51% 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": {
    "pin-payments": {
      "url": "https://pin-payments.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://pin-payments.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (35)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢pinpayments_get_balance

The current Pin Payments account balance: available (ready to transfer) and pending (available plus estimated funds from charges that have not settled yet), per currency, in the currency's base unit (cents for AUD). GET /balance.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_charges(page)

List charges (card payments), 25 per page: amount (in the currency's base unit, e.g. cents for AUD), currency, description, payer email, status_message/success, total_fees, merchant_entitlement, amount_refunded, captured, settlement transfers, chargebacks flag, metadata. The card is shown only as scheme and last four digits. GET /charges.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_search_charges(query, start_date, end_date, sort, direction, ...)

Search charges by free text (description, email, metadata, cardholder name, currency, exact amount in the currency's base unit, exact charge/card/refund/customer token) and/or a created-date range. GET /charges/search.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Text to match.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "start_date": {
      "description": "Created on or after this date, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "end_date": {
      "description": "Created before this date, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "sort": {
      "description": "Sort field (default created_at).",
      "type": "string",
      "enum": [
        "created_at",
        "amount"
      ]
    },
    "direction": {
      "description": "Sort direction (default asc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_charge(charge_token)

One charge by token (ch_...), with fees, refunds total, settlement transfer state and chargeback flag. GET /charges/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "charge_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Charge token, e.g. ch_lfUYEBK14zotCTykezJkfg."
    }
  },
  "required": [
    "charge_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_charge_refunds(charge_token, page)

All refunds issued against one charge. GET /charges/{token}/refunds.

Input Schema

{
  "type": "object",
  "properties": {
    "charge_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Charge token (ch_...)."
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "charge_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_refunds(page)

List all refunds, 25 per page: amount (in the currency's base unit), currency, charge token, status_message, error_message, created_at. GET /refunds.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_refund(refund_token)

One refund by token (rf_...). GET /refunds/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "refund_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Refund token, e.g. rf_ERCQy--Ay6o-NKGiUVcKKA."
    }
  },
  "required": [
    "refund_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_authorisations(page)

List card authorisations (held funds, not yet captured; they expire after seven days) with amount, amount_captured, amount_remaining and expired flags. GET /authorisations.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_authorisation(authorisation_token)

One authorisation by token (auth_...). GET /authorisations/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "authorisation_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Authorisation token, e.g. auth_NRzYklT8z3p0yiozsXEAIg."
    }
  },
  "required": [
    "authorisation_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_customers(page)

List stored customers, 25 per page: token, email, first_name, last_name, phone_number, company, notes and the primary card as scheme and last four digits. GET /customers.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_customer(customer_token)

One customer by token (cus_...). GET /customers/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Customer token, e.g. cus_XZg1ULpWaROQCOT5PdwLkQ."
    }
  },
  "required": [
    "customer_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_customer_charges(customer_token, page)

Charges made by one customer. GET /customers/{token}/charges.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Customer token (cus_...)."
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "customer_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_customer_cards(customer_token, page)

Cards stored for one customer, each shown only as scheme, last four digits and issuing country (no token, expiry or address). GET /customers/{token}/cards.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Customer token (cus_...)."
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "customer_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_customer_subscriptions(customer_token, page)

Subscriptions of one customer: state, plan, next billing date, active interval, cancellation time. GET /customers/{token}/subscriptions.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Customer token (cus_...)."
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "customer_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_deposits(page)

List deposits made to the account (amount, currency, bank narration, available_at). GET /deposits.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_deposit(deposit_token)

One deposit by token (dpo_...). GET /deposits/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "deposit_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Deposit token, e.g. dpo_Ts3YECK14zotCTykezRspu."
    }
  },
  "required": [
    "deposit_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_transfers(page)

List transfers (payouts to bank accounts), 25 per page: status, amount, debits/credits, paid_at, reference, line item count, bank account (masked) and recipient. GET /transfers.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_search_transfers(query, start_date, end_date, sort, direction, ...)

Search transfers by token, description, amount or recipient details and/or a created-date range. GET /transfers/search.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Text to match.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "start_date": {
      "description": "Created on or after this date, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "end_date": {
      "description": "Created before this date, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "sort": {
      "description": "Sort field (the only option is paid_at, also the default).",
      "type": "string",
      "enum": [
        "paid_at"
      ]
    },
    "direction": {
      "description": "Sort direction (default asc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_transfer(transfer_token)

One transfer by token (tfer_...). GET /transfers/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "transfer_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Transfer token, e.g. tfer_lfUYEBK14zotCTykezJkfg."
    }
  },
  "required": [
    "transfer_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_transfer_line_items(transfer_token, page)

The ledger line items that make up one transfer (charge entitlements, fees, refunds, chargebacks). GET /transfers/{token}/line_items.

Input Schema

{
  "type": "object",
  "properties": {
    "transfer_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Transfer token (tfer_...)."
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "transfer_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_recipients(page)

List transfer recipients (name, email, masked bank account). GET /recipients.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_recipient(recipient_token)

One recipient by token (rp_...). GET /recipients/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "recipient_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Recipient token, e.g. rp_a98a4fafROQCOT5PdwLkQ."
    }
  },
  "required": [
    "recipient_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_recipient_transfers(recipient_token, page)

Transfers paid to one recipient. GET /recipients/{token}/transfers.

Input Schema

{
  "type": "object",
  "properties": {
    "recipient_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Recipient token (rp_...)."
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "recipient_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_disputes(sort, direction, page)

List chargeback disputes: category, status, amount, the disputed charge, evidence_required_by and the relevant evidence types. GET /disputes.

Input Schema

{
  "type": "object",
  "properties": {
    "sort": {
      "description": "Sort field.",
      "type": "string",
      "enum": [
        "received_at",
        "evidence_required_by",
        "amount"
      ]
    },
    "direction": {
      "description": "Sort direction (default asc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_search_disputes(query, status, sort, direction, page)

Search disputes by status or exact charge token, optionally filtered by status. GET /disputes/search.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Text to match (status, or an exact charge token); at least 3 characters.",
      "type": "string",
      "minLength": 3,
      "maxLength": 200
    },
    "status": {
      "description": "Dispute status, e.g. evidence_required.",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "sort": {
      "description": "Sort field.",
      "type": "string",
      "enum": [
        "received_at",
        "evidence_required_by",
        "amount"
      ]
    },
    "direction": {
      "description": "Sort direction (default asc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_dispute(dispute_token)

One dispute by token (dis_...). GET /disputes/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "dispute_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Dispute token, e.g. dis_JRs6Xgk4jMyF33yGijQ7Nw."
    }
  },
  "required": [
    "dispute_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_dispute_activity(dispute_token)

The activity feed of one dispute (status changes, ledger entries such as chargeback fees and recoveries). GET /disputes/{token}/activity.

Input Schema

{
  "type": "object",
  "properties": {
    "dispute_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Dispute token (dis_...)."
    }
  },
  "required": [
    "dispute_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_plans(page)

List subscription plans: name, amount, currency, interval, trial and setup amounts, subscription counts by state. GET /plans.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_plan(plan_token)

One plan by token (plan_...). GET /plans/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "plan_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Plan token, e.g. plan_ZyDee4HNeUHFHC4SpM2idg."
    }
  },
  "required": [
    "plan_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_plan_subscriptions(plan_token, page)

Subscriptions to one plan. GET /plans/{token}/subscriptions.

Input Schema

{
  "type": "object",
  "properties": {
    "plan_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Plan token (plan_...)."
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "plan_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_subscriptions(page)

List all subscriptions: state (trial, active, cancelling, cancelled), plan, customer, next_billing_date, active interval, cancelled_at. GET /subscriptions.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_subscription(subscription_token)

One subscription by token (sub_...). GET /subscriptions/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "subscription_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Subscription token, e.g. sub_bZWXhTzHooKpk9FZjQfzqQ."
    }
  },
  "required": [
    "subscription_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_subscription_ledger(subscription_token, page)

The ledger entries (credits and debits) of one subscription. GET /subscriptions/{token}/ledger.

Input Schema

{
  "type": "object",
  "properties": {
    "subscription_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Subscription token (sub_...)."
    },
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "subscription_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_list_events(page)

The account's event log (charge.captured, refund.created, dispute.updated, ...), each with the affected record (cards masked). GET /events.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1); 25 results per page. Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢pinpayments_get_event(event_token)

One event by token (evt_...). GET /events/{token}.

Input Schema

{
  "type": "object",
  "properties": {
    "event_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Event token, e.g. evt_12K4fafROQsdI5PdwLkX."
    }
  },
  "required": [
    "event_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded35 tools