apex-arc

Arc for agents: free USDC, ERC-8004 agent passports, watchtower, exit checks, x402 tools. 38 tools.

Should I use this

Quality & Safety

B
Description quality
98%
Schema completeness
81%
Naming quality
81%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringin arc_touchstone

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,900Tokens (tool definitions)
~581 BTypical response size
Significant attention impact (4.61% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "apex-arc": {
      "url": "https://apexfaucet.xyz/api/mcp/arc"
    }
  }
}

Remote endpoints

https://apexfaucet.xyz/api/mcp/arcstreamable-http

What it can do

Tool inventory

Tools (38)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢arc_faucet_claim(address, signature)

Claim real USDC and APEX on Arc for an EVM address, three times a day, no gas needed: the operator pays. Two steps: call with only {address} to get today's challenge text; sign it with the key of that address (EIP-191 personal_sign) and call again with {address, signature}. Same claim for everyone; cooldown and daily total are enforced by a contract with no withdraw function. The day's claims open in three parts (00:00, 08:00, 16:00 UTC) and one connection claims at most once every 8 hours; a refusal names the time. The reply includes nextClaimAt (unix seconds) and claimNumber.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Your Arc (EVM) address, 0x + 40 hex."
    },
    "signature": {
      "type": "string",
      "description": "EIP-191 signature of the challenge text. Omit on the first call to receive the challenge."
    }
  },
  "required": [
    "address"
  ]
}
🟢arc_faucet_status

APEX faucet on Arc (Circle USDC chain, eip155:5042): the pot, the amount per claim (USDC + APEX), claims left today and left right now (the day's claims open in three parts, at 00:00, 08:00 and 16:00 UTC; nextReleaseAt says when), cooldown. Every number is read from the faucet contract at call time; a failed read is reported as failed, never as zero. Free.

Input Schema

{
  "type": "object"
}
🟢arc_exit_check(query, usdc)

If I buy this token on Arc, can I get out? For a token address or Uniswap v4 pool id on Arc: a real buy-then-sell round trip inside one eth_call through the pool hook (nothing spent) or, for ERC-20-USDC pools, both legs quoted. Returns whether the sell goes through, the round-trip cost, depth, and flags with reasons. The answer names its method. Free, one at a time (ten a minute).

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Token address (0x + 40 hex) or v4 pool id (0x + 64 hex)."
    },
    "usdc": {
      "type": "number",
      "description": "Test size in USDC, default 1, max 1000."
    }
  },
  "required": [
    "query"
  ]
}
🟢arc_exit_check_bulk(ids)

PAYWALLED. Up to 25 Arc tokens or pool ids in one call, sorted worst first (cannot sell, heavy loss, cannot buy). Returns x402 payment instructions for /api/x402/arc-exit-check-bulk ($0.025, USDC on Arc, USDC on Solana or XNT). Single checks are free via arc_exit_check.

Input Schema

{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Up to 25 token addresses or pool ids."
    }
  },
  "required": [
    "ids"
  ]
}
🟢arc_agent_status(agentId)

Does this Arc agent actually answer? The APEX Watchtower calls every endpoint of every agent in Arc's ERC-8004 identity registry once an hour: web pages, the A2A card, the MCP initialize handshake, the x402 paywall (checked against the on-chain signing domains of USDC and EURC on Arc) and the registration file itself. With an agentId: its status (up, degraded, down, not checked, listed without endpoints, no file), uptime over the hours actually measured (never counting unmeasured hours as down), typical response time, whether and how it can be paid on Arc, and what it should fix. Call it before you pay or hire an agent. Without an agentId: the counts for the whole registry. Free. Every endpoint result, the hour-by-hour history and the fix list for all agents in one call: /api/x402/arc-agent-watch ($0.004).

Input Schema

{
  "type": "object",
  "properties": {
    "agentId": {
      "type": "integer",
      "description": "The agent id in the Arc ERC-8004 identity registry (0x8004A169FB4a3325136EB29fA0ceB6D2e539a432). Omit for the whole-registry counts."
    }
  }
}
🟢arc_x402_stats(address)

