MCP + x402
on Arc Testnet USDC
eyez
A pay-per-capture headless browser API for agents. Pay 0.001 USDC on Arc Testnet through x402 and receive structured page content from JavaScript-heavy sites.
Integrations
Run the eyez server locally or on a host, then register the MCP wrapper in your MCP-aware client.
Wallet configuration required
The server and client both need EVM keys because x402 payments are settled on Arc Testnet.
-
Server: set
PAY_TOto the address receiving payments. -
Server: set
FACILITATOR_PRIVATE_KEYfor x402 settlement and optional refunds. -
Client/MCP: set
EVM_PRIVATE_KEYso the MCP tool can pay for captures.
Use a funded test wallet for development. Never commit private keys.
Server environment
PORT=3001
PAY_TO=0xYourReceivingAddress
FACILITATOR_PRIVATE_KEY=0xYourServerPrivateKey
EVM_PRIVATE_KEY=0xYourClientPrivateKey
# Optional
ARC_RPC_URL=https://rpc.testnet.arc.network
PRICE_USDC=0.001
REFUND_AMOUNT_USDC=0.001
MCP host config
{
"mcpServers": {
"eyez": {
"command": "node",
"args": ["/path/to/eyez/dist/mcpServer.js"],
"env": {
"EVM_PRIVATE_KEY": "0xYOUR_CLIENT_PRIVATE_KEY",
"EYEZ_URL": "http://localhost:3001"
}
}
}
}
pnpm start. In a separate
shell, test a paid capture with
pnpm demo -- https://example.com.
HTTP API
Free health and service metadata endpoints sit next to the paid browser capture endpoint.
GET / |
Returns service name, price, network, and usage. |
|---|---|
GET /health |
Returns a free health check response. |
GET /capture?url=<encoded_url> |
Paid x402 endpoint. Captures public
http and https
pages only.
|
Example response
{
"title": "Example Domain",
"description": "",
"headings": [{ "level": "H1", "text": "Example Domain" }],
"links": [{ "text": "Learn more", "href": "https://www.iana.org/domains/example" }],
"content": "Example Domain...",
"url": "https://example.com",
"capturedAt": "2026-05-25T12:00:00.000Z",
"captureTimeMs": 3325,
"payment": { "price": "$0.001", "network": "eip155:5042002" }
}
Tool list
The MCP server exposes one paid browser-capture tool.
-
capturePage- Capture a JavaScript-heavy webpage through the eyez API. Use this when a plain HTTP fetch cannot see useful page text from SPAs, social apps, DeFi apps, or other browser-captured surfaces.
Arc + USDC network
Current defaults used by the service.
| Network | Arc Testnet |
|---|---|
| Chain ID | 5042002 |
| x402 network | eip155:5042002 |
| Currency | USDC |
| USDC asset |
0x3600000000000000000000000000000000000000
|
| Explorer | testnet.arcscan.app |
Capture guardrails
eyez rejects malformed URLs and private network targets before payment is requested. Failed captures can trigger refund logic when the payer address is available in the x402 payment header.