0rkz avatar

Byte Protocol

0rkz/byte-mcp-server

Gives Claude direct access to BYTE Library's pay-per-byte USDC data feeds on Arbitrum Sepolia. Exposes 14 tools split across discovery (search publishers, list feeds, check subscriptions), stream subscriptions (byte_subscribe with automatic USDC approval, byte_unsubscribe), and one-off purchases via x402 gateway (byte_buy_data for single packets, byte_query_fact for oracle queries). Every settlement returns an EIP-712 attested receipt. Currently testnet only, gated on security audit before Arbitrum One. Requires PRIVATE_KEY env var for write operations but read-only catalog browsing works without a wallet. Use this when your agent needs to buy real-time weather, market data, or knowledge feeds with micropayments instead of API keys.

GitHub stars
1
tools
15
auth
Secret needed
transport
STDIO, HTTP
env vars
3
last updated
Sep 13, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.payperbyte.io/mcp --name byte-protocol

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http byte-protocol https://mcp.payperbyte.io/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 15 tools

Verified live against the running server on Nov 6, 2026.

byte_search_publishersSearch PayPerByte publishers by topic and sort order. Returns publisher addresses, topics, subscriber counts, message counts, and price-per-KB.3 params

Search PayPerByte publishers by topic and sort order. Returns publisher addresses, topics, subscriber counts, message counts, and price-per-KB.

Parameters* required
limitnumber
Max results to return (default 20)
querystring
Topic keyword to search (e.g. 'weather', 'crypto', 'cve')
sortBystring
Sort field: 'subscribers', 'revenue', 'messages'
byte_get_publisherGet 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).1 params

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).

Parameters* required
address*string
Publisher Ethereum address (0x...)
byte_get_network_statsGet PayPerByte network-wide statistics: total publishers, messages streamed, and total subscriber fees settled in USDC.

Get PayPerByte network-wide statistics: total publishers, messages streamed, and total subscriber fees settled in USDC.

No parameters. Call it with no arguments.

byte_check_subscriptionCheck if an address is subscribed to a specific publisher on PayPerByte.2 params

Check if an address is subscribed to a specific publisher on PayPerByte.

Parameters* required
publisher*string
Publisher Ethereum address (0x...)
subscriber*string
Subscriber Ethereum address (0x...)
byte_get_token_balancesGet 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.1 params

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.

Parameters* required
address*string
Ethereum address (0x...)
byte_list_feedsList all active data feeds in the PayPerByte catalog with topics, price-per-call, and frequency (pricePerKB is a deprecated alias).

List all active data feeds in the PayPerByte catalog with topics, price-per-call, and frequency (pricePerKB is a deprecated alias).

No parameters. Call it with no arguments.

byte_list_my_subscriptionsList 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 p...2 params

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 p...

Parameters* required
indexerUrlstring
Optional indexer URL override (default: INDEXER_URL/BYTE_INDEXER_URL env or https://feeds.payperbyte.io)
subscriber*string
Wallet address to list subscriptions for
byte_subscription_healthGet 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% sh...2 params

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% sh...

Parameters* required
indexerUrlstring
Optional indexer URL override
publisher*string
Publisher address to check
byte_unsubscribeUnsubscribe 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...1 params

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

Parameters* required
publisher*string
Publisher address to unsubscribe from
byte_subscribeSubscribe 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 transfe...2 params

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 transfe...

Parameters* required
publisher*string
Publisher Ethereum address (0x...) to subscribe to
skipAllowanceboolean
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.
byte_register_publisherRegister 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.6 params

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.

Parameters* required
expectedSize*number
Expected payload size in bytes per message
frequency*number
Expected publishing frequency in seconds
maxSize*number
Maximum payload size in bytes per message
pricePerKB*number
Price per kilobyte in USDC (e.g. 0.003)
stake*string
USDC reputation stake to post, as a decimal string. Default '0' — PayPerByte v1 publishers are unstaked.
topic*string
Data feed topic (e.g. 'eth-price', 'weather-nyc', 'gas-tracker')
byte_publish_dataPublish 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.3 params

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.

Parameters* required
data*string
Data payload to publish (will be hashed on-chain)
maxFee*number
Maximum fee in USDC willing to pay for this publish (e.g. 0.05)
subscriber*string
Subscriber Ethereum address (0x...)
byte_query_factQuery 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 rece...6 params

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 rece...

Parameters* required
max_byte_costnumber
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....
max_response_latency_msnumber
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_pqsnumber
Minimum PQS to consider (BPS scale, 0-10000). 9000 = Elite-only, 7500 = Premium+.
question*string
The factual question to ask (e.g. 'What was last night's Lakers vs Warriors score?'). Should be specific and verifiable.
subscriber_address*string
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_filterstring
Optional topic filter (e.g. 'fact-oracle' default; future: 'sports', 'finance').
byte_buy_dataBuy 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 config...2 params

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 config...

Parameters* required
bodyobject
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-scree...
feed*string
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.)
byte_verify_payloadVerify-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 BYT...4 params

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 BYT...

Parameters* required
data*string
The exact payload bytes the agent received and is about to act on — the raw delivered string, or a 0x-prefixed hex byte string.
expectedHashstring
On-chain payloadHash to verify against (0x + 64 hex), e.g. the payloadHash returned by byte_query_fact or byte_buy_data.
hashModestring
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).one of raw · canonical
txHashstring
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.

Sponsors

Configuration

PRIVATE_KEYsecret

Ethereum private key for write/buy tools (subscribe, unsubscribe, publish, buy_data). buy_data spends real Base-mainnet USDC — use a dedicated wallet. Not required for read-only tools.

RPC_URL

RPC for the on-chain library + EIP-712 attestation layer (Arbitrum Sepolia, eip155:421614). The x402 buy rail settles USDC on Base mainnet and needs no RPC here. Defaults to Arbitrum Sepolia public RPC.

BYTE_GATEWAY_ATTESTER

Gateway attester address byte_buy_data pins receipts against. Defaults to the current PayPerByte gateway attester (rotated 2026-08-19; previous default 0x77c86a...C472 is retired). Override only if the gateway discloses a rotation you need ahead of a package update - see /.well-k

Readme

PayPerByte MCP Server

Smithery listing · 0rkz/byte-mcp-server MCP server

A Model Context Protocol server that gives AI agents direct access to PayPerByte — cryptographically attested, provenance-verifiable data feeds for AI agents (the X-BYTE-Attestation receipt proves delivery-integrity — these are exactly the bytes PayPerByte served and attested under the BYTE Library domain — not that an independent data publisher signed them, and not that the data is correct). Agents discover feeds, pay-per-call via x402 (settled in USDC on Base mainnet), or subscribe to on-chain streams (Arbitrum Sepolia testnet). Every paid x402 response carries an EIP-712 PayloadAttestation receipt (X-BYTE-Attestation header) the agent verifies before acting. No tokens, no API keys, no off-chain accounts.


View the full README on GitHub

Details

Repository
github.com/0rkz/byte-mcp-server
Category
Data & Analytics
Package
byte-mcp-server
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related Data & Analytics MCP servers

View all
1asthanaji05 avatarPokeapi Mcp Serverasthanaji05/mcp_pokemonEmpower your AI with Pokédex powers! Fetch and explore Pokémon data seamlessly via PokeAPI.0stars
2bitcompare avatarMcp Serverbitcompare/mcp-serverCrypto yield data for AI agents: lending, savings, staking, borrowing & stablecoin rates. 21 tools.0stars
3blockchainacademics avatarMcpblockchainacademics/bca-mcpCited crypto news, prices, onchain data, sentiment and indicators: 105 tools. Not financial advice.0stars
4eins78 avatarMeteoSwiss MCP Servereins78/meteoswiss-llm-toolsSwiss weather data for AI assistants — forecasts, measurements, stations, pollen.0stars
5flightdb avatarFlightDBflightdb/flightdb-mcpAircraft registry search, flight history, and analytics powered by ADS-B Exchange data.1stars
6jbeshir avatarBunprojbeshir/mcp-serversRead Bunpro SRS data: profile, study queue, reviews, JLPT progress, and grammar lookups.0stars