Who actually pays whom on Arc. Every signed x402-style payment on Arc since launch, read from the chain: each EIP-3009 authorization spent on Arc USDC and every Circle Gateway batch (plain transfers carry no marker of what they paid for and are not counted). Without an address: the totals, each facilitator (the address that submits settlements, named only where the name has a source) with its kind (direct; circular, where the same wallets pay and are paid; concentrated, one payer making most of the volume; self; or contract flow), each measured and shown apart from the direct totals, and the top sellers. With an address: what that address was paid, by how many distinct payers, through which facilitators, including Circle Gateway. Free. Every facilitator, seller and payer with the latest 1,000 settlements: /api/x402/arc-x402 ($0.004).

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Optional Arc address (0x + 40 hex) to look up as a seller or payer."
    }
  }
}
🟢arc_pools

Arc Sniper Watch: new Uniswap v4 pools on Arc in the last 24 h, who bought each first and how many seconds after it opened, whether the first buyer sold straight back, USDC depth, flags with reasons, and a leaderboard of the fastest first buyers. Read from PoolManager events every five minutes. Free.

Input Schema

{
  "type": "object"
}
🟢arc_bridges

How to get USDC onto Arc (eip155:5042) from other chains, measured: a live 2 USDC quote per source chain (Ethereum, Base, Arbitrum, Optimism, Polygon, Avalanche, Solana and more) through LI.FI, with what arrives, the cost and the time, refreshed every 10 minutes; plus the X1 path (bridge minimum 11 USDC) and a note on CCTP. Use it to bring an agent or a person to Arc from wherever they are, then claim at the faucet.

Input Schema

{
  "type": "object"
}
🔴arc_grow(address)

Put USDC to work in the APEX/USDC pool on Arc (eip155:5042) from your own key, non-custodially: call grow(minApexOut) on the ArcGrow contract with the USDC as native value; half is swapped for APEX, both halves become a full-range Uniswap v4 position minted to the caller, leftovers refunded, nothing kept. Remove any time via the PositionManager (DECREASE_LIQUIDITY or BURN_POSITION + TAKE_PAIR). With {address} this returns that address's positions, deposit and value now; without it, the contract, ABI and steps, and priceCheck: APEX's price on Arc against its price on X1. While they are more than 10% apart, do not deposit (half the USDC would buy APEX at that premium); our own page refuses then.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Optional: an Arc address to read positions for."
    }
  }
}
🟢arc_touchstone(token)

Touchstone on Arc: on-chain assays. An assay is a real buy-and-sell of a token in one transaction, reverted, with the verdict, round-trip cost and streak written as an event by the ArcAssay contract (0x417d200a4bd83a7e3911765114b1a27ad30f8c97). Read every pool's last assay and streak, or one token's. To make one, call assay(poolKey, 0) on the contract with value >= fee (0.03 USDC); the fee funds the faucet pot and the APEX vault.

Input Schema

{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "description": "Optional token address to read assays for."
    }
  }
}
🟡arc_passport_draft(name, description, image, services)

Give an agent an ERC-8004 identity on Arc for free. Pass its name, what it does and where it can be reached; we write a correct registration file, host it, check that its endpoints answer, and return the unsigned register() transaction for Arc's identity registry. The wallet that sends it owns the agent from the first block (about 0.004 USDC of gas; one claim from arc_faucet_claim covers it). Then call arc_passport_confirm with the transaction hash. No key ever leaves your side.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "2-48 characters"
    },
    "description": {
      "type": "string",
      "description": "what the agent does, 10-400 characters"
    },
    "image": {
      "type": "string",
      "description": "optional https link to a picture"
    },
    "services": {
      "type": "array",
      "description": "optional endpoints: [{name: web|A2A|MCP|x402|OASF|ENS|DID|email, endpoint}]",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "endpoint": {
            "type": "string"
          }
        }
      }
    }
  },
  "required": [
    "name",
    "description"
  ]
}
🟢arc_passport_confirm(slug, tx)

Finish a free Arc Agent Passport: after your wallet sent the register() transaction from arc_passport_draft, pass the draft slug and the transaction hash. We read the receipt on Arc (never the caller's word), fill the file with the new agentId and return the passport page, its share picture, the watchtower check-up and its tower in Arc City. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "the 12-character id from arc_passport_draft"
    },
    "tx": {
      "type": "string",
      "description": "0x hash of your register() transaction"
    }
  },
  "required": [
    "slug",
    "tx"
  ]
}
🟢arc_passport_buy(name, description, image, services, payment)

