BSVKey Inference MCP
An MCP server that provides pay-per-token inference for Claude and Grok models, with settlement in Bitcoin BSV via micropayments or x402. It exposes tools for listing models, running inference, managing funding channels, and handling payments without requiring a traditional account or credit card.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://inference.bsvkey.com/mcpWhat you can do with it
- Run AI inference using Claude or Grok models
- Pay for tokens using BSV micropayments
- Manage funding channels for agent usage
- Integrate pay-per-token billing into MCP agents
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- bsvkey-inference 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 6 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
list_models
List the models this BSV inference gateway sells, with LIVE retail price (satoshis per 1,000 tokens) at the current BSV/USD rate. No key needed. Call first to choose a model.
{
"type": "object",
"properties": {},
"additionalProperties": false
}infer
Run one metered inference (OpenAI-compatible), paid per token in Bitcoin BSV from your prepaid channel. Returns the completion plus a receipt: satoshis charged, model routed to, remaining balance, and the broker-signed usage receipt. Needs a funded channel key: send the HTTP header "Authorization: Bearer channelId:channelSecret" with the MCP request, or pass apiKey. Thinking models (claude-sonnet-5, claude-opus-5, claude-opus-5-5, claude-fable-5-1) bill their hidden reasoning as output, and maxTokens is raised to at least 1024 for them. On failure the tool returns isError with text "error: <code> (<http status>): <message>". Codes: no_channel_key (no Authorization header and no apiKey); invalid_channel (401: channel not found, bad secret, or closed; open a new one); insufficient_balance (402: the channel cannot cover the worst case for this call; the text includes requiredSats and balanceSats; top up at the website, or lower maxTokens / turn off webSearch); invalid_request (400: unknown model or policy, a model whose provider is not enabled, or a malformed prompt; call list_models); upstream_failed (502: the model provider failed; nothing is charged, retry or pick another model). Nothing is charged on any error. This server does not verify its own receipt: check usageReceipt offline with @bsvkey/x402-bsv-client (verifyReceipt, verifyCharge, verifyMeter) against the key at /v1/receipt-key.
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"model": {
"type": "string",
"default": "auto",
"description": "Model id or policy: auto|cheapest|best, claude-*, grok-*."
},
"apiKey": {
"type": "string",
"description": "channelId:channelSecret for a funded channel. Omit to use the Authorization header (preferred)."
},
"prompt": {
"type": "string",
"description": "The user prompt."
},
"system": {
"type": "string",
"description": "Optional system prompt."
},
"maxTokens": {
"type": "integer",
"default": 512,
"description": "Max output tokens."
},
"webSearch": {
"type": "boolean",
"default": false,
"description": "Let the model search the live web (adds a per-search fee)."
}
},
"additionalProperties": false
}channel_balance
Check a prepaid channel’s remaining Bitcoin BSV balance, spend, and request count. Uses the Authorization header or apiKey. On failure returns isError "error: <code> (<status>): <message>": no_channel_key, or invalid_channel (401/404: not found, bad secret, or closed).
{
"type": "object",
"properties": {
"apiKey": {
"type": "string",
"description": "channelId:channelSecret. Omit to use the Authorization header (preferred)."
}
},
"additionalProperties": false
}open_channel
Explains how to open + fund a prepaid channel. Funding is a real Bitcoin BSV payment signed by a wallet, so it is done once at the website; you then send the returned channel key as "Authorization: Bearer channelId:channelSecret" (or pass it as apiKey).
{
"type": "object",
"properties": {},
"additionalProperties": false
}x402_infer
Run one inference paid PER CALL in Bitcoin BSV via x402, no prepaid channel. Non-custodial, two steps: (1) call without payment to get the 402 quote (status payment_required, accepts[]); nothing is spent. (2) Build and sign a BSV payment for that quote in your own wallet (for example fetchWithX402 / buildPayment in @bsvkey/x402-bsv-client) and call again with the same prompt, model, maxTokens and webSearch plus payment = the base64 X-PAYMENT value. Returns the completion plus the on-chain settlement txid. This server never takes a private key: a wif argument is refused. On failure returns isError "error: <code> (<status>): <message>". Codes: key_refused (a private key was sent; it was not used or forwarded); payment_failed (402: the payment did not settle; nothing is spent); invalid_request (400: unknown model or bad input; nothing is spent); upstream_failed (502: the payment SETTLED but the model provider then failed; the text includes the settlement txid. There is no automatic refund: contact embryospace@gmail.com with that txid).
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"model": {
"type": "string",
"default": "grok-4.3",
"description": "Model id or policy: auto|cheapest|best, claude-*, grok-*."
},
"prompt": {
"type": "string",
"description": "The user prompt."
},
"system": {
"type": "string",
"description": "Optional system prompt."
},
"payment": {
"type": "string",
"description": "The base64 X-PAYMENT header value your wallet signed for the quote from step 1. Omit to get the quote."
},
"maxTokens": {
"type": "integer",
"default": 512,
"description": "Max output tokens."
},
"webSearch": {
"type": "boolean",
"default": false,
"description": "Let the model search the live web (adds a per-search fee to the quote)."
}
},
"additionalProperties": false
}xrp_infer
Run one inference paid PER CALL in XRP on the XRP Ledger via x402, no channel. Non-custodial, two steps: (1) call without payment to get the 402 quote (exact drops, destination, destination tag, signed quote; priced from the XRP Ledger's own XRP/RLUSD market); nothing is spent. (2) Sign one XRP Payment for exactly that in your own wallet and call again with the same prompt, model and maxTokens plus payment = base64 of {"x402Version":1,"scheme":"exact","network":<from quote>,"payload":{"txBlob":<signed blob>,"quote":<accepts[0].extra.quote>}}. The broker checks the payment before broadcasting it, waits for validation (a few seconds), and returns the completion, the settlement tx hash, and a signed receipt. This server never takes a wallet seed: an xrpSeed argument is refused. On failure returns isError "error: <code> (<status>): <message>". Codes: key_refused; pending (202: submitted but not validated yet; call again with the same payment); payment_failed (402: the payment was refused before broadcast or did not settle; nothing is spent unless the text includes a settlement tx); invalid_request (400); upstream_failed (502: the payment SETTLED but the model provider then failed; the text includes the settlement tx. No automatic refund: contact embryospace@gmail.com with it).
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"model": {
"type": "string",
"default": "claude-haiku-4-5",
"description": "Model id or policy: auto|cheapest|best, claude-*, grok-*."
},
"prompt": {
"type": "string",
"description": "The user prompt."
},
"system": {
"type": "string",
"description": "Optional system prompt."
},
"payment": {
"type": "string",
"description": "The base64 X-PAYMENT value carrying your signed XRP Payment for the quote from step 1. Omit to get the quote."
},
"maxTokens": {
"type": "integer",
"default": 512,
"description": "Max output tokens."
}
},
"additionalProperties": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 917 ms
- 95th percentile latency
- 917 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 917 ms · metadata changed · 6 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http bsvkey-inference-mcp https://inference.bsvkey.com/mcpCodex
codex mcp add bsvkey-inference-mcp --url https://inference.bsvkey.com/mcpCursor
{
"mcpServers": {
"bsvkey-inference-mcp": {
"url": "https://inference.bsvkey.com/mcp"
}
}
}Cline
{
"mcpServers": {
"bsvkey-inference-mcp": {
"type": "streamableHttp",
"url": "https://inference.bsvkey.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"bsvkey-inference-mcp": {
"type": "http",
"url": "https://inference.bsvkey.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http bsvkey-inference-mcp https://inference.bsvkey.com/mcpClaude Desktop
{
"mcpServers": {
"bsvkey-inference-mcp": {
"url": "https://inference.bsvkey.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"bsvkey-inference-mcp": {
"serverUrl": "https://inference.bsvkey.com/mcp"
}
}
}Let your agent find its tools
Find servers like BSVKey Inference MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.