Skip to main content
Glama

Server Details

The most accurate web access API. Stop getting blocked.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
usestring/string-ai-mcp
GitHub Stars
0
Server Listing
String AI Web Access MCP Server

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 3 of 3 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: fetching a specific URL, searching the web for URLs, and crawling a site to map URLs. Descriptions explicitly cross-reference each other to prevent confusion.

Naming Consistency4/5

All tools share the web_access_ prefix and use single lowercase words, but 'sitemap' is a noun used as an operation verb, which is a minor deviation from the pure verb pattern of fetch and search.

Tool Count5/5

Three tools is a well-scoped set for a web access server, covering the essential operations without redundancy or bloat.

Completeness5/5

The set covers the full lifecycle of web access: search to find URLs, fetch to retrieve content, and sitemap to discover/crawl entire sites. No obvious gaps for the stated purpose.

Available Tools

3 tools
web_access_fetchA
Read-only
Inspect

Fetch any webpage and get clean, LLM-ready Markdown back. String AI's Web Access API handles proxy rotation, anti-bot protection, CAPTCHAs, and JavaScript-rendered content automatically. If available, default to this tool for any web fetching or scraping.

Primary use (the common case): pass only a url. The page is fetched with a normal GET and returned as Markdown — no other parameters are needed.

{ "url": "https://example.com/article" }

Best for: any URL, especially sites with anti-bot protection, paywalls, or dynamic content (news, docs, blogs, web apps). Not for: searching the web when you don't have a URL — use web_access_search instead.

Optional parameters (omit unless you need them):

  • formatmarkdown (default), raw (verbatim upstream body), or json (a { statusCode, headers, data } envelope with the destination's status and headers).

  • executeJS — set true to render JavaScript for SPAs when the content comes back empty. Cannot be combined with headers.

  • actions — drive a real browser (click, scroll, type, wait) before capturing the page. See below.

  • method + body — use POST/PUT/PATCH with a body to send writes (body is rejected on GET).

  • headers — forward custom request headers. Not supported when executeJS is enabled.

  • countryCode — ISO 3166-1 alpha-2 (e.g. "US") to route through a proxy in that country.

  • solveCaptcha — defaults true; set false to fail fast instead of spending effort solving a challenge.

Returns: Markdown by default; the verbatim body or a JSON envelope when format is set accordingly.


actions — driving the page instead of just loading it

An actions sequence runs in a real browser session and returns the page as it stands after the last step. Use it when the content you need does not exist in the document until something happens to the page: a click past a consent or paywall gate, a search form submitted, a "load more" button, a tab or accordion opened, or rows that only render once scrolled into view.

Escalate in this order — each step costs more time and money than the last:

  1. Plain url — always try this first.

  2. executeJS: true — the page renders client-side but needs no interaction.

  3. actions — the content requires interaction. Takes tens of seconds and holds a browser session.

If the data is still absent after all three, it is likely never in the HTML at all — look for the JSON API the page itself calls and fetch that endpoint directly, which is faster and returns exact values.

Steps (max 50 per request; at most one screenshot):

  • {"type": "wait", "selector": ".price", "timeout": 20000} — wait until the selector appears, then continue immediately. Prefer this over a fixed pause.

  • {"type": "wait", "milliseconds": 3000} — fixed pause. Max 30000ms, as is timeout above.

  • {"type": "click", "selector": "#accept", "all": false}all: true clicks every match.

  • {"type": "write", "text": "..."} — types into the focused element; click it first.

  • {"type": "press", "key": "Enter"}

  • {"type": "scroll", "direction": "down", "amount": 1000, "selector": "..."}selector scrolls that element instead of the page.

  • {"type": "hover", "selector": "..."}

  • {"type": "selectOption", "selector": "select#size", "value": "L"}value may be an array.

  • {"type": "navigate", "url": "https://..."} — go to another page mid-session, keeping cookies and state.

  • {"type": "screenshot", "full_page": true, "quality": 80}

The session opens on url before your first step, so never begin with a navigate to that same URL.

Examples

Dismiss a cookie banner, then read the page:

{ "url": "https://example.com/pricing", "actions": [
  { "type": "click", "selector": "#accept-cookies" },
  { "type": "wait", "selector": "main .plan", "timeout": 15000 }
] }

Run a search the site offers no URL for:

{ "url": "https://example.com", "actions": [
  { "type": "click", "selector": "input[name=q]" },
  { "type": "write", "text": "standing desk" },
  { "type": "press", "key": "Enter" },
  { "type": "wait", "selector": ".results .item", "timeout": 20000 }
] }

Fill in rows that render only as they scroll into view:

{ "url": "https://example.com/listings", "actions": [
  { "type": "wait", "selector": ".card", "timeout": 20000 },
  { "type": "scroll", "direction": "down" },
  { "type": "wait", "milliseconds": 1500 },
  { "type": "scroll", "direction": "down" },
  { "type": "wait", "milliseconds": 1500 }
] }

Returns with actions: a JSON object — data (the final page, Markdown by default), finalUrl, statusCode, and screenshot when the sequence took one. If a step fails, the call still succeeds and returns error plus failedActionIndex, a 0-based index into your actions array, with data holding the page as it stood at that point — read it to see what the page actually showed, then fix that step's selector.

Not combinable with method, body, headers, or format: "raw"; a browser session is always a GET.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe full URL of the webpage to fetch. Must be a valid HTTP/HTTPS URL.
bodyNoRequest body for POST/PUT/PATCH. A string is sent as-is; an object is JSON-stringified. Not allowed for GET.
formatNoOutput format: 'markdown' for clean LLM-optimized text (recommended), 'raw' for the verbatim upstream body, 'json' for a { statusCode, headers, data } envelope.
methodNoHTTP method for the request (GET/POST/PUT/PATCH), defaults to GET. Use POST/PUT/PATCH to send a body.
actionsNoBrowser actions to run in order before the page is captured, for content that only appears after interaction. Max 50, at most one screenshot. Not combinable with method, body, headers, or format 'raw'.
headersNoCustom request headers to forward (max 50). Not supported when executeJS is enabled.
executeJSNoEnable JavaScript rendering for SPAs and dynamic content. Set to true if content appears empty or incomplete. Cannot be combined with custom headers.
countryCodeNoISO 3166-1 alpha-2 country code for geolocated proxy routing, e.g. 'US'.
solveCaptchaNoWhether to attempt captcha solving. Defaults to true server-side; set false to fail fast on challenges.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bodyYes
errorNo
headersYes
finalUrlNo
screenshotNo
statusCodeYes
failedActionIndexNo
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description richly discloses behavior (proxy rotation, anti-bot handling, CAPTCHA solving defaults, action-step failure semantics returning failedActionIndex). However, it explicitly states 'method + body — use POST/PUT/PATCH with a body to send writes,' which contradicts the readOnlyHint: true annotation claiming the tool is read-only. Per the rubric, this contradiction forces a score of 1.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every section earns its place given the tool's complexity (9 parameters, nested action objects, error semantics). It is front-loaded with the core fact and default usage, then uses clear headers, compact bullet lists, and three illustrative JSON examples for the actions system. The structure makes the length navigable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (nested objects, 9 params, output schema present), the description covers everything an agent needs: purpose, when to use versus alternatives, parameter semantics, escalation order, return formats, action syntax, and failure behavior. The only gap is rate limiting/auth, which is not a material omission for a web fetch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds substantial meaning beyond the schema: it explains format semantics ('raw for verbatim upstream body'), the executeJS use case ('when content comes back empty'), cross-parameter constraints (body rejected on GET, executeJS cannot combine with headers, actions not combinable with method/body/headers/format raw), and documented defaults (solveCaptcha defaults true). This far exceeds the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Fetch any webpage and get clean, LLM-ready Markdown back.' It clearly differentiates from the sibling tool via 'Not for: searching the web when you don't have a URL — use web_access_search instead,' and the 'Best for' section further scopes its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance ('If available, default to this tool for any web fetching or scraping'), names the alternative for search (web_access_search), and provides a usage escalation ladder (plain url → executeJS → actions → direct API call) with cost reasoning. This is exemplary usage guidance beyond what the schema provides.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_access_sitemapAInspect

Crawl an entire website and map its URLs using String AI's Web Access API sitemap crawler. Starting from one URL it follows same-domain links breadth-first (optionally seeded from the site's /sitemap.xml) and records every URL it reaches with fetch status, depth, and parent. The crawl runs asynchronously server-side, so it handles whole sites that a single web_access_fetch call cannot.

Best for: discovering all pages/URLs of a site (site audits, building scraping worklists, coverage checks) before fetching individual pages with web_access_fetch. Not for: reading one page's content (use web_access_fetch) or open-ended web queries (use web_access_search).

This single tool drives the whole job lifecycle through action:

