Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.0rkz/byte-protocol

REMOTE · MCP.PAYPERBYTE.IO · 2 COMPONENTS · SCANNED AUG 3

PayPerByte — per-byte data for AI agents: x402 USDC on Base, EIP-712-attested. No token.

+1 this week 59 Trust /100

Recent critical change

Authorization (2 Aug 2026). See the changelog before you install this server.

Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security46
Transport & Reachability100
Schema Quality & AI Usability60
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2370 tokens (~158/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 Management27
  • Stability observed for 8 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
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.payperbyte.io

# add to Claude Code
claude mcp add --transport http 0rkz-byte-protocol https://mcp.payperbyte.io/mcp
# ~/.codex/config.toml
[mcp_servers.0rkz-byte-protocol]
url = "https://mcp.payperbyte.io/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "0rkz-byte-protocol": {
      "type": "remote",
      "url": "https://mcp.payperbyte.io/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add 0rkz-byte-protocol --url https://mcp.payperbyte.io/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  0rkz-byte-protocol:
    url: "https://mcp.payperbyte.io/mcp"
// mcp.json
{
  "mcpServers": {
    "0rkz-byte-protocol": {
      "type": "http",
      "url": "https://mcp.payperbyte.io/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

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.

  • 3 Aug 26 0
    • Server version: 0.11.11 → 0.12.0 functional
  • 2 Aug 26 +41
    • Authorization: unverified → fail critical
    • Transport: fail → pass security
    • Endpoint reachability: not serving MCP → reachable functional
    • Stability: unverified → 0.23 functional
    • Tool coverage: unverified → 100 functional
    • MCP protocol: unverified → pass functional
  • 1 Aug 26 −40
    • Endpoint reachability: reachable → not serving MCP security
    • Stability: 0.17 → unverified security
    • Authorization: fail → unverified security
    • Transport: pass → fail security
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
  • 31 Jul 26 −1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1
    • “byte_buy_data” reworded the description of “feed” cosmetic

    1 cosmetic change on this day. Switch on “Show cosmetic changes” to see it.

  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 57

    First indexed and scored.

Diagnostics

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 3 Aug 2026 · Probed https://mcp.payperbyte.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=payperbyte.io CN=YE1,O=Let's Encrypt,C=US 23 Jun 2026 21 Sept 2026 ECDSA 256 ECDSA-SHA384 503fc4f27b5a222c2156ec7fba6100c2be0
SANs: *.payperbyte.io, payperbyte.io
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of mcp.payperbyte.io. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
payperbyte.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.payperbyte.io/mcp Verified 200
http (plaintext) http://mcp.payperbyte.io/mcp Inconclusive 400
MCP tools — 15 exposed · ~2,370 tokens

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.

Tool Tokens
byte_buy_data ~493

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 9 POST oracles — address-reputation, sanctions-screen, pkg-verdict, reasoning-verdict, evidence-pack, liquidation-stream, positioning-snapshot, runtime-eol, threat-intel — 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 (flagship address-reputation: $0.10/verdict). Use a dedicated wallet holding only what you intend to spend.

NameTypeReqDescription
bodyobjectOptional 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…
feedstringyesFeed slug — one of: weather ($0.0050), earthquakes ($0.0030), runtime-eol ($0.020), threat-intel ($0.050), address-reputation ($0.100), pkg-verdict ($0.100), sanctions-screen ($0.100), reasoning-verd…
NameTypeReqDescription
dataDecoded feed payload returned by the publisher
detailstringAdditional error detail, if any
errorstringError message if the buy failed
feedstringEchoed feed slug
paidbooleanTrue if an x402 payment was made (false on free/cached feeds)
payerstringWallet that signed the EIP-3009 authorization
pricestringUSDC paid for this packet (e.g. '$0.003000'); omitted on free feeds
statusnumberHTTP status of the (post-payment) gateway response
txHashstringx402 settlement transaction hash
verificationobjectTwo-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.

NameTypeReqDescription
publisherstringyesPublisher Ethereum address (0x...)
subscriberstringyesSubscriber Ethereum address (0x...)
NameTypeReqDescription
subscribedbooleanyesTrue 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.

NameTypeReqDescription
messagesnumberTotal messages streamed all-time
publishersnumberActive publisher count network-wide
totalSubscriberFeesUsdcstringTotal 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).

NameTypeReqDescription
addressstringyesPublisher Ethereum address (0x...)
NameTypeReqDescription
addressstringyesPublisher Ethereum address
lastActivenumberUnix timestamp of last on-chain activity
messagesnumberTotal messages published
registeredAtnumberUnix timestamp of publisher registration
revenueUsdcstringTotal USDC revenue (decimal string)
schemaRegistered schema (topic, sizes, cadence, price)
statusstringOn-chain publisher status
subscribersnumberActive 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.

NameTypeReqDescription
addressstringyesEthereum address (0x...)
NameTypeReqDescription
addressstringEchoed address
ethstringETH balance (wei)
usdcstringUSDC balance (atomic, 6 decimals)

No examples provided.

byte_list_feeds ~32

List all active data feeds in the PayPerByte catalog with topics, price-per-KB, and frequency.

Input schema present but exposes no named parameters.

NameTypeReqDescription
feedsarrayCatalog 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.

NameTypeReqDescription
indexerUrlstringOptional indexer URL override (default: INDEXER_URL/BYTE_INDEXER_URL env or https://feeds.payperbyte.io)
subscriberstringyesWallet address to list subscriptions for
NameTypeReqDescription
subscriptionsarrayActive 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.

NameTypeReqDescription
datastringyesData payload to publish (will be hashed on-chain)
maxFeenumberyesMaximum fee in USDC willing to pay for this publish (e.g. 0.05)
subscriberstringyesSubscriber Ethereum address (0x...)
NameTypeReqDescription
payloadHashstringkeccak256 of the payload as recorded on-chain
payloadSizenumberPayload size recorded on-chain (bytes)
successbooleanTrue if publish landed on-chain
txHashstringPublish transaction hash

No examples provided.

byte_query_fact ~385

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.

NameTypeReqDescription
max_byte_costnumberMax response payload bytes you're willing to pay for (defaults to 2000, ≈$1 at $0.0005/byte). Publisher refuses if can't fit answer.
max_response_latency_msnumberMax 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_pqsnumberMinimum PQS to consider (BPS scale, 0-10000). 9000 = Elite-only, 7500 = Premium+.
questionstringyesThe factual question to ask (e.g. 'What was last night's Lakers vs Warriors score?'). Should be specific and verifiable.
subscriber_addressstringyesYour 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_filterstringOptional topic filter (e.g. 'fact-oracle' default; future: 'sports', 'finance').
NameTypeReqDescription
answerstringPublisher's grounded answer to the question
citationsarrayURLs/sources cited by the publisher in support of the answer
confidencenumberPublisher-reported confidence (0-1)
elapsed_msnumberEnd-to-end time to obtain the answer (ms)
errorstringError message if the query failed (no eligible publisher, broadcast timeout, etc.)
payload_hashstringkeccak256 of the response payload
publisher_addressstringPublisher address that fulfilled the query
publisher_pqsnumberPublisher quality score (PQS) at fulfillment
publisher_tx_or_statusstringDelivery status or settlement reference
request_idstringRequest id binding the query to this answer
response_size_bytesnumberSize 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.

NameTypeReqDescription
expectedSizenumberyesExpected payload size in bytes per message
frequencynumberyesExpected publishing frequency in seconds
maxSizenumberyesMaximum payload size in bytes per message
pricePerKBnumberyesPrice per kilobyte in USDC (e.g. 0.003)
stakestringyesUSDC reputation stake to post, as a decimal string. Default '0' — PayPerByte v1 publishers are unstaked.
topicstringyesData feed topic (e.g. 'eth-price', 'weather-nyc', 'gas-tracker')
NameTypeReqDescription
approveTxHashstringUSDC stake approval tx hash, if a non-zero stake was posted
publisherstringRegistered publisher address (the signer)
schemaTxHashstringSchema-registration transaction hash
stakeUsdcstringUSDC stake posted (decimal string; '0' for v1 first-party)
successbooleanTrue if registration landed on-chain
topicstringRegistered feed topic
txHashstringPublisher-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.

NameTypeReqDescription
limitnumberMax results to return (default 20)
querystringTopic keyword to search (e.g. 'weather', 'crypto', 'cve')
sortBystringSort field: 'subscribers', 'revenue', 'messages'
NameTypeReqDescription
publishersarrayMatching 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.

NameTypeReqDescription
publisherstringyesPublisher Ethereum address (0x...) to subscribe to
skipAllowancebooleanIf 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.
NameTypeReqDescription
allowanceTxHashstringUSDC approve(max) transaction hash, if bundled
publisherstringPublisher subscribed to
successbooleanTrue if subscribe landed on-chain
txHashstringSubscribe 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.

NameTypeReqDescription
indexerUrlstringOptional indexer URL override
publisherstringyesPublisher address to check
NameTypeReqDescription
cadence_drift_bpsCadence drift vs 23-day baseline (bps)
messages30dMessages in the last 30 days
messages7dMessages in the last 7 days
messages_30dMessages in the last 30 days (indexer key)
messages_7dMessages in the last 7 days (indexer key)
publisherstringPublisher address checked
signalstringContent-drift bucket for the publisher
silence_hoursHours since the last message (null if never)
volume_ratio_bps7d/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.

NameTypeReqDescription
publisherstringyesPublisher address to unsubscribe from
NameTypeReqDescription
blockNumberstringBlock number the tx landed in
publisherstringPublisher unsubscribed from
statusstringReceipt status ('success' | 'reverted')
subscriberstringSubscriber address (the signer)
txHashstringUnsubscribe 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.

NameTypeReqDescription
datastringyesThe exact payload bytes the agent received and is about to act on — the raw delivered string, or a 0x-prefixed hex byte string.
expectedHashstringOn-chain payloadHash to verify against (0x + 64 hex), e.g. the payloadHash returned by byte_query_fact or byte_buy_data.
hashModestringHow to hash structured payloads: 'raw' (keccak of the utf8 string, default — matches byte_publish_data) or 'canonical' (keccak of key-sorted, whitespace-free JSON).
txHashstringSettlement 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.
NameTypeReqDescription
attestingPublisherstringPublisher named in the on-chain event (txHash mode)
blockNumberstringBlock number of the settlement tx (txHash mode)
checkedAtstringWall-clock time the expiry comparison was made, UNIX seconds (decimal string)
deadlinestringAttestation deadline as UNIX seconds (decimal string) — txHash mode only
expiredbooleanWhether 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…
hashMatchbooleanyesWhether the recomputed hash equals the on-chain hash
onChainHashstringyesThe on-chain attested payloadHash compared against
reasonstringyesHuman-readable verdict an agent can surface when it acts or refuses
recomputedHashstringyeskeccak256 of the received bytes
signerstringRecovered EIP-712 attestation signer (txHash mode)
signerMatchbooleanWhether the recovered signer is the attesting publisher
sourcestringWhich anchor was used: 'txHash' or 'expectedHash'
txHashstringSettlement tx hash verified against (txHash mode)
verifiedbooleanyesTrue 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.