apex-web

A real browser for your agent: a page for $0.009, or 25 pages of a site for $0.14, via x402.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~797Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (0.62% 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-web": {
      "url": "https://apexfaucet.xyz/api/mcp/web"
    }
  }
}

Remote endpoints

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

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡page_extract(url, full, payment)

Render any public web page in a real headless Chrome and return its text. JavaScript runs first, so docs sites and single-page apps that a plain fetch returns empty come back complete. $0.009 per call (x402 on Arc/Base/Solana/X1): the full text and every outbound link. Without a payment the call returns the price and every rail we accept. Refuses private and reserved addresses and our own hosts, so it cannot be used as a proxy into a network. Sites that put a bot wall in front of their pages (Cloudflare, DataDome and the like) answer with a challenge rather than the page: the call then FAILS with `http-403` or `bot-challenge` and says so, rather than charging you for a spinner.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "the http(s) page to render"
    },
    "full": {
      "type": "boolean",
      "description": "true asks for the paid full text. Without a payment you get a 402 carrying the price and every rail we accept; sign it and call again with `payment`."
    },
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the same base64 payload you would put in the PAYMENT-SIGNATURE header). Pass it here and the purchase completes inside this tool call - you never have to leave MCP."
    }
  },
  "required": [
    "url"
  ]
}
🟢site_extract(url, pages, full, payment)

Render a whole section of a site - up to 25 pages - in one call and get every page back as clean text, with JavaScript executed. Same host only; robots.txt is obeyed and anything it disallows is skipped and named. FREE: the crawl PLAN - exactly which pages would be fetched and what robots.txt allows - so you can see what you would get before paying. PAID ($0.14, x402 on Arc/Base/Solana/X1): every page rendered and returned. It costs more than one page because it is up to 25 real browser renders, not a lookup. If a bot wall on the site lets the first page through but blocks the rest, the call fails with `poor-yield` and names every page it could not render, instead of billing you for a list of failures.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "the page to start from"
    },
    "pages": {
      "type": "number",
      "description": "how many pages, default 10, hard cap 25"
    },
    "full": {
      "type": "boolean",
      "description": "true asks for the paid crawl. Without a payment you get a 402 carrying the price and every rail we accept; sign it and call again with `payment`."
    },
    "payment": {
      "type": "string",
      "description": "a signed x402 payment (the same base64 payload you would put in the PAYMENT-SIGNATURE header). Pass it here and the purchase completes inside this tool call."
    }
  },
  "required": [
    "url"
  ]
}
🟢web_read(urls, payment)

Read up to 10 web pages as clean text in one call: title, description and readable body, with the final URL. A plain fetch (no JavaScript); for a rendered page use page_extract. $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": {
    "urls": {
      "type": "string",
      "description": "comma-separated URLs, up to 10"
    },
    "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": [
    "urls"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools