PubFi MCP
Server Details
Authenticated hosted Streamable HTTP MCP server for crypto data routing through PubFi capability and gateway tools.
- Status
- Healthy
- Uptime
- 99.3% over 74 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
The four tools separate cleanly into catalog inspection (list/get), generic routed execution, and a specialized upgrade verification path. The only mild overlap is that route.execute could theoretically hit paths related to substrate operations, but the verify tool's narrow scope and explicit evidence semantics make the boundary clear.
All names follow a stable lowercase dotted namespace pattern: pubfi.<domain>.<action>. The verb/action suffix is predictable (list, get, execute, verify) and there is no mixing of naming conventions.
Four tools is on the lean side, but each maps to a distinct responsibility in the registry/execution workflow. The surface is intentionally compact and avoids redundant wrappers.
The surface covers catalog enumeration, exact contract retrieval, authenticated execution, and a specialized upgrade verification path. Given the server explicitly avoids ranking or inference, missing free-text search is by design rather than a gap; minor operational helpers (e.g. metering status) are absent but not essential.
Available Tools
4 toolspubfi.capabilities.getARead-onlyIdempotentInspect
Return the full typed request, response, metering, and readiness contract for one exact capability id from the installed Registry generation.
| Name | Required | Description | Default |
|---|---|---|---|
| capability_id | Yes | Exact capability id returned by pubfi.capabilities.list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| manifest | Yes | |
| capability | Yes | |
| generation | Yes | |
| compiled_at | Yes | |
| observed_at | Yes | |
| schema_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds one genuinely useful trait — the result is bound to the 'installed Registry generation', implying a versioned snapshot — but says nothing about failure behavior for unknown ids or whether results can go stale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, though it is dense with internal jargon ('metering', 'readiness contract', 'Registry generation') that costs readability without being explained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description correctly signals the payload's scope and its tie to a registry generation. Only error/unknown-id behavior is left unaddressed for a tool whose sole input can easily be wrong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, so the schema already carries the format, pattern and provenance ('id returned by pubfi.capabilities.list'). The description reinforces 'exact' but adds no syntax or semantics beyond that, matching the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and a specific resource (the full typed request/response/metering/readiness contract for one capability id). The phrase 'one exact capability id' implicitly contrasts it with the enumerating sibling pubfi.capabilities.list, so an agent can distinguish them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to call this instead of pubfi.capabilities.list, nor what happens with an unknown or stale id. The only routing hint ('id returned by pubfi.capabilities.list') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pubfi.capabilities.listARead-onlyIdempotentInspect
Enumerate the complete installed Registry v2 catalog as deterministic compact pages. The server does not rank, infer intent, or choose a capability.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum compact capability summaries to return. | |
| cursor | No | Opaque generation-bound cursor returned by the preceding page. | |
| method | No | ||
| provider_key | No | Optional exact public provider key. This is a static filter, not semantic search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| filters | Yes | |
| manifest | Yes | |
| generation | Yes | |
| compiled_at | Yes | |
| next_cursor | No | |
| observed_at | Yes | |
| capabilities | Yes | |
| schema_version | Yes | |
| total_capability_count | Yes | |
| matching_capability_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world, non-destructive, so safety is fully covered. The description adds genuinely useful behavior beyond that: the result is deterministic, paged, unranked, and non-inferential, which tells an agent results are exhaustive rather than relevance-ordered. It still omits pagination mechanics and cursor-invalidation behavior that the schema only hints at ('generation-bound').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core enumeration guarantee front-loaded and the exclusionary semantic clause following. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be explained, and annotations cover the safety profile. The description leaves an agent knowing it gets the whole catalog in deterministic pages with no ranking. The only modest gap is that the filtering parameters and cursor lifecycle are not contextualized in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema documents limit, cursor, and provider_key (explicitly noting provider_key is a static filter, not semantic search). The description adds nothing about any of the four parameters, so baseline 3 applies; the undocumented 'method' parameter is not compensated for in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Enumerate') plus specific resource ('the complete installed Registry v2 catalog') with a stated output form ('deterministic compact pages'). It does not name any sibling, so the differentiation from pubfi.capabilities.get or pubfi.route.execute is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'The server does not rank, infer intent, or choose a capability' implies this is the raw-catalog path as opposed to a semantic/dispatch path, which hints at when to use it. However, no alternative tool is named and no explicit 'use this when' condition is given, so guidance remains implied rather than actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pubfi.route.executeCDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Exact optional ASCII request-body bytes. For JSON routes, supply one compact serialized JSON document rather than a nested MCP argument value. | |
| query | No | Exact ASCII raw query string without a leading question mark. | |
| method | Yes | ||
| raw_path | Yes | 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. | |
| request_id | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and idempotentHint=false, which the description does not contradict. The description mentions 'execute' and a conditional 'Append :free' behavior, adding some transparency beyond the annotations. However, it does not describe side effects, idempotency implications, or what happens on failure, leaving gaps in understanding the full behavioral impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but dense, using jargon and a single complex sentence. It is not broken into clear parts and lacks a structured presentation of the tool's behavior and nuances. While not verbose, it sacrifices clarity for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description leaves out critical contextual details: it does not mention expected return values, error handling, or how the conditional free variant affects the request or response. Given the tool's apparent complexity (route execution, account scoping, conditional behavior), the description is insufficient for an agent to predict outcomes reliably beyond the basic execution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for some parameters (body, query, raw_path), but the tool description does not explain any parameter semantics itself. It only mentions the overall execution behavior, not how the parameters like method, request_id, or idempotency_key are used. The schema coverage is partial, and the description adds no parameter-level detail, making it hard for an agent to construct a correct request.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes a GET or POST path through an authenticated account lane, using the same matcher/executor as the HTTP gateway. This conveys the core purpose, though it relies on domain-specific jargon like 'PubFi account lane' and 'Registry v2 matcher.' It is distinguishable from the sibling read-only tools, which are for capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides only conditional guidance ('Append :free only when the capability catalog publishes that exact account-scoped free variant') but does not explain when to choose this tool over alternatives or when not to use it. There is no explicit when/when-not context, leaving the decision largely to the agent's interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pubfi.substrate.runtime_upgrade.verifyADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | ||
| request_id | No | ||
| extrinsic_hash | No | Canonical lowercase 0x-prefixed 32-byte hash. | |
| extrinsic_index | No | ||
| idempotency_key | No | ||
| expected_authorized_code_hash | Yes | Canonical lowercase 0x-prefixed 32-byte hash. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| route | Yes | |
| matches | Yes | |
| provider | Yes | |
| upstream | Yes | |
| meter_key | Yes | |
| generation | Yes | |
| extrinsic_hash | Yes | Canonical lowercase 0x-prefixed 32-byte hash. |
| reserved_units | Yes | |
| credits_charged | Yes | |
| extrinsic_index | Yes | |
| upstream_status | Yes | |
| execution_status | Yes | |
| extrinsic_success | Yes | |
| computed_code_hash | Yes | Canonical lowercase 0x-prefixed 32-byte hash. |
| runtime_code_bytes | Yes | |
| execution_authority | Yes | |
| upstream_latency_ms | Yes | |
| provider_response_bytes | Yes | |
| provider_response_sha256 | Yes | |
| expected_authorized_code_hash | Yes | Canonical lowercase 0x-prefixed 32-byte hash. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by revealing important side effects: the server streams and discards provider runtime code, persists only a compact proof, and returns independent comparison evidence. It also signals the authenticated account lane, which is useful context not present in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences, front-loads the core verification operation, and then adds the most important input caveat and server behavior. Every sentence contributes essential information without repeating clues already in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action, the key hash semantics, authentication context, and server-side storage/return behavior. It is complete except for deeper context around parameter semantics and explicit when-to-use conditions, which prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description needed to explain the parameters; it adds the critical distinction for expected_authorized_code_hash as the Blake2b-256 hash of the payload, not the active code hash. However, it does not explain the meaning of network, extrinsic_hash vs extrinsic_index selection, request_id, or idempotency_key, leaving those gaps to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation and resource: it verifies one reviewed Substrate System.apply_authorized_upgrade extrinsic. This is more precise than the sibling tools, which are generic capability discovery and routing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when it should be used by saying 'reviewed extrinsic' and by demanding the expected authorized upgrade hash rather than the active code hash. It does not explicitly state when to prefer this tool over alternatives or list exclusions, so usage guidance remains implicit rather than fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
pubfi.capabilities.get1 field changed- changed
Output schema / properties / capability / properties / operations / items / properties / billing / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "mode": { - "const": "pricing_unavailable" - } - }, - "required": [ - "mode" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "mode": { - "const": "free_health" - } - }, - "required": [ - "mode" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "credit_cost": { - "minimum": 1, - "type": "integer" - }, - "mode": { - "const": "quantro_priced" - }, - "price_policy_key": { - "minLength": 1, - "type": "string" - }, - "price_version": { - "minimum": 1, - "type": "integer" - }, - "x402": { - "additionalProperties": false, - "properties": { - "asset": { - "type": "string" - }, - "atomic_amount": { - "type": "string" - }, - "network": { - "type": "string" - }, - "offer_id": { - "type": "string" - } - }, - "required": [ - "network", - "asset", - "atomic_amount", - "offer_id" - ], - "type": "object" - } - }, - "required": [ - "mode", - "price_policy_key", - "price_version", - "credit_cost", - "x402" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "pricing_unavailable" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "free_health" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "credit_cost": { + "minimum": 1, + "type": "integer" + }, + "mode": { + "const": "priced" + }, + "price_policy_key": { + "minLength": 1, + "type": "string" + }, + "price_version": { + "minimum": 1, + "type": "integer" + }, + "x402": { + "additionalProperties": false, + "properties": { + "asset": { + "type": "string" + }, + "atomic_amount": { + "type": "string" + }, + "network": { + "type": "string" + }, + "offer_id": { + "type": "string" + } + }, + "required": [ + "network", + "asset", + "atomic_amount", + "offer_id" + ], + "type": "object" + } + }, + "required": [ + "mode", + "price_policy_key", + "price_version", + "credit_cost", + "x402" + ], + "type": "object" + } +]
- Changed
pubfi.capabilities.list1 field changed- changed
Output schema / properties / capabilities / items / properties / operations / items / properties / billing / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "mode": { - "const": "pricing_unavailable" - } - }, - "required": [ - "mode" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "mode": { - "const": "free_health" - } - }, - "required": [ - "mode" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "credit_cost": { - "minimum": 1, - "type": "integer" - }, - "mode": { - "const": "quantro_priced" - }, - "price_policy_key": { - "minLength": 1, - "type": "string" - }, - "price_version": { - "minimum": 1, - "type": "integer" - }, - "x402": { - "additionalProperties": false, - "properties": { - "asset": { - "type": "string" - }, - "atomic_amount": { - "type": "string" - }, - "network": { - "type": "string" - }, - "offer_id": { - "type": "string" - } - }, - "required": [ - "network", - "asset", - "atomic_amount", - "offer_id" - ], - "type": "object" - } - }, - "required": [ - "mode", - "price_policy_key", - "price_version", - "credit_cost", - "x402" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "pricing_unavailable" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "free_health" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "credit_cost": { + "minimum": 1, + "type": "integer" + }, + "mode": { + "const": "priced" + }, + "price_policy_key": { + "minLength": 1, + "type": "string" + }, + "price_version": { + "minimum": 1, + "type": "integer" + }, + "x402": { + "additionalProperties": false, + "properties": { + "asset": { + "type": "string" + }, + "atomic_amount": { + "type": "string" + }, + "network": { + "type": "string" + }, + "offer_id": { + "type": "string" + } + }, + "required": [ + "network", + "asset", + "atomic_amount", + "offer_id" + ], + "type": "object" + } + }, + "required": [ + "mode", + "price_policy_key", + "price_version", + "credit_cost", + "x402" + ], + "type": "object" + } +]
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.