{"_id":"@usestring/mcp","_rev":"4-93750c71a60e70bcd3db4df37eec54ec","name":"@usestring/mcp","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@usestring/mcp","version":"1.0.0","keywords":["mcp","string-ai","web-scraping","web-unblocker","model-context-protocol"],"license":"MIT","_id":"@usestring/mcp@1.0.0","maintainers":[{"name":"stringylogan","email":"logan@usestring.ai"},{"name":"sergiystring","email":"sergiy@usestring.ai"}],"homepage":"https://github.com/durable-alpha/string-ai-mcp#readme","bugs":{"url":"https://github.com/durable-alpha/string-ai-mcp/issues"},"bin":{"string-ai-mcp":"build/index.js"},"dist":{"shasum":"8544886d468475541f7f71f51aa69f9314395d0e","tarball":"https://registry.npmjs.org/@usestring/mcp/-/mcp-1.0.0.tgz","fileCount":7,"integrity":"sha512-KNmL1u4PYqtl2JHJM4+LCgPM9qGlUgma0/NBmhjT0xyM7Iy/2GAPFFQSyLGn0sAESt777bemIBzIwO68IhzZKg==","signatures":[{"sig":"MEQCIDBX6gPgwfZzhCX2W4oq9nxQ9qE7m+23pdCsMvPbbJnhAiBUgerRtZmS5/6ky2FWj/O5KWd2X8Yw1SHAuVTtgQFxhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21670},"type":"module","engines":{"node":">=18"},"gitHead":"aeb1a45149dbf317e3671f8d942fc3c7a7dc82b5","scripts":{"dev":"tsc --watch","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"sergiystring","email":"sergiy@usestring.ai"},"repository":{"url":"git+https://github.com/durable-alpha/string-ai-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Official String AI Unblocker MCP Server – fetch and search the web via the String AI API from any MCP client","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.0_1781651647462_0.9810800314563963","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@usestring/mcp","version":"1.1.0","keywords":["mcp","string-ai","web-scraping","web-access","model-context-protocol"],"license":"MIT","_id":"@usestring/mcp@1.1.0","maintainers":[{"name":"stringylogan","email":"logan@usestring.ai"},{"name":"sergiystring","email":"sergiy@usestring.ai"}],"homepage":"https://github.com/durable-alpha/string-ai-mcp#readme","bugs":{"url":"https://github.com/durable-alpha/string-ai-mcp/issues"},"bin":{"string-ai-mcp":"build/index.js"},"dist":{"shasum":"79d14a7afbcdfa427cec3dfb420d912a8502ffe2","tarball":"https://registry.npmjs.org/@usestring/mcp/-/mcp-1.1.0.tgz","fileCount":7,"integrity":"sha512-y/5TfU5rLsrhzi1ldd118exPXdt70D0XAFNH/TX6vZxl7xXfZ2BJs0+hx4gpW5XdboPQYGbZRu5MySdKdAls7A==","signatures":[{"sig":"MEQCIFOECjuffh4E2ep2nQNM5xzqUEhB8UGgjJXL1v72o+bwAiAMu9jWIKmw4XQXjNvrTJDrxvFE5os+RtoLHjS2FQLkHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21670},"type":"module","engines":{"node":">=18"},"gitHead":"d3e7c2a78fff3bcb0e859bf326030430d8897788","scripts":{"dev":"tsc --watch","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"sergiystring","email":"sergiy@usestring.ai"},"repository":{"url":"git+https://github.com/durable-alpha/string-ai-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Official String AI Web Access MCP Server – fetch and search the web via the String AI API from any MCP client","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.1.0_1783542221640_0.7184522167580829","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@usestring/mcp","version":"1.2.0","keywords":["mcp","string-ai","web-scraping","web-access","model-context-protocol"],"license":"MIT","_id":"@usestring/mcp@1.2.0","maintainers":[{"name":"stringylogan","email":"logan@usestring.ai"},{"name":"sergiystring","email":"sergiy@usestring.ai"}],"homepage":"https://github.com/durable-alpha/string-ai-mcp#readme","bugs":{"url":"https://github.com/durable-alpha/string-ai-mcp/issues"},"bin":{"string-ai-mcp":"build/index.js"},"dist":{"shasum":"4667d39b10d93dd5180844d75a578e2dc6f876cc","tarball":"https://registry.npmjs.org/@usestring/mcp/-/mcp-1.2.0.tgz","fileCount":7,"integrity":"sha512-D/j3ZMF5rfxpHL0Z+iUPQclZHot0Rtj83joZHjLQu2J86EFB2GynIoN/UBfGlhXKw/1gwlR1USL64CP2UTywqQ==","signatures":[{"sig":"MEQCIF7dY7mRTyZcjRaYwzZBw4gGMnIpGG+J7rnpDZiFIRtTAiBRbKykKWpNGnYQECNEFDpYoY/CyLpXuZMbiqZZyuYssQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40718},"type":"module","engines":{"node":">=18"},"gitHead":"5c10ad7d5ea2fc071b06713fe2e4e05773d4d0a0","scripts":{"dev":"tsc --watch","build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"sergiystring","email":"sergiy@usestring.ai"},"repository":{"url":"git+https://github.com/durable-alpha/string-ai-mcp.git","type":"git"},"_npmVersion":"11.5.1","description":"Official String AI Web Access MCP Server – fetch and search the web via the String AI API from any MCP client","directories":{},"_nodeVersion":"24.7.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.2.0_1783963564828_0.7346949038448549","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@usestring/mcp","mcpName":"ai.usestring/web-access","version":"1.2.1","publishConfig":{"access":"public"},"description":"Official String AI Web Access MCP Server – fetch and search the web via the String AI API from any MCP client","type":"module","bin":{"string-ai-mcp":"build/index.js"},"engines":{"node":">=18"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node build/index.js","prepublishOnly":"npm run build"},"keywords":["mcp","string-ai","web-scraping","web-access","model-context-protocol"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/usestring/string-ai-mcp.git"},"homepage":"https://github.com/usestring/string-ai-mcp#readme","bugs":{"url":"https://github.com/usestring/string-ai-mcp/issues"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","zod":"^3.25.0"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.8.0"},"_id":"@usestring/mcp@1.2.1","gitHead":"689f362a1540fd5b05bbad38a684e72d5cc4fcd2","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-jP5YmsqUHkq04hivQswtjkxqhzGJy1tOll3t7+bH1e+aPlIT7ha6+V8SETBddvRe0vAKnf2lsM5egSPluKsEIQ==","shasum":"a5211f56653d25a2b27c96b1dc4d2f44260b73d5","tarball":"https://registry.npmjs.org/@usestring/mcp/-/mcp-1.2.1.tgz","fileCount":7,"unpackedSize":40506,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDoS5Sw5xpE07IJUknYITvM4lDELWUdEeHlSsLUge2PjwIgdGIvTrT1+tMZarIbwfYDvZn5sQr20HYsgyfuJhkcW1o="}]},"_npmUser":{"name":"stringylogan","email":"logan@usestring.ai"},"directories":{},"maintainers":[{"name":"stringylogan","email":"logan@usestring.ai"},{"name":"sergiystring","email":"sergiy@usestring.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_1.2.1_1784189967976_0.7274205154422781"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-16T23:14:07.238Z","modified":"2026-07-16T08:19:28.300Z","1.0.0":"2026-06-16T23:14:07.617Z","1.1.0":"2026-07-08T20:23:41.778Z","1.2.0":"2026-07-13T17:26:04.968Z","1.2.1":"2026-07-16T08:19:28.122Z"},"bugs":{"url":"https://github.com/usestring/string-ai-mcp/issues"},"license":"MIT","homepage":"https://github.com/usestring/string-ai-mcp#readme","keywords":["mcp","string-ai","web-scraping","web-access","model-context-protocol"],"repository":{"type":"git","url":"git+https://github.com/usestring/string-ai-mcp.git"},"description":"Official String AI Web Access MCP Server – fetch and search the web via the String AI API from any MCP client","maintainers":[{"name":"stringylogan","email":"logan@usestring.ai"},{"name":"sergiystring","email":"sergiy@usestring.ai"}],"readme":"# 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 any webpage with automatic anti-bot bypass, CAPTCHA handling, and JavaScript rendering     |\n| `web_access_search` | Search the web with reliable results — bypasses rate limits and bot protection on search engines |\n| `web_access_sitemap` | Crawl a whole site and map its URLs as an asynchronous job — one tool drives the lifecycle via `action` |\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","readmeFilename":"README.md"}