{
  "markdown": "# String AI Web Access MCP Server\n\nThe official [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server for\n[String AI](https://usestring.ai)'s Web Access API. Connect any MCP-compatible client —\nVS Code, Cursor, Windsurf, Claude Desktop, and more — to String AI's powerful web access capabilities.\n\n## Tools\n\n| Tool                  | Description                                                                     |\n| --------------------- | ------------------------------------------------------------------------------- |\n| `web_access_fetch`    | Fetch one URL and get clean, LLM-ready Markdown back                            |\n| `web_access_request`  | Send a POST, PUT or PATCH with a body to a URL                                  |\n| `web_access_search`   | Search the web and get structured results back                                  |\n| `web_access_sitemap`  | Crawl a site and map its URLs as an asynchronous job, driven by `action`        |\n\n`web_access_fetch` and `web_access_search` are read-only. `web_access_request` writes, and\n`web_access_sitemap` creates billed crawl jobs. Pages that rate-limit, geo-gate or block\nautomated traffic come back as Markdown rather than a block screen: proxy rotation, challenge\nhandling and JavaScript rendering happen server-side.\n\n> The four-tool shape above is what the hosted server at `https://mcp.usestring.ai/v1/mcp`\n> serves. The npm package on this repo is still at 1.2.1, where writes go through\n> `web_access_fetch`'s `method` and `body` parameters instead of a separate tool.\n\n### `web_access_sitemap` — sitemap crawl jobs\n\nA crawl is a two-phase, asynchronous **quote → approve → poll → read** job:\nnothing is crawled or billed until the quote is explicitly approved.\n\n| `action`  | What it does                                                                                       |\n| --------- | -------------------------------------------------------------------------------------------------- |\n| `submit`  | Quote a crawl (`url` required; `maxPages` ≤ 10000 default 10, `maxDepth` ≤ 100 default 2, `pathPrefix`, `budgetUsd`, `useSitemap` optional). Returns `jobId` + `estimatedCostUsd` + `estimatedPages`, status `awaiting_approval`. |\n| `approve` | Billing consent — starts the crawl. 402 = insufficient funds; 409 `partial_state` = retry approve.  |\n| `status`  | Poll progress: `awaiting_approval` → `running` (`pending`/`processed`) → `completed` \\| `failed` \\| `canceled` \\| `token_cap_exceeded`; `partial_state` = retry approve. Returns counts only — URLs come from `results`. |\n| `results` | Paginated discovered URLs (`limit` ≤ 5000 default 1000, `offset`). Durable after completion; per-URL `discoveredUrls` is only present for ~1h. |\n| `cancel`  | Stop a non-terminal job; already-fetched pages stay billed and readable.                            |\n| `list`    | The account's recent crawl jobs (`limit` ≤ 100 default 20, `offset`).                               |\n\n## Quick Start\n\n### Run with npx\n\n```bash\nenv STRING_AI_API_KEY=your-key npx @usestring/mcp\n```\n\n### Install globally\n\n```bash\nnpm install -g @usestring/mcp\nSTRING_AI_API_KEY=your-key string-ai-mcp\n```\n\n### Build from source\n\n```bash\ngit clone https://github.com/usestring/string-ai-mcp.git\ncd string-ai-mcp\nnpm install\nnpm run build\nSTRING_AI_API_KEY=your-key node build/index.js\n```\n\n## Environment Variables\n\n| Variable             | Required | Description                       |\n| -------------------- | -------- | --------------------------------- |\n| `STRING_AI_API_KEY`  | **Yes**  | Your String AI API key            |\n\n## Client Configuration\n\n### VS Code\n\nPress `Ctrl+Shift+P` → **Preferences: Open User Settings (JSON)** and add:\n\n```jsonc\n{\n\t\"inputs\": [\n\t\t{\n\t\t\t\"type\": \"promptString\",\n\t\t\t\"id\": \"stringAiKey\",\n\t\t\t\"description\": \"String AI API Key\",\n\t\t\t\"password\": true\n\t\t}\n\t],\n\t\"servers\": {\n\t\t\"string-ai\": {\n\t\t\t\"command\": \"npx\",\n\t\t\t\"args\": [\"-y\", \"@usestring/mcp\"],\n\t\t\t\"env\": {\n\t\t\t\t\"STRING_AI_API_KEY\": \"${input:stringAiKey}\"\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\nOr add a `.vscode/mcp.json` file to share the configuration with your team.\n\n### Cursor\n\nOpen **Settings → Features → MCP Servers → + Add new global MCP server** and paste:\n\n```json\n{\n  \"mcpServers\": {\n    \"string-ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@usestring/mcp\"],\n      \"env\": {\n        \"STRING_AI_API_KEY\": \"YOUR_API_KEY\"\n      }\n    }\n  }\n}\n```\n\n### Windsurf\n\nAdd to `~/.codeium/windsurf/model_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"string-ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@usestring/mcp\"],\n      \"env\": {\n        \"STRING_AI_API_KEY\": \"YOUR_API_KEY\"\n      }\n    }\n  }\n}\n```\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"string-ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@usestring/mcp\"],\n      \"env\": {\n        \"STRING_AI_API_KEY\": \"YOUR_API_KEY\"\n      }\n    }\n  }\n}\n```\n\n## Testing with the MCP Inspector\n\nThe MCP Inspector lets you test your server interactively in a browser:\n\n```bash\nnpx @modelcontextprotocol/inspector node build/index.js\n```\n\nThen open `http://127.0.0.1:6274`, connect via **stdio**, and try calling each\ntool from the UI.\n\n## How It Works\n\n```\n┌──────────────────┐   stdio (JSON-RPC)   ┌──────────────────┐   HTTPS   ┌──────────────────┐\n│  VS Code / Cursor │ ◄──────────────────► │  String AI       │ ────────► │  String AI       │\n│  Windsurf / Claude│                      │  Web Access MCP  │           │  Web Access API  │\n└──────────────────┘                       └──────────────────┘           └──────────────────┘\n```\n\n1. The IDE spawns this server as a child process and communicates over **stdio**.\n2. When the LLM decides it needs web content, it invokes `web_access_fetch`\n   or `web_access_search`.\n3. This server forwards the request to String AI's Web Access API (using your API key from\n   the environment) and returns the result to the LLM.\n\n## About String AI\n\n[String AI](https://usestring.ai) provides a powerful web access API that handles proxies,\nanti-bot measures, and JavaScript rendering automatically. Get your API key at\n[usestring.ai](https://usestring.ai).\n\n## License\n\nMIT\n\n## Security\n\nPlease report security vulnerabilities privately as described in [SECURITY.md](SECURITY.md).\n",
  "bytes": 6272,
  "sha": "a0ca2024d659ea322c64f454ba12673ef350c705df7a68baf4e32140ca8471e5",
  "repo_slug": "usestring/string-ai-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_usestring_web_access_6052ea29/readme"
}