io.github.0rkz/byte-protocol
NPM · BYTE-MCP-SERVER · 2 COMPONENTS · SCANNED SEP 20
PayPerByte — per-byte data for AI agents: x402 USDC on Base, EIP-712-attested. No token.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security99
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 33 of 125 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 6 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability75
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2324 tokens (~154/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
- Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.0rkz/byte-protocol MCP server?
io.github.0rkz/byte-protocol runs locally as an npm package, launched with npx -y byte-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · byte-mcp-server
claude mcp add 0rkz-byte-protocol -- npx -y byte-mcp-server
{
"mcpServers": {
"0rkz-byte-protocol": {
"command": "npx",
"args": [
"-y",
"byte-mcp-server"
]
}
}
} {
"servers": {
"0rkz-byte-protocol": {
"command": "npx",
"args": [
"-y",
"byte-mcp-server"
]
}
}
} codex mcp add 0rkz-byte-protocol -- npx -y byte-mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"0rkz-byte-protocol": {
"type": "local",
"command": [
"npx",
"-y",
"byte-mcp-server"
],
"enabled": true
}
}
} openclaw mcp add 0rkz-byte-protocol --command npx --arg -y --arg byte-mcp-server
mcp_servers:
0rkz-byte-protocol:
command: "npx"
args: ["-y", "byte-mcp-server"] {
"McpServers": {
"0rkz-byte-protocol": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"byte-mcp-server"
]
}
}
} assistant mcp add 0rkz-byte-protocol -t stdio -c npx -a -y byte-mcp-server
{
"mcpServers": {
"0rkz-byte-protocol": {
"command": "npx",
"args": [
"-y",
"byte-mcp-server"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 −3
- Stability: pass → 0.80 functional
- 19 Sept 26 0
- Stability: 0.97 → pass security
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 −1
- Stability: pass → 0.93 functional
- 16 Sept 26 +1
- Stability: 0.97 → pass security
- 14 Sept 26 +26
- Malware scan: unverified → pass ▲ security
- Known CVEs: unverified → pass ▲ security
- Dependency health: unverified → 0.88 ▲ functional
- 13 Sept 26 −25
- Known CVEs: pass → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Dependency health: 0.88 → unverified ▼ functional
- Package version: 0.12.3 → 0.13.0 functional
- 11 Sept 26 −2
- Stability: pass → 0.83 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/byte-mcp-server@0.13.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 125 packages
| Packages resolved | 125 |
|---|---|
| Stale | 33 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
byte_buy_data ~426
Buy a single data packet from any PayPerByte feed via the x402 payment gateway. No subscription, no allowance, no prior on-chain setup — pay-per-call USDC settlement. The MCP server signs an EIP-3009 transferWithAuthorization on behalf of the wallet whose PRIVATE_KEY is configured, the x402 facilitator submits the tx, and the data comes back inline with the on-chain settlement tx hash. Use byte_subscribe instead if you want a continuous stream of broadcasts from a publisher. The catalog of available feed slugs lives at https://x402.payperbyte.io/feeds (free GET). GET data feeds (weather, earthquakes, …) need only `feed`; the POST oracles (see https://x402.payperbyte.io/feeds for the live list and each feed's `method`) additionally require a JSON `body` (the query) — supplying `body` switches this call to POST. Requires PRIVATE_KEY env var on the MCP server and USDC on the configured wallet. NOTE: paid feeds settle REAL USDC on Base mainnet (eip155:8453) — the exact price is quoted in the 402 challenge and listed per feed at https://x402.payperbyte.io/feeds — the signed EIP-712 attestation over the exact response bytes proves delivery, not that a verdict itself is correct. Use a dedicated wallet holding only what you intend to spend.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | Optional JSON query body for POST oracles. Supplying it switches the call from GET to POST. Required by the verdict oracles, e.g. address-reputation {domain,address[,amount,chain]}, sanctions-screen… |
| feed | string | yes | Feed slug — see https://x402.payperbyte.io/feeds for the live catalog. (For fact-oracle Q&A use byte_query_fact instead — it uses a different request-response flow.) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | Decoded feed payload returned by the publisher |
| detail | string | – | Additional error detail, if any |
| error | string | – | Error message if the buy failed |
| feed | string | – | Echoed feed slug |
| paid | boolean | – | True if an x402 payment was made (false on free/cached feeds) |
| payer | string | – | Wallet that signed the EIP-3009 authorization |
| price | string | – | USDC paid for this packet as a 6-decimal dollar string (format example: '$0.001234'); omitted on free feeds |
| status | number | – | HTTP status of the (post-payment) gateway response |
| txHash | string | – | x402 settlement transaction hash |
| verification | object | – | Two-leg verify-before-act result: {gatewayVerified, hashMatch, signerMatch, recovered, attester, expired, deadline, checkedAt, embeddedAttestation, reason, note}. gatewayVerified=true means the GATEW… |
No examples provided.
byte_check_subscription ~50
Check if an address is subscribed to a specific publisher on PayPerByte.
| Name | Type | Req | Description |
|---|---|---|---|
| publisher | string | yes | Publisher Ethereum address (0x...) |
| subscriber | string | yes | Subscriber Ethereum address (0x...) |
| Name | Type | Req | Description |
|---|---|---|---|
| subscribed | boolean | yes | True if the subscriber has an active subscription to the publisher |
No examples provided.
byte_get_network_stats ~33
Get PayPerByte network-wide statistics: total publishers, messages streamed, and total subscriber fees settled in USDC.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| messages | number | – | Total messages streamed all-time |
| publishers | number | – | Active publisher count network-wide |
| totalSubscriberFeesUsdc | string | – | Total subscriber fees settled (USDC, decimal string) |
No examples provided.
byte_get_publisher ~61
Get on-chain info for a specific PayPerByte publisher: status, subscriber and message counts, USDC revenue, and the registered schema (size bounds, cadence, price-per-KB).
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Publisher Ethereum address (0x...) |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Publisher Ethereum address |
| lastActive | number | – | Unix timestamp of last on-chain activity |
| messages | number | – | Total messages published |
| registeredAt | number | – | Unix timestamp of publisher registration |
| revenueUsdc | string | – | Total USDC revenue (decimal string) |
| schema | – | – | Registered schema (topic, sizes, cadence, price) |
| status | string | – | On-chain publisher status |
| subscribers | number | – | Active subscriber count |
No examples provided.
byte_get_token_balances ~74
Get USDC and ETH balances for an address on Arbitrum Sepolia (the on-chain testnet layer — MockUSDC settles subscriptions and fact-oracle queries there). Does NOT show the Base-mainnet USDC balance that byte_buy_data spends.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Ethereum address (0x...) |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | Echoed address |
| eth | string | – | ETH balance (wei) |
| usdc | string | – | USDC balance (atomic, 6 decimals) |
No examples provided.
byte_list_feeds ~39
List all active data feeds in the PayPerByte catalog with topics, price-per-call, and frequency (pricePerKB is a deprecated alias).
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| feeds | array | – | Catalog of active feeds |
No examples provided.
byte_list_my_subscriptions ~126
List every active subscription for a given wallet address. Each entry has the publisher address, topic, status, when you subscribed, messages received in 7/30 days, USDC spent in 7/30 days, and the timestamp of the last message received. Use this to see what you're currently paying for and decide whether to unsubscribe.
| Name | Type | Req | Description |
|---|---|---|---|
| indexerUrl | string | – | Optional indexer URL override (default: INDEXER_URL/BYTE_INDEXER_URL env or https://feeds.payperbyte.io) |
| subscriber | string | yes | Wallet address to list subscriptions for |
| Name | Type | Req | Description |
|---|---|---|---|
| subscriptions | array | – | Active subscriptions for the given wallet |
No examples provided.
byte_publish_data ~102
Publish data to a subscriber via the PayPerByte DataStream contract. Hashes the payload, records size on-chain, and settles the fee in USDC. Requires PRIVATE_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| data | string | yes | Data payload to publish (will be hashed on-chain) |
| maxFee | number | yes | Maximum fee in USDC willing to pay for this publish (e.g. 0.05) |
| subscriber | string | yes | Subscriber Ethereum address (0x...) |
| Name | Type | Req | Description |
|---|---|---|---|
| payloadHash | string | – | keccak256 of the payload as recorded on-chain |
| payloadSize | number | – | Payload size recorded on-chain (bytes) |
| success | boolean | – | True if publish landed on-chain |
| txHash | string | – | Publish transaction hash |
No examples provided.
byte_query_fact ~399
Query a PayPerByte fact-oracle publisher for a signed answer with citations. Posts the question to a registered fact-oracle publisher (topic='fact-oracle'), waits for the on-chain BroadcastStreamed response, and returns the answer plus structured citation URLs. The signed receipt proves which publisher produced the answer (provenance + tamper-evidence), NOT that the answer is correct — ground your output in the cited sources, not in a truth guarantee. Availability: this requires a registered fact-oracle publisher actively broadcasting; if none is live the call returns a timeout rather than an answer.
| Name | Type | Req | Description |
|---|---|---|---|
| max_byte_cost | number | – | Max response payload bytes you're willing to pay for (defaults to 2000). Billed at the publisher's registered price-per-KB — read it with byte_get_publisher or byte_search_publishers before asking. P… |
| max_response_latency_ms | number | – | Max time to wait for the publisher's broadcast (default 30000 ms). Local-LLM publishers (Ollama + Searxng + 3-sample NLI gate) take ~30-60s; Anthropic + passthrough takes ~10-20s. Hard ceiling 180s. |
| min_publisher_pqs | number | – | Minimum PQS to consider (BPS scale, 0-10000). 9000 = Elite-only, 7500 = Premium+. |
| question | string | yes | The factual question to ask (e.g. 'What was last night's Lakers vs Warriors score?'). Should be specific and verifiable. |
| subscriber_address | string | yes | Your wallet address. You MUST be subscribed to the chosen publisher (with sufficient USDC escrow) or the publisher's on-chain broadcast will be skipped. |
| topic_filter | string | – | Optional topic filter (e.g. 'fact-oracle' default; future: 'sports', 'finance'). |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | – | Publisher's grounded answer to the question |
| citations | array | – | URLs/sources cited by the publisher in support of the answer |
| confidence | number | – | Publisher-reported confidence (0-1) |
| elapsed_ms | number | – | End-to-end time to obtain the answer (ms) |
| error | string | – | Error message if the query failed (no eligible publisher, broadcast timeout, etc.) |
| payload_hash | string | – | keccak256 of the response payload |
| publisher_address | string | – | Publisher address that fulfilled the query |
| publisher_pqs | number | – | Publisher quality score (PQS) at fulfillment |
| publisher_tx_or_status | string | – | Delivery status or settlement reference |
| request_id | string | – | Request id binding the query to this answer |
| response_size_bytes | number | – | Size of the response payload (bytes) |
No examples provided.
byte_register_publisher ~199
Register as a data publisher on PayPerByte. Registers a schema and the publisher on-chain. Requires PRIVATE_KEY. PayPerByte v1 publishers are first-party and unstaked — leave stake at '0'; a non-zero USDC stake is approved to DataRegistry first if you choose to post one.
| Name | Type | Req | Description |
|---|---|---|---|
| expectedSize | number | yes | Expected payload size in bytes per message |
| frequency | number | yes | Expected publishing frequency in seconds |
| maxSize | number | yes | Maximum payload size in bytes per message |
| pricePerKB | number | yes | Price per kilobyte in USDC (e.g. 0.003) |
| stake | string | yes | USDC reputation stake to post, as a decimal string. Default '0' — PayPerByte v1 publishers are unstaked. |
| topic | string | yes | Data feed topic (e.g. 'eth-price', 'weather-nyc', 'gas-tracker') |
| Name | Type | Req | Description |
|---|---|---|---|
| approveTxHash | string | – | USDC stake approval tx hash, if a non-zero stake was posted |
| publisher | string | – | Registered publisher address (the signer) |
| schemaTxHash | string | – | Schema-registration transaction hash |
| stakeUsdc | string | – | USDC stake posted (decimal string; '0' for v1 first-party) |
| success | boolean | – | True if registration landed on-chain |
| topic | string | – | Registered feed topic |
| txHash | string | – | Publisher-registration transaction hash |
No examples provided.
byte_search_publishers ~99
Search PayPerByte publishers by topic and sort order. Returns publisher addresses, topics, subscriber counts, message counts, and price-per-KB.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max results to return (default 20) |
| query | string | – | Topic keyword to search (e.g. 'weather', 'crypto', 'cve') |
| sortBy | string | – | Sort field: 'subscribers', 'revenue', 'messages' |
| Name | Type | Req | Description |
|---|---|---|---|
| publishers | array | – | Matching publishers, sorted by the requested field |
No examples provided.
byte_subscribe ~156
Subscribe to a PayPerByte publisher's data feed. By default also sets USDC allowance to DataStreamLib to type(uint256).max so the subscription doesn't silently lose payments when allowance depletes (the contract's allowance-skip path emits DataStreamed with amount=0 on transferFrom failure rather than reverting). Pass skipAllowance: true to opt out and set a finite cap manually. Requires PRIVATE_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| publisher | string | yes | Publisher Ethereum address (0x...) to subscribe to |
| skipAllowance | boolean | – | If true, don't bundle the USDC approve(max) call. Default false. Auto-approve is also skipped when the wallet already has ≥ $1000 USDC of allowance to DataStreamLib. |
| Name | Type | Req | Description |
|---|---|---|---|
| allowanceTxHash | string | – | USDC approve(max) transaction hash, if bundled |
| publisher | string | – | Publisher subscribed to |
| success | boolean | – | True if subscribe landed on-chain |
| txHash | string | – | Subscribe transaction hash |
No examples provided.
byte_subscription_health ~144
Get the content-drift signal for a publisher. Compares their last 7 days of publishing activity (cadence, message count) against their 23-day baseline (days 8-30). Returns 'stable' (steady publishing), 'moderate' (20-50% cadence shift or 24-48h silence), 'significant' (>50% shift or >48h silence), or 'unknown' (new publisher, insufficient baseline). Use this to detect when a publisher you subscribe to has pivoted content or gone dormant.
| Name | Type | Req | Description |
|---|---|---|---|
| indexerUrl | string | – | Optional indexer URL override |
| publisher | string | yes | Publisher address to check |
| Name | Type | Req | Description |
|---|---|---|---|
| cadence_drift_bps | number|null | – | Cadence drift vs 23-day baseline (bps) |
| messages30d | number|null | – | Messages in the last 30 days |
| messages7d | number|null | – | Messages in the last 7 days |
| messages_30d | number|null | – | Messages in the last 30 days (indexer key) |
| messages_7d | number|null | – | Messages in the last 7 days (indexer key) |
| publisher | string | – | Publisher address checked |
| signal | string | – | Content-drift bucket for the publisher |
| silence_hours | number|null | – | Hours since the last message (null if never) |
| volume_ratio_bps | number|null | – | 7d/baseline volume ratio (bps) |
No examples provided.
byte_unsubscribe ~93
Unsubscribe from a publisher's data feed. Takes effect next block: no more billing, no more data flow. Reversible — you can resubscribe later via byte_subscribe. Use this when a publisher has pivoted content (check with byte_subscription_health first) or when you simply don't want the feed anymore. Requires PRIVATE_KEY for the connected wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| publisher | string | yes | Publisher address to unsubscribe from |
| Name | Type | Req | Description |
|---|---|---|---|
| blockNumber | string | – | Block number the tx landed in |
| publisher | string | – | Publisher unsubscribed from |
| status | string | – | Receipt status ('success' | 'reverted') |
| subscriber | string | – | Subscriber address (the signer) |
| txHash | string | – | Unsubscribe transaction hash |
No examples provided.
byte_verify_payload ~323
Verify-before-act: confirm a data payload an agent is about to act on actually matches what the publisher cryptographically attested to on-chain. Recomputes keccak256 of the received bytes and compares it to the on-chain EIP-712 PayloadAttestation hash. ALWAYS call this on BYTE-sourced data before acting on it; if verified=false the bytes were tampered/corrupted in transit and MUST NOT be used. Anchor the check with EITHER expectedHash (an on-chain payloadHash you already hold, e.g. from byte_query_fact / byte_buy_data) OR txHash (the settlement tx — also recovers the attestation signer and confirms it is the named publisher). Read-only; no wallet or payment required.
| Name | Type | Req | Description |
|---|---|---|---|
| data | string | yes | The exact payload bytes the agent received and is about to act on — the raw delivered string, or a 0x-prefixed hex byte string. |
| expectedHash | string | – | On-chain payloadHash to verify against (0x + 64 hex), e.g. the payloadHash returned by byte_query_fact or byte_buy_data. |
| hashMode | string | – | How to hash structured payloads: 'raw' (keccak of the utf8 string, default — matches byte_publish_data) or 'canonical' (keccak of key-sorted, whitespace-free JSON). |
| txHash | string | – | Settlement tx hash whose on-chain BroadcastStreamed attestation to verify against. When provided, also recovers the EIP-712 signer and confirms it is the attesting publisher. |
| Name | Type | Req | Description |
|---|---|---|---|
| attestingPublisher | string | – | Publisher named in the on-chain event (txHash mode) |
| blockNumber | string | – | Block number of the settlement tx (txHash mode) |
| checkedAt | string | – | Wall-clock time the expiry comparison was made, UNIX seconds (decimal string) |
| deadline | string | – | Attestation deadline as UNIX seconds (decimal string) — txHash mode only |
| expired | boolean | – | Whether the attestation's EIP-712 deadline has passed at check time — the same rule the contract enforces (block.timestamp > deadline). txHash mode only; absent in expectedHash mode, which carries no… |
| hashMatch | boolean | yes | Whether the recomputed hash equals the on-chain hash |
| onChainHash | string | yes | The on-chain attested payloadHash compared against |
| reason | string | yes | Human-readable verdict an agent can surface when it acts or refuses |
| recomputedHash | string | yes | keccak256 of the received bytes |
| signer | string | – | Recovered EIP-712 attestation signer (txHash mode) |
| signerMatch | boolean | – | Whether the recovered signer is the attesting publisher |
| source | string | – | Which anchor was used: 'txHash' or 'expectedHash' |
| txHash | string | – | Settlement tx hash verified against (txHash mode) |
| verified | boolean | yes | True only if the recomputed hash matches the on-chain attested hash AND (when a signer was recovered) the signer is the publisher. If false: do NOT act on the data. |
No examples provided.
What is the io.github.0rkz/byte-protocol MCP server?
io.github.0rkz/byte-protocol is an MCP server listed in the public MCP registry as io.github.0rkz/byte-protocol. PayPerByte, per-byte data for AI agents: x402 USDC on Base, EIP-712-attested. No token. This page covers its npm package (byte-mcp-server).
Is the io.github.0rkz/byte-protocol MCP server safe to use?
io.github.0rkz/byte-protocol scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.0rkz/byte-protocol MCP server expose?
io.github.0rkz/byte-protocol exposes 15 tools: byte_search_publishers, byte_get_publisher, byte_get_network_stats, byte_check_subscription, byte_get_token_balances, and 10 more. Their descriptions and schemas cost roughly 2,324 tokens of context every time the server is loaded.
Is the io.github.0rkz/byte-protocol MCP server still maintained?
io.github.0rkz/byte-protocol is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.0rkz/byte-protocol MCP server under?
io.github.0rkz/byte-protocol declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.