PubFi MCP
Use MCP 2026-07-28 discovery or 2025-11-25 initialize to list and execute PubFi routes.
Should I use this
Quality & Safety
Findings (5)
- LOWin pubfi.capabilities.list
- LOWin pubfi.capabilities.get
- LOWin pubfi.route.execute
- LOWin pubfi.substrate.runtime_upgrade.verify
- LOWin pubfi.substrate.runtime_upgrade.verify
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"mcp": {
"url": "https://mcp.pubfi.ai"
}
}
}Remote endpoints
https://mcp.pubfi.aistreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢pubfi.capabilities.list(limit, cursor, provider_key, method)
Enumerate the complete installed Registry v2 catalog as deterministic compact pages. The server does not rank, infer intent, or choose a capability.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 50,
"description": "Maximum compact capability summaries to return."
},
"cursor": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Opaque generation-bound cursor returned by the preceding page."
},
"provider_key": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-z0-9](?:[a-z0-9]|-(?!-))*[a-z0-9]$|^[a-z0-9]$",
"description": "Optional exact public provider key. This is a static filter, not semantic search."
},
"method": {
"type": "string",
"enum": [
"GET",
"POST"
]
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"schema_version": {
"const": "pubfi.gateway.registry.capability-page.v5"
},
"generation": {
"type": "object"
},
"manifest": {
"type": "object"
},
"compiled_at": {
"type": "string"
},
"observed_at": {
"type": "string"
},
"total_capability_count": {
"type": "integer",
"minimum": 0
},
"matching_capability_count": {
"type": "integer",
"minimum": 0
},
"filters": {
"type": "object",
"additionalProperties": false,
"properties": {
"provider_key": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"GET",
"POST"
]
}
}
},
"capabilities": {
"type": "array",
"items": {
"type": "object",
"required": [
"capability_id",
"provider_key",
"provider_name",
"matcher",
"methods",
"credential_required",
"operations",
"readiness"
],
"additionalProperties": false,
"properties": {
"capability_id": {
"type": "string"
},
"provider_key": {
"type": "string"
},
"provider_name": {
"type": "string"
},
"matcher": {
"type": "object"
},
"methods": {
"type": "array",
"items": {
"type": "string",
"enum": [
"GET",
"POST"
]
}
},
"credential_required": {
"type": "boolean"
},
"free_rate_limit": {
"type": [
"object",
"null"
],
"required": [
"requests_per_window",
"window_seconds",
"max_concurrency",
"permit_ttl_seconds"
],
"additionalProperties": false,
"properties": {
"requests_per_window": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"window_seconds": {
"type": "integer",
"minimum": 1,
"maximum": 86400
},
"max_concurrency": {
"type": "integer",
"minimum": 1,
"maximum": 256
},
"permit_ttl_seconds": {
"type": "integer",
"minimum": 1,
"maximum": 3600
},
"quota": {
"type": "object",
"required": [
"requests_per_window",
"window_seconds"
],
"additionalProperties": false,
"properties": {
"requests_per_window": {
"type": "integer",
"minimum": 1,
"maximum": 9223372036854776000
},
"window_seconds": {
"type": "integer",
"minimum": 1,
"maximum": 86400
}
}
},
"total_request_limit": {
"type": "integer",
"minimum": 1,
"maximum": 9223372036854776000
},
"bucket_scope": {
"type": "string",
"enum": [
"policy_source",
"provider"
]
}
}
},
"operations": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"method",
"billing"
],
"additionalProperties": false,
"properties": {
"method": {
"type": "string",
"enum": [
"GET",
"POST"
]
},
"billing": {
"oneOf": [
{
"type": "object",
"required": [
"mode"
],
"additionalProperties": false,
"properties": {
"mode": {
"const": "pricing_unavailable"
}
}
},
{
"type": "object",
"required": [
"mode"
],
"additionalProperties": false,
"properties": {
"mode": {
"const": "free_health"
}
}
},
{
"type": "object",
"required": [
"mode",
"price_policy_key",
"price_version",
"credit_cost",
"x402"
],
"additionalProperties": false,
"properties": {
"mode": {
"const": "quantro_priced"
},
"price_policy_key": {
"type": "string",
"minLength": 1
},
"price_version": {
"type": "integer",
"minimum": 1
},
"credit_cost": {
"type": "integer",
"minimum": 1
},
"x402": {
"type": "object",
"required": [
"network",
"asset",
"atomic_amount",
"offer_id"
],
"additionalProperties": false,
"properties": {
"network": {
"type": "string"
},
"asset": {
"type": "string"
},
"atomic_amount": {
"type": "string"
},
"offer_id": {
"type": "string"
}
}
}
}
}
]
}
}
}
},
"readiness": {
"type": "object"
}
}
}
},
"next_cursor": {
"type": "string"
}
},
"required": [
"schema_version",
"generation",
"manifest",
"compiled_at",
"observed_at",
"total_capability_count",
"matching_capability_count",
"filters",
"capabilities"
],
"additionalProperties": false
}🟢pubfi.capabilities.get(capability_id)
Return the full typed request, response, metering, and readiness contract for one exact capability id from the installed Registry generation.
Input Schema
{
"type": "object",
"properties": {
"capability_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-z0-9][a-z0-9._:-]{0,127}$",
"description": "Exact capability id returned by pubfi.capabilities.list."
}
},
"required": [
"capability_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"schema_version": {
"const": "pubfi.gateway.registry.capability-detail.v5"
},
"generation": {
"type": "object"
},
"manifest": {
"type": "object"
},
"compiled_at": {
"type": "string"
},
"observed_at": {
"type": "string"
},
"capability": {
"type": "object",
"required": [
"capability_id",
"route",
"provider",
"provider_key",
"provider_name",
"upstream",
"matcher",
"methods",
"request",
"response",
"credential_required",
"operations",
"readiness"
],
"additionalProperties": false,
"properties": {
"capability_id": {
"type": "string"
},
"route": {
"type": "object"
},
"provider": {
"type": "object"
},
"provider_key": {
"type": "string"
},
"provider_name": {
"type": "string"
},
"upstream": {
"type": "object"
},
"matcher": {
"type": "object"
},
"methods": {
"type": "array",
"items": {
"type": "string",
"enum": [
"GET",
"POST"
]
}
},
"request": {
"type": "object"
},
"response": {
"type": "object"
},
"credential_required": {
"type": "boolean"
},
"free_rate_limit": {
"type": [
"object",
"null"
],
"required": [
"requests_per_window",
"window_seconds",
"max_concurrency",
"permit_ttl_seconds"
],
"additionalProperties": false,
"properties": {
"requests_per_window": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"window_seconds": {
"type": "integer",
"minimum": 1,
"maximum": 86400
},
"max_concurrency": {
"type": "integer",
"minimum": 1,
"maximum": 256
},
"permit_ttl_seconds": {
"type": "integer",
"minimum": 1,
"maximum": 3600
},
"quota": {
"type": "object",
"required": [
"requests_per_window",
"window_seconds"
],
"additionalProperties": false,
"properties": {
"requests_per_window": {
"type": "integer",
"minimum": 1,
"maximum": 9223372036854776000
},
"window_seconds": {
"type": "integer",
"minimum": 1,
"maximum": 86400
}
}
},
"total_request_limit": {
"type": "integer",
"minimum": 1,
"maximum": 9223372036854776000
},
"bucket_scope": {
"type": "string",
"enum": [
"policy_source",
"provider"
]
}
}
},
"operations": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"method",
"billing"
],
"additionalProperties": false,
"properties": {
"method": {
"type": "string",
"enum": [
"GET",
"POST"
]
},
"billing": {
"oneOf": [
{
"type": "object",
"required": [
"mode"
],
"additionalProperties": false,
"properties": {
"mode": {
"const": "pricing_unavailable"
}
}
},
{
"type": "object",
"required": [
"mode"
],
"additionalProperties": false,
"properties": {
"mode": {
"const": "free_health"
}
}
},
{
"type": "object",
"required": [
"mode",
"price_policy_key",
"price_version",
"credit_cost",
"x402"
],
"additionalProperties": false,
"properties": {
"mode": {
"const": "quantro_priced"
},
"price_policy_key": {
"type": "string",
"minLength": 1
},
"price_version": {
"type": "integer",
"minimum": 1
},
"credit_cost": {
"type": "integer",
"minimum": 1
},
"x402": {
"type": "object",
"required": [
"network",
"asset",
"atomic_amount",
"offer_id"
],
"additionalProperties": false,
"properties": {
"network": {
"type": "string"
},
"asset": {
"type": "string"
},
"atomic_amount": {
"type": "string"
},
"offer_id": {
"type": "string"
}
}
}
}
}
]
}
}
}
},
"readiness": {
"type": "object"
}
}
}
},
"required": [
"schema_version",
"generation",
"manifest",
"compiled_at",
"observed_at",
"capability"
],
"additionalProperties": false
}🔴pubfi.route.execute(raw_path, method, query, body, idempotency_key, ...)
Execute one exact GET or POST path through the authenticated PubFi account lane and the same Registry v2 matcher and typed executor as the HTTP gateway. Append :free only when the capability catalog publishes that exact account-scoped free variant.
Input Schema
{
"type": "object",
"properties": {
"raw_path": {
"type": "string",
"minLength": 2,
"maxLength": 2048,
"pattern": "^/(?!\\.{1,2}(?:/|$))[A-Za-z0-9._~-]{1,128}(?:/(?!\\.{1,2}(?:/|$))[A-Za-z0-9._~-]{1,128}){0,63}$",
"description": "Exact original URI path consumed by the Registry matcher. Segments use canonical unreserved ASCII only; percent escapes, dot segments, query, fragment, and backslash are forbidden."
},
"method": {
"type": "string",
"enum": [
"GET",
"POST"
]
},
"query": {
"type": "string",
"maxLength": 65536,
"pattern": "^(?!\\?)[\\x20-\\x7E]*$",
"description": "Exact ASCII raw query string without a leading question mark."
},
"body": {
"type": "string",
"maxLength": 1048576,
"pattern": "^[\\x20-\\x7E]*$",
"description": "Exact optional ASCII request-body bytes. For JSON routes, supply one compact serialized JSON document rather than a nested MCP argument value."
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[\\x20-\\x7E]+$"
},
"request_id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[\\x20-\\x7E]+$"
}
},
"required": [
"raw_path",
"method"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"oneOf": [
{
"type": "object",
"required": [
"ok",
"execution_status",
"execution_authority",
"billing",
"generation",
"route",
"provider",
"upstream",
"upstream_response"
],
"additionalProperties": false,
"properties": {
"ok": {
"const": true
},
"execution_status": {
"const": "free_health_executed"
},
"execution_authority": {
"const": "typed_gateway_registry_v2"
},
"billing": {
"type": "object",
"required": [
"mode"
],
"additionalProperties": false,
"properties": {
"mode": {
"const": "free_health"
}
}
},
"generation": {
"type": "object"
},
"route": {
"type": "object"
},
"provider": {
"type": "object"
},
"upstream": {
"type": "object"
},
"upstream_response": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"ok",
"execution_status",
"execution_authority",
"generation",
"route",
"provider",
"upstream",
"credits_charged",
"upstream_response"
],
"additionalProperties": false,
"properties": {
"ok": {
"const": true
},
"execution_status": {
"const": "registry_free_route_executed"
},
"execution_authority": {
"const": "typed_gateway_registry_v2"
},
"generation": {
"type": "object"
},
"route": {
"type": "object"
},
"provider": {
"type": "object"
},
"upstream": {
"type": "object"
},
"credits_charged": {
"const": 0
},
"upstream_response": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"ok",
"execution_status",
"execution_authority",
"generation",
"route",
"provider",
"upstream",
"credits_charged",
"upstream_response"
],
"additionalProperties": false,
"properties": {
"ok": {
"const": true
},
"execution_status": {
"const": "registry_route_executed"
},
"execution_authority": {
"const": "typed_gateway_registry_v2"
},
"generation": {
"type": "object"
},
"route": {
"type": "object"
},
"provider": {
"type": "object"
},
"upstream": {
"type": "object"
},
"credits_charged": {
"type": "integer",
"minimum": 1
},
"upstream_response": {
"type": "object"
}
}
}
]
}🔴pubfi.substrate.runtime_upgrade.verify(network, extrinsic_index, extrinsic_hash, expected_authorized_code_hash, idempotency_key, ...)
Verify one reviewed Substrate System.apply_authorized_upgrade extrinsic through the authenticated account lane. Supply the expected Blake2b-256 hash of the FRAME System AuthorizedUpgrade code payload, not the active :code hash at the apply block. The server streams and discards provider runtime code, persists only a compact proof, and returns independent comparison evidence.
Input Schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-z0-9](?:[a-z0-9_-]{0,62}[a-z0-9])?$"
},
"extrinsic_index": {
"type": "string",
"minLength": 3,
"maxLength": 64,
"pattern": "^(?:0|[1-9][0-9]*)-(?:0|[1-9][0-9]*)$"
},
"extrinsic_hash": {
"type": "string",
"minLength": 66,
"maxLength": 66,
"pattern": "^0x[0-9a-f]{64}$",
"description": "Canonical lowercase 0x-prefixed 32-byte hash."
},
"expected_authorized_code_hash": {
"type": "string",
"minLength": 66,
"maxLength": 66,
"pattern": "^0x[0-9a-f]{64}$",
"description": "Canonical lowercase 0x-prefixed 32-byte hash."
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[\\x20-\\x7E]+$"
},
"request_id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[\\x20-\\x7E]+$"
}
},
"required": [
"network",
"expected_authorized_code_hash"
],
"oneOf": [
{
"required": [
"extrinsic_index"
],
"not": {
"required": [
"extrinsic_hash"
]
}
},
{
"required": [
"extrinsic_hash"
],
"not": {
"required": [
"extrinsic_index"
]
}
}
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"ok": {
"const": true
},
"execution_status": {
"const": "runtime_upgrade_verification_completed"
},
"execution_authority": {
"const": "typed_gateway_registry_v2"
},
"generation": {
"type": "object"
},
"route": {
"type": "object"
},
"provider": {
"type": "object"
},
"upstream": {
"type": "object"
},
"meter_key": {
"type": "string"
},
"reserved_units": {
"type": "integer",
"minimum": 1
},
"credits_charged": {
"type": "integer",
"minimum": 1
},
"runtime_code_bytes": {
"type": "integer",
"minimum": 1
},
"computed_code_hash": {
"type": "string",
"minLength": 66,
"maxLength": 66,
"pattern": "^0x[0-9a-f]{64}$",
"description": "Canonical lowercase 0x-prefixed 32-byte hash."
},
"expected_authorized_code_hash": {
"type": "string",
"minLength": 66,
"maxLength": 66,
"pattern": "^0x[0-9a-f]{64}$",
"description": "Canonical lowercase 0x-prefixed 32-byte hash."
},
"matches": {
"type": "boolean"
},
"extrinsic_success": {
"type": "boolean"
},
"extrinsic_index": {
"type": "string",
"pattern": "^(?:0|[1-9][0-9]*)-(?:0|[1-9][0-9]*)$"
},
"extrinsic_hash": {
"type": "string",
"minLength": 66,
"maxLength": 66,
"pattern": "^0x[0-9a-f]{64}$",
"description": "Canonical lowercase 0x-prefixed 32-byte hash."
},
"provider_response_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 67108864
},
"provider_response_sha256": {
"type": "string",
"pattern": "^sha256:[0-9a-f]{64}$"
},
"upstream_status": {
"const": 200
},
"upstream_latency_ms": {
"type": "integer",
"minimum": 0
}
},
"required": [
"ok",
"execution_status",
"execution_authority",
"generation",
"route",
"provider",
"upstream",
"meter_key",
"reserved_units",
"credits_charged",
"runtime_code_bytes",
"computed_code_hash",
"expected_authorized_code_hash",
"matches",
"extrinsic_success",
"extrinsic_index",
"extrinsic_hash",
"provider_response_bytes",
"provider_response_sha256",
"upstream_status",
"upstream_latency_ms"
],
"additionalProperties": false
}Community
Evidence