An agent buys its own ERC-8004 identity on Arc with a signature alone: $0.99 over x402, paid in USDC on Arc or Base. We host a correct registration file, mint the identity and hand it to the wallet that signed the payment, never to a typed address, and answer with the agentId and both transactions. Call once without `payment` to get the x402 terms, sign them, call again with `payment`. A refused input is never charged.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "image": {
      "type": "string"
    },
    "services": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "endpoint": {
            "type": "string"
          }
        }
      }
    },
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": [
    "name",
    "description"
  ]
}
🟢arc_passport_status(ref)

Look up an Arc Agent Passport by agentId or draft slug: its registration file, owner, endpoints, whether it is active, and its links (passport page, share picture, hourly check-up, tower in Arc City). Free.

Input Schema

{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "description": "agentId (a number) or the 12-character draft slug"
    }
  },
  "required": [
    "ref"
  ]
}
⚪arc_verdict(pool, token, payment)

Should you buy this Arc pool? One call, one 0-100 answer from the hook's permissions, a real sell probe and what happened to earlier buyers, with every input shown. $0.004 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "pool": {
      "type": "string",
      "description": "Uniswap v4 pool id on Arc (pass this or token)"
    },
    "token": {
      "type": "string",
      "description": "token contract address on Arc (pass this or pool)"
    },
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
⚪arc_counterparty(address, payment)

Who is this Arc address as a trader? How often it is the first buyer into a new pool, how fast it enters, USDC in versus out, positions it is stuck in, and the flags. Facts from the chain, never a label. $0.004 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "0x address on Arc"
    },
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": [
    "address"
  ]
}
🟢arc_payment_check(tx, to, expect, payment)

Did that Arc payment really land? Payer, recipient, amount in both of Arc's transfer forms (the ERC-20 view and the native log), confirmation and gas, checked against what you expected. $0.003 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "tx": {
      "type": "string",
      "description": "0x transaction hash on Arc"
    },
    "to": {
      "type": "string",
      "description": "optional expected recipient"
    },
    "expect": {
      "type": "string",
      "description": "optional expected amount in USDC, e.g. 1.50"
    },
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": [
    "tx"
  ]
}
⚪arc_gas(payment)

What a transaction on Arc actually costs, measured from real receipts rather than quoted from the docs: percentiles per transaction kind, with the sample sizes. $0.004 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
⚪arc_fee_flow(payment)

Arc launchpad fee vaults: every vault holding USDC now, its creator and token, and how much it changed since our previous scan. Fees only accrue from real swaps. $0.025 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
⚪arc_cctp_cost(payment)

What bringing USDC into Arc over Circle CCTP really costs, measured from arrivals: every arrival with the amount credited and the fee taken, and observed fees by size. $0.004 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
⚪arc_graveyard(payment)

The Arc pool graveyard: every pool we measured with its state (empty or alive) and lifetime volume, so you know which ones nothing can be sold into. $0.025 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
⚪arc_impostors(payment)

Every token symbol on Arc worn by more than one contract, with how many contracts share it and the canonical address where one is verified. Identity is the contract, never the symbol. $0.004 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
⚪arc_deployers(payment)

Who launched what on Arc and whether any of it ever traded: every repeat creator with their launches and the swap fees those launches earned. $0.004 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
⚪arc_fresh_launches(payment)

Arc launches in real time, each with a sell verdict from a real round trip, so you see the new pools that can actually be exited. $0.003 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
🟢arc_hook_risk(hook, payment)

What a Uniswap v4 hook on Arc is allowed to do, read from the permission bits in its address with no chain call: whether it runs on swaps or can rewrite amounts. A capability, not a verdict. $0.003 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "hook": {
      "type": "string",
      "description": "0x hook address from the pool key"
    },
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": [
    "hook"
  ]
}
⚪arc_agent_market(payment)

The agent economy on Arc, mapped: every agent in the ERC-8004 registry that publishes a registration file, with its owner, services and whether it takes x402. $0.004 per call over x402 (USDC on Arc, Base or Solana, or XNT on X1). Call once without `payment` for the terms, sign them with your own wallet, call again with `payment`.

Input Schema

{
  "type": "object",
  "properties": {
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the base64 payload you would put in PAYMENT-SIGNATURE). Pass it and the purchase completes inside this tool call."
    }
  },
  "required": []
}
🟢arc_catalogue_search(query, network, maxPrice, limit)

Who sells this on Arc, and for how much? Searches Circle's own x402 catalogue (what Circle CLI agents buy from; refreshed daily) by keyword, cheapest first, with host, path, category and whether it settles through Circle Gateway, plus our own products with their prices for comparison. Use it to price a service before you build or buy it. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "keywords, e.g. \"scrape\", \"token price\", \"email\""
    },
    "network": {
      "type": "string",
      "description": "arc (default), base, polygon, solana or any"
    },
    "maxPrice": {
      "type": "number",
      "description": "optional price cap in USD"
    },
    "limit": {
      "type": "integer",
      "description": "up to 40 (default 15)"
    }
  }
}
⚪arc_facilitators(limit)

Who settles x402 payments on Arc, measured on the chain: every relayer that spent an EIP-3009 authorization on Arc USDC, with its label where one is published, how many settlements, payers and payees, volume, and the shape of its flow (direct, circular, concentrated, self or contract). Plus Circle's two facilitators and what each needs. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "description": "how many relayers (default 15, max 60)"
    }
  }
}
🟢arc_wallet(address)

Everything public about one Arc address in one call: USDC (native, 18 decimals) and EURC and APEX balances, whether it is a contract, how many ERC-8004 agent identities it owns and which agents, and whether it sells over x402 on Arc. Read live from the chain. Free, 200 calls a day.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "0x address on Arc"
    }
  },
  "required": [
    "address"
  ]
}
🟡arc_contract_check(address)

Before you approve, pay or trust a contract on Arc: is it really a contract, can someone change its code (EIP-1967 proxy implementation, admin and beacon slots), who is its owner(), and what token it says it is. Read live from the chain. Free, 200 calls a day.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "0x contract address on Arc"
    }
  },
  "required": [
    "address"
  ]
}
⚪arc_rpc_status

Which Arc RPC is answering right now, and how fast: the latest block, how far each one lags and its response time, measured this minute from our server. Arc's official RPC throttles in a way that reads like a bug ("Request exceeds defined limit"); use this to pick another. Free.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢arc_stablecoins

How many stablecoins exist on Arc right now, read from the contracts: USDC and EURC total supply, their addresses and the EIP-712 signing domains a payment signs against. Free.

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪arc_agent_reputation(agentId)

What other wallets have said about an Arc agent on chain: every ERC-8004 reputation entry for it (who gave it, the value, the tags, whether it was revoked) and the registry's own summary. Includes the weekly uptime records the APEX Watchtower writes. Free, 200 calls a day.

Input Schema

{
  "type": "object",
  "properties": {
    "agentId": {
      "type": "integer",
      "description": "the agent id in Arc's ERC-8004 registry"
    }
  },
  "required": [
    "agentId"
  ]
}
🟢arc_agent_search(query, payableOnly)

Find an agent on Arc by what it is called or where it answers: searches every agent in Arc's ERC-8004 registry that the APEX Watchtower checks each hour, and returns its id, status, uptime over measured hours, whether it can be paid on Arc and its main endpoint. Free, 200 calls a day; the full directory with owners and every service is arc_agent_market.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "words from its name or endpoint, e.g. \"oracle\", \"mcp\", \"news\""
    },
    "payableOnly": {
      "type": "boolean",
      "description": "only agents a standard client can pay on Arc"
    }
  },
  "required": [
    "query"
  ]
}
⚪erc8004_how_to

How ERC-8004 works on Arc, from the spec and the deployed contracts: register an agent (and the one-call shortcuts), the registration file fields, proving your endpoint domain, pointing payments at an agentWallet, writing and reading reputation, and what explorers like 8004scan read. Free.

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪x402_accept_on_arc_how_to

How to accept x402 payments on Arc, from what we verified on chain while doing it ourselves: the USDC and EURC signing domains, what a settlement leaves in the logs, what one costs in gas, and your three ways to settle (yourself, Circle Facilitator Service, Circle Gateway nanopayments). Free.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_onto_arc

How to get USDC onto Arc, every route we know works: a free claim at our faucet (a signature, no gas), bridges measured live, Circle CCTP and what it really costs at small size, Circle Gateway balances, and Circle's Onramp Kit for apps that let people pay by card or Apple Pay. Free.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢x402_inspect(url, method)

How do I pay this URL? Point it at any x402 paywall and get its terms read for you: protocol version, every network and asset it accepts with the real amount, the address it pays, and how to pay each option (EIP-3009 signature, Circle Gateway batch, Solana fee payer). It also lists what is wrong with the paywall, e.g. a missing signing domain. Free, 100 calls a day.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "the https URL of the paid resource"
    },
    "method": {
      "type": "string",
      "description": "GET (default) or POST"
    }
  },
  "required": [
    "url"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded38 tools