
Byte Protocol
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-protocolRun 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/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 15 toolsVerified 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.
limitnumberquerystringsortBystringbyte_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).
address*stringbyte_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.
publisher*stringsubscriber*stringbyte_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.
address*stringbyte_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...
indexerUrlstringsubscriber*stringbyte_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...
indexerUrlstringpublisher*stringbyte_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...
publisher*stringbyte_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...
publisher*stringskipAllowancebooleanbyte_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.
expectedSize*numberfrequency*numbermaxSize*numberpricePerKB*numberstake*stringtopic*stringbyte_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.
data*stringmaxFee*numbersubscriber*stringbyte_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...
max_byte_costnumbermax_response_latency_msnumbermin_publisher_pqsnumberquestion*stringsubscriber_address*stringtopic_filterstringbyte_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...
bodyobjectfeed*stringbyte_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...
data*stringexpectedHashstringhashModestringraw · canonicaltxHashstringSponsors
Configuration
PRIVATE_KEYsecretEthereum 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_URLRPC 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_ATTESTERGateway 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
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.
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