<!-- x-generated: Generated by the Hyperscale artifact pipeline; do not edit by hand -->

# MCP

> Tools are operations callable directly as MCP `tools/call` targets; AI actions are operations exposed to the agent for planning but are not MCP tools. MCP tools can include reads and model-safe mutations. The two sets can overlap or be disjoint, so the per-catalog counts are not additive. See each operation's `MCP reachable` line in the served integration packs under `/discovery/integration/` for the authoritative mapping.

> An empty `scopes` list does not mean a tool is unauthenticated. The admin control-plane mutations run under the `system` principal (the Hyperscale system key), not tenant OAuth scopes, so they declare no OAuth scopes and their `scopes` list is empty by design.

> The manifests below are global contract catalogs, not runtime discovery snapshots. Hosted `POST /v1/mcp` composes tenant discovery from the authenticated Product's capability closure. The admin/system catalog is descriptor-only and has no MCP endpoint.

The hosted MCP server pages `tools/list` at 50 tools per page. A product exposing more tools returns `nextCursor` in the `tools/list` result; keep calling `tools/list` with the returned `cursor` until it is absent, or the client sees only the first 50 tools and misreports the surface.

## Reachability by instrument

Of 382 public Product API operations, 122 are reachable on the tenant MCP surface as tools; the rest are REST/OpenAPI/SDK-only and an agent must drive them through the Product API. MCP tools can include reads and model-safe mutations. AI actions are planning metadata. Instruments not listed have every public SDK operation reachable on the MCP surface.

- account: 2/6 MCP-reachable; REST/OpenAPI/SDK-only: account.close, account.create, account.freeze, account.unfreeze
- beneficiary: 2/4 MCP-reachable; REST/OpenAPI/SDK-only: beneficiary.create, beneficiary.verify
- billing_adjustment: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: billing_adjustment.list, billing_adjustment.retrieve
- billing_subscription: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: billing_subscription.list, billing_subscription.retrieve
- card: 2/8 MCP-reachable; REST/OpenAPI/SDK-only: card.activate, card.cancel, card.create, card.freeze, card.unfreeze, card.update
- card_authorization: 2/7 MCP-reachable; REST/OpenAPI/SDK-only: card_authorization.approve, card_authorization.capture, card_authorization.create, card_authorization.decline, card_authorization.reverse
- card_dispute: 2/6 MCP-reachable; REST/OpenAPI/SDK-only: card_dispute.create, card_dispute.review, card_dispute.update, card_dispute.win
- card_transaction: 2/4 MCP-reachable; REST/OpenAPI/SDK-only: card_transaction.create, card_transaction.refund
- cardholder: 2/8 MCP-reachable; REST/OpenAPI/SDK-only: cardholder.activate, cardholder.close, cardholder.create, cardholder.resume, cardholder.suspend, cardholder.update
- charge: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: charge.list, charge.retrieve
- circle_membership: 2/3 MCP-reachable; REST/OpenAPI/SDK-only: circle_membership.create
- claim: 2/10 MCP-reachable; REST/OpenAPI/SDK-only: claim.approve, claim.assess, claim.attest, claim.create, claim.deny, claim.pay, claim.reverse, claim.update
- collection.pay_in: 0/3 MCP-reachable; REST/OpenAPI/SDK-only: collection.pay_in.cancel, collection.pay_in.capture, collection.pay_in.reserve
- collections_case: 2/9 MCP-reachable; REST/OpenAPI/SDK-only: collections_case.agree_plan, collections_case.assign, collections_case.create, collections_case.recall, collections_case.recover, collections_case.return_uncollected, collections_case.update
- consent: 2/3 MCP-reachable; REST/OpenAPI/SDK-only: consent.revoke
- contact_attempt: 2/4 MCP-reachable; REST/OpenAPI/SDK-only: contact_attempt.create, contact_attempt.void
- credit_agreement: 2/9 MCP-reachable; REST/OpenAPI/SDK-only: credit_agreement.advance, credit_agreement.create, credit_agreement.refinance, credit_agreement.reschedule, credit_agreement.settle, credit_agreement.update, credit_agreement.write_off
- credit_balance: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: credit_balance.list, credit_balance.retrieve
- credit_grant: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: credit_grant.list, credit_grant.retrieve
- credit_ledger_entry: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: credit_ledger_entry.list, credit_ledger_entry.retrieve
- credit_note: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: credit_note.list, credit_note.retrieve
- credit_note_line: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: credit_note_line.list, credit_note_line.retrieve
- customer: 2/6 MCP-reachable; REST/OpenAPI/SDK-only: customer.create, customer.login, customer.logout, customer.signup
- customer.session: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: customer.session.revoke
- customer_access: 2/5 MCP-reachable; REST/OpenAPI/SDK-only: customer_access.close, customer_access.reactivate, customer_access.suspend
- deposit_hold: 2/7 MCP-reachable; REST/OpenAPI/SDK-only: deposit_hold.cancel, deposit_hold.claim, deposit_hold.create, deposit_hold.fund, deposit_hold.return
- developer.log: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: developer.log.list, developer.log.retrieve
- escrow_order: 2/12 MCP-reachable; REST/OpenAPI/SDK-only: escrow_order.cancel, escrow_order.collect_penalty, escrow_order.create, escrow_order.dispute, escrow_order.fund, escrow_order.quote, escrow_order.refund, escrow_order.release, escrow_order.resume, escrow_order.update
- expected_payment: 2/4 MCP-reachable; REST/OpenAPI/SDK-only: expected_payment.cancel, expected_payment.create
- exposure_arrangement: 2/7 MCP-reachable; REST/OpenAPI/SDK-only: exposure_arrangement.approve, exposure_arrangement.close, exposure_arrangement.create, exposure_arrangement.reject, exposure_arrangement.update
- financial_address: 2/4 MCP-reachable; REST/OpenAPI/SDK-only: financial_address.create, financial_address.disable
- flight_booking: 2/12 MCP-reachable; REST/OpenAPI/SDK-only: flight_booking.amend_collect, flight_booking.amend_fee, flight_booking.amend_refund, flight_booking.cancel_confirm, flight_booking.cancel_quote, flight_booking.collect_penalty, flight_booking.confirm, flight_booking.create, flight_booking.release, flight_booking.update
- funding_commitment: 2/3 MCP-reachable; REST/OpenAPI/SDK-only: funding_commitment.create
- funding_round: 2/4 MCP-reachable; REST/OpenAPI/SDK-only: funding_round.close, funding_round.create
- held_settlement: 2/7 MCP-reachable; REST/OpenAPI/SDK-only: held_settlement.abandon, held_settlement.cancel, held_settlement.create, held_settlement.fund, held_settlement.release
- hotel_stay: 2/12 MCP-reachable; REST/OpenAPI/SDK-only: hotel_stay.amend_collect, hotel_stay.amend_fee, hotel_stay.amend_refund, hotel_stay.cancel_confirm, hotel_stay.cancel_quote, hotel_stay.collect_penalty, hotel_stay.confirm, hotel_stay.create, hotel_stay.release, hotel_stay.update
- installment: 2/5 MCP-reachable; REST/OpenAPI/SDK-only: installment.create, installment.update, installment.write_off
- internal_transfer: 2/8 MCP-reachable; REST/OpenAPI/SDK-only: internal_transfer.adjust, internal_transfer.create, internal_transfer.post, internal_transfer.reserve, internal_transfer.reverse, internal_transfer.void
- invoice_line: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: invoice_line.list, invoice_line.retrieve
- kyc.requirements: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: kyc.requirements.retrieve
- lender_distribution: 2/3 MCP-reachable; REST/OpenAPI/SDK-only: lender_distribution.create
- listing: 2/9 MCP-reachable; REST/OpenAPI/SDK-only: listing.create, listing.publish, listing.reopen, listing.reserve, listing.sell, listing.update, listing.withdraw
- meter_period_snapshot: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: meter_period_snapshot.list, meter_period_snapshot.retrieve
- motor_policy: 2/9 MCP-reachable; REST/OpenAPI/SDK-only: motor_policy.bind, motor_policy.cancel, motor_policy.create, motor_policy.deny_claim, motor_policy.open_claim, motor_policy.settle_claim, motor_policy.update
- order: 2/7 MCP-reachable; REST/OpenAPI/SDK-only: order.cancel, order.confirm, order.create, order.fulfill, order.update
- payout: 2/3 MCP-reachable; REST/OpenAPI/SDK-only: payout.create
- payout_run: 2/6 MCP-reachable; REST/OpenAPI/SDK-only: payout_run.cancel, payout_run.create, payout_run.update, payout_run.withhold
- policy: 2/9 MCP-reachable; REST/OpenAPI/SDK-only: policy.bind, policy.cancel, policy.create, policy.endorse, policy.preview, policy.update, policy.withdraw
- product: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: product.list, product.retrieve
- product.earnings: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: product.earnings.settle
- product.treasury: 1/2 MCP-reachable; REST/OpenAPI/SDK-only: product.treasury.provision
- sale_settlement: 2/17 MCP-reachable; REST/OpenAPI/SDK-only: sale_settlement.abandon, sale_settlement.cancel, sale_settlement.collect_service_fee, sale_settlement.confirm_handover, sale_settlement.create, sale_settlement.fund_piece_1, sale_settlement.fund_piece_2, sale_settlement.fund_piece_3, sale_settlement.refund_piece_2, sale_settlement.refund_piece_3, sale_settlement.release_piece_2, sale_settlement.release_piece_3, sale_settlement.unfund_piece_1, sale_settlement.unfund_piece_2, sale_settlement.unfund_piece_3
- sandbox.account: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: sandbox.account.fund
- sandbox.beneficiary: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: sandbox.beneficiary.accept
- sandbox.customer: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: sandbox.customer.onboard
- sandbox.customer_access: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: sandbox.customer_access.activate
- sandbox.platform: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: sandbox.platform.fire
- sandbox_bank_credit: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: sandbox_bank_credit.request
- savings_circle: 2/5 MCP-reachable; REST/OpenAPI/SDK-only: savings_circle.close, savings_circle.create, savings_circle.disband
- subject: 2/3 MCP-reachable; REST/OpenAPI/SDK-only: subject.create
- trade_settlement: 2/8 MCP-reachable; REST/OpenAPI/SDK-only: trade_settlement.abandon, trade_settlement.cancel, trade_settlement.create, trade_settlement.dispute, trade_settlement.fund, trade_settlement.release
- travel_package: 2/6 MCP-reachable; REST/OpenAPI/SDK-only: travel_package.cancel, travel_package.complete, travel_package.confirm, travel_package.create
- trust_evidence: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: trust_evidence.list, trust_evidence.retrieve
- trust_requirement: 0/3 MCP-reachable; REST/OpenAPI/SDK-only: trust_requirement.list, trust_requirement.respond, trust_requirement.retrieve
- trust_review: 0/2 MCP-reachable; REST/OpenAPI/SDK-only: trust_review.list, trust_review.retrieve
- vehicle_escrow: 2/9 MCP-reachable; REST/OpenAPI/SDK-only: vehicle_escrow.collect_penalty, vehicle_escrow.confirm_cancel, vehicle_escrow.create, vehicle_escrow.fund, vehicle_escrow.quote_cancel, vehicle_escrow.release, vehicle_escrow.update
- vehicle_listing: 2/8 MCP-reachable; REST/OpenAPI/SDK-only: vehicle_listing.complete, vehicle_listing.create, vehicle_listing.delist, vehicle_listing.reserve, vehicle_listing.unreserve, vehicle_listing.update
- wallet: 2/10 MCP-reachable; REST/OpenAPI/SDK-only: wallet.activate, wallet.close, wallet.create, wallet.freeze, wallet.topup, wallet.unfreeze, wallet.update, wallet.withdraw
- wallet_spend: 2/5 MCP-reachable; REST/OpenAPI/SDK-only: wallet_spend.create, wallet_spend.post, wallet_spend.refund
- webhook.delivery: 1/2 MCP-reachable; REST/OpenAPI/SDK-only: webhook.delivery.resend
- webhook.endpoint: 2/8 MCP-reachable; REST/OpenAPI/SDK-only: webhook.endpoint.create, webhook.endpoint.delete, webhook.endpoint.disable, webhook.endpoint.enable, webhook.endpoint.recover, webhook.endpoint.update
- webhook.endpoint.secret: 0/1 MCP-reachable; REST/OpenAPI/SDK-only: webhook.endpoint.secret.rotate

## Tenant MCP global contract catalog

- Manifest: mcp/tenant-tools.manifest.json
- Catalog tools: 122
- Catalog AI actions: 296
- Catalog resources: 7
- Catalog prompts: 1

### Connect an MCP client

Add this server under the `mcpServers` key of any MCP client config
(Claude Desktop, Claude Code, Cursor, and others).

#### Hosted (Streamable HTTP)

Hyperscale serves Product-scoped MCP at `POST https://hyperscale0.ai/v1/mcp` (stateless Streamable HTTP, POST only). Hosted execution requires a Product API key. Authenticated traffic uses the per-credential fair-use budget (default 600 units per 60s window, debited per JSON-RPC message, up to 32 messages per batch) and the 1200-request IP ceiling, separate from the public discovery 120-per-minute rate limit. Discovery is composed from the authenticated Product's capability closure; the global contract catalog is not served wholesale. Scope an exact Product capability subset with the `capabilityIds` query, e.g. `?capabilityIds=accounts,activity`. Clients that support remote Streamable HTTP servers use:

```json
{
  "mcpServers": {
    "hyperscale-tenant-mcp": {
      "type": "http",
      "url": "https://hyperscale0.ai/v1/mcp",
      "headers": {
        "Authorization": "Bearer <HYPERSCALE_API_KEY>",
        "X-Hyperscale-Environment": "sandbox"
      }
    }
  }
}
```

#### Hosted configuration

- Send the Product API key in the `Authorization: Bearer` header.
- Send `sandbox` or `live` in the `X-Hyperscale-Environment` header.

#### Callable tools

MCP exposes reads and model-safe mutations from the authenticated Product's
frozen operation set, including webhook endpoint creation and Product-owned billing period and invoice reads. A mutation that requires idempotency exposes
`idempotencyKey`. A confirmation-gated mutation exposes `confirmation`; set
it to the exact tool name only after the required human or agent checkpoint.
Credential-returning operations (except webhook endpoint creation, which returns its signing secret) stay on the Product API and are not MCP tools.

## Admin/system MCP global descriptor

- Manifest: mcp/admin-system-tools.manifest.json
- Catalog tools: 127
- Catalog AI actions: 120
- Catalog resources: 4
- Catalog prompts: 1

### Connect an MCP client

This control-plane MCP surface is descriptor-only. Hyperscale does not emit a
local executable server for admin/system tools and does not expose a
hosted admin MCP endpoint yet.

#### Admin portal only

Use the Hyperscale admin portal for operator control-plane workflows until a
hosted admin MCP endpoint exists. Do not configure this descriptor as a
local stdio server; it has no `index.js`, no `mcp-core.js`, and no
`mcpServers` command.