1. submit — quote a crawl (nothing is crawled or billed yet). Requires url. Optional: maxPages (1–10000, default 10), maxDepth (1–100, default 2), pathPrefix (only crawl URLs whose path starts with this, e.g. "/docs"), budgetUsd (spend ceiling; the crawl stops with status token_cap_exceeded if it would exceed it), useSitemap (also seed the site's root /sitemap.xml — one extra billed page, but finds pages links miss). Returns jobId, estimatedPages, and estimatedCostUsd with status awaiting_approval.

{ "action": "submit", "url": "https://example.com", "maxPages": 200, "maxDepth": 3 }

2. approve — start the quoted crawl (requires jobId). This is the billing-consent step: pages are billed as they are fetched, capped by the quote/budget. Before approving a non-trivial estimatedCostUsd, confirm the spend with your user. Fails with status 402 if the account balance cannot cover the quote; a 409 partial_state error means an earlier approve was interrupted — just call approve again.

3. status — poll progress (requires jobId). Statuses: awaiting_approvalrunning → terminal completed | failed | canceled | token_cap_exceeded (budget hit before maxPages; collected results are still readable). While running it returns pending and processed counts; a partial_state status means an interrupted approve — call approve again to repair it. Status never includes the URL list — page that with results. Poll every few seconds for small crawls; give hundreds-of-pages crawls tens of seconds between polls.

4. results — page through discovered URLs (requires jobId). Optional limit (default 1000, max 5000) and offset; total tells you when to stop paging. Each entry has url, statusCode (0 = discovered but not fetched), depth, parentUrl, isSitemap, sourceType, and an error when that page failed. discoveredUrls (links found on the page) is only present for ~1h after completion; afterwards results come from durable storage which omits it — everything else stays available.

5. cancel — stop a running or pending job (requires jobId). Already-terminal jobs return a 409 error. Pages already fetched stay billed and readable via results.

6. list — recent crawl jobs for the account. Optional limit (default 20, max 100) and offset. Use it to find a jobId you lost or check for an equivalent recent crawl before paying for a new one.

Typical workflow: submit → check estimatedCostUsd → approve → poll status until terminal → results (paged). A 404 on any jobId action means the job doesn't exist or belongs to another account; a 403 on submit means the target domain is blocked for this account (contact support@usestring.ai).

Returns: the JSON envelope for the chosen action (quote, status, URL page, job list) alongside a one-line summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNosubmit only (required there): the full http(s) URL to start crawling from. The crawl stays on this URL's domain.
jobIdNoThe job id returned by submit. Required for approve, status, results, and cancel.
limitNoresults/list only: page size. results default 1000 (max 5000); list default 20 (max 100).
actionYesLifecycle action to perform: 'submit' (quote a new crawl), 'approve' (start a quoted crawl — billing consent), 'status' (poll progress), 'results' (page through discovered URLs), 'cancel' (stop a job), or 'list' (recent jobs).
offsetNoresults/list only: number of rows to skip for pagination.
maxDepthNosubmit only: maximum link depth from the start URL, 1-100 (server default 2).
maxPagesNosubmit only: maximum pages to fetch, 1-10000 (server default 10). Each fetched page is billed.
budgetUsdNosubmit only: spend ceiling in USD (min 0.0001). The crawl finalizes as token_cap_exceeded when it would exceed this; omit to let the approved quote be the cap.
pathPrefixNosubmit only: restrict the crawl to URLs whose path starts with this prefix, e.g. '/docs'.
useSitemapNosubmit only: also seed the crawl from the site's root /sitemap.xml (one extra billed page; finds pages that internal links miss).

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsNo
urlsNo
jobIdNo
totalNo
statusNo
pendingNo
processedNo
finishedAtNo
errorMessageNo
estimatedPagesNo
pagesProcessedNo
estimatedCostUsdNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It details the asynchronous server-side lifecycle, billing mechanics, error conditions (402, 409, 403, 404), data availability windows, and precise behavior for each action. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with sections, but lengthy; some redundancy (e.g., 409 error mentioned multiple times). Every sentence adds value, but could be trimmed slightly for better conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers lifecycle, error handling, constraints, and returns. Although an output schema exists, the description still summarizes result fields and mentions the 'one-line summary' in returns. Complete for a complex sitemap-crawling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant meaning: explains defaults (maxPages 10, maxDepth 2), conditional requirements (jobId needed for approve/status/results/cancel, url for submit), budgetUsd as spend ceiling, and useSitemap behavior. Goes well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool crawls an entire website to map its URLs using a sitemap crawler, following same-domain links breadth-first. It distinguishes itself from siblings web_access_fetch and web_access_search with explicit 'Best for' and 'Not for' sections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use and when-not-to-use guidance, naming alternatives. Includes a typical workflow and specific use cases (site audits, building scraping worklists), plus error handling and billing consent steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables web scraping, structured data extraction, and screenshot capture with automatic anti-bot bypass, supporting JavaScript rendering, proxy rotation, and tiered pricing.
    25
    187
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables LLMs and AI agents to access real-time web data, search websites, and navigate the web without getting blocked. Includes 5,000 free monthly requests and supports web scraping, browser automation, and bypassing geo-restrictions.
    60
    6,103
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides AI-powered undetectable browser automation for data harvesting, bypassing protections like Cloudflare, and intercepting network traffic, with 90 tools for element interaction, extraction, and network debugging.
    1

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.