alterlab-mcp-server
The AlterLab MCP Server gives AI agents the ability to scrape any website, extract structured data, take screenshots, crawl entire sites, search the web, manage authenticated sessions, and estimate costs — with automatic anti-bot bypass (Cloudflare, DataDome, Akamai) and smart tier escalation.
Scrape webpages (
alterlab_scrape) — Fetch content as markdown, text, HTML, or JSON; supports JS rendering (React/Angular/Vue SPAs), geo-targeting, authenticated scraping via sessions or inline cookies, infinite scroll, and POST/GraphQL requests.Extract structured data (
alterlab_extract) — Use pre-built profiles (product, article, job posting, FAQ, recipe, event), custom JSON schemas, or natural language prompts on pre-fetched content.Take screenshots (
alterlab_screenshot) — Capture full-page PNG screenshots via headless browser, with support for waiting on CSS selectors or page load events.Crawl entire websites (
alterlab_crawl/alterlab_crawl_status/alterlab_crawl_cancel) — Asynchronously crawl domains via sitemap parsing and link extraction, with configurable depth, concurrency, URL patterns, and per-page structured extraction.Web search (
alterlab_search) — Execute SERP queries with multi-engine failover, optionally scraping result pages.Discover site URLs (
alterlab_map) — Lightweight URL discovery via sitemap/link extraction with relevance filtering.Batch scraping (
alterlab_batch/alterlab_batch_status) — Submit up to 100 URLs for parallel scraping in a single request, each with its own options and extraction schema.Manage authenticated sessions — Create, list, get, update, refresh, validate, and delete stored cookie-based sessions for scraping behind login walls.
Estimate costs (
alterlab_estimate_cost) — Preview the predicted tier and cost before running a scrape.Check account balance (
alterlab_check_balance) — View current credits, total deposited, and total spent.Manage beta features (
alterlab_list_beta_features,alterlab_enable_beta_feature,alterlab_disable_beta_feature) — List, enable, and disable experimental features on your account.
Provides automatic anti-bot bypass for Akamai-protected websites, enabling reliable scraping of sites behind Akamai.
Allows scraping of Amazon product pages, extraction of product details (name, price, rating, etc.), and session management for authenticated scraping.
Provides automatic anti-bot bypass for Cloudflare-protected websites, enabling reliable scraping of sites behind Cloudflare.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@alterlab-mcp-serverScrape the HTML content of https://example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
One-Line Install
Claude Code
claude mcp add alterlab -- npx -y alterlab-mcp-server@latestThen set your API key: export ALTERLAB_API_KEY=sk_live_... or add it to .claude.json (see full setup below).
Cursor
# Add to .cursor/mcp.json — see full config belowSmithery
npx -y @smithery/cli install alterlab-mcp-server --client claudeRelated MCP server: Decodo MCP Server
Why AlterLab Instead of WebFetch or Browser MCP?
Claude's built-in WebFetch tool and open-source browser MCP servers fail on most real-world websites. They cannot bypass Cloudflare, render JavaScript SPAs, or extract structured data.
AlterLab replaces broken fetch tools with one MCP server that actually works:
Capability | WebFetch / fetch() | Browser MCP | AlterLab MCP |
Anti-bot bypass (Cloudflare, DataDome, Akamai) | No | Partial | Yes — automatic |
JavaScript rendering (React, Angular, Vue SPAs) | No | Yes (slow) | Yes — headless Chromium |
Structured data extraction (JSON, Schema.org) | No | No | Yes — built-in profiles |
Smart tier escalation (cheapest method first) | N/A | N/A | Yes — saves 60-80% |
Residential proxy rotation (195+ countries) | No | No | Yes |
Screenshot and PDF capture | No | Screenshot only | Yes — both |
OCR text extraction from images | No | No | Yes |
Cost per request | Free (but fails) | Free (but slow) | From $0.0002 |
How Does AlterLab Web Scraping Work?
AlterLab uses a multi-tier scraping architecture. It automatically selects the cheapest method capable of fetching each URL:
Curl ($0.0002/req) — Direct HTTP for static pages, RSS feeds, public APIs
HTTP ($0.0003/req) — TLS fingerprint rotation for moderately protected sites
Stealth ($0.0005/req) — Browser impersonation for Cloudflare/DataDome-protected sites
Light JS ($0.0007/req) — Lightweight JS extraction from server-rendered HTML
Browser ($0.001/req) — Full headless Chromium for JavaScript-heavy SPAs
Auto mode starts at Tier 1 and escalates only when blocked. Most websites resolve at Tiers 1-2, so $1 gets you 1,000 to 5,000 scrapes depending on the sites you target.
Installation
Install in Claude Desktop / Claude Code
Add to your Claude config file (~/.claude.json for Claude Code, or Settings for Claude Desktop):
{
"mcpServers": {
"alterlab": {
"command": "npx",
"args": ["-y", "alterlab-mcp-server@latest"],
"env": {
"ALTERLAB_API_KEY": "sk_live_your_key_here"
}
}
}
}Install in Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"alterlab": {
"command": "npx",
"args": ["-y", "alterlab-mcp-server@latest"],
"env": {
"ALTERLAB_API_KEY": "sk_live_your_key_here"
}
}
}
}Install in Windsurf
Add to Windsurf MCP settings (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"alterlab": {
"command": "npx",
"args": ["-y", "alterlab-mcp-server@latest"],
"env": {
"ALTERLAB_API_KEY": "sk_live_your_key_here"
}
}
}
}Install via Smithery
npx -y @smithery/cli install alterlab-mcp-server --client claudeGet Your API Key
Sign up free — $1 free balance on signup
Go to Dashboard → API Keys and copy your key
Paste it into the
ALTERLAB_API_KEYfield in your MCP config
Tools
alterlab_scrape — Scrape Any Webpage
Scrape a URL and return its content as markdown, text, HTML, or JSON. Automatically handles anti-bot protection with tier escalation. Returns markdown by default — optimized for LLM context windows.
"Scrape https://www.amazon.com/dp/B0BSHF7WHW and summarize the product"Parameter | Type | Default | Description |
| string | required | URL to scrape |
|
|
| Scraping mode |
|
|
| Output formats |
| boolean |
| Use headless browser (+3 credits) |
| boolean |
| Premium proxy (+1 credit) |
| string | — | ISO country code for geo-targeting (e.g., |
| string | — | CSS selector to wait for before extraction |
| number |
| Timeout in seconds (1-300) |
| boolean |
| Include raw HTML alongside formatted content |
| string (UUID) | — | Stored session ID for authenticated scraping |
|
| — | Inline cookies for one-off authenticated requests |
alterlab_extract — Extract Structured Data
Extract structured fields from any webpage using pre-built profiles or custom JSON Schema. Returns clean JSON — ready for databases, spreadsheets, or downstream processing.
"Extract the product name, price, and rating from this Amazon page"Parameter | Type | Default | Description |
| string | required | URL to extract from |
| enum |
| Profile: |
| object | — | Custom JSON Schema for structured output |
| string | — | Natural language extraction instructions |
| boolean |
| Use headless browser |
| boolean |
| Premium proxy |
Extraction profiles:
Product — name, price, currency, rating, reviews, availability, images, description
Article — title, author, published date, body text, featured image
Job Posting — title, company, location, salary, description, requirements
FAQ — question-answer pairs
Recipe — ingredients, instructions, prep time, servings
Event — name, date, location, description, organizer
alterlab_screenshot — Screenshot Any Page
Take a full-page screenshot of any URL. Returns a PNG image directly in the conversation — no URLs to copy, no files to download.
"Take a screenshot of our landing page at https://alterlab.io"Parameter | Type | Default | Description |
| string | required | URL to screenshot |
| string | — | CSS selector to wait for before capture |
| enum |
|
|
alterlab_estimate_cost — Estimate Before You Scrape
Check how much a scrape will cost before running it. Returns the predicted tier, cost per request, and confidence level.
"How much would it cost to scrape linkedin.com?"Parameter | Type | Default | Description |
| string | required | URL to estimate |
| enum |
| Scraping mode |
| boolean |
| Include JS rendering cost |
| boolean |
| Include proxy cost |
alterlab_check_balance — Check Your Credits
Check your account balance, total deposited, and total spent. No parameters needed.
"Check my AlterLab balance"alterlab_list_sessions — List Stored Sessions
List all stored sessions for authenticated scraping. Sessions contain cookies for specific domains, allowing you to scrape content behind login walls.
"List my stored sessions"alterlab_create_session — Create a Session
Create a new stored session with cookies from a logged-in browser. The session is stored securely and can be reused across multiple scrape requests.
"Create an Amazon session with these cookies: session-id=abc123, session-token=xyz789"Parameter | Type | Default | Description |
| string | required | Human-readable name (e.g., "My Amazon Account") |
| string | required | Domain (e.g., "amazon.com") |
|
| required | Cookie key-value pairs |
| string | — | Browser User-Agent to use with this session |
alterlab_validate_session — Validate a Session
Check whether a stored session is still active and its cookies are valid.
"Is my Amazon session still valid?"Parameter | Type | Default | Description |
| string (UUID) | required | Session ID to validate |
alterlab_delete_session — Delete a Session
Permanently delete a stored session and its cookies.
"Delete session abc-123-def"Parameter | Type | Default | Description |
| string (UUID) | required | Session ID to delete |
Authenticated Scraping
AlterLab MCP supports scraping pages that require authentication. This enables AI agents to access user-specific content like order histories, account dashboards, and member-only pricing.
How It Works
Create a session with cookies from a logged-in browser using
alterlab_create_sessionScrape authenticated pages by passing the
session_idtoalterlab_scrapeManage sessions with list, validate, and delete tools
Example: Check Amazon Prime Pricing
User: "What's my Prime member price for this product?"
Claude: [calls alterlab_list_sessions → finds Amazon session]
Claude: [calls alterlab_scrape with session_id for authenticated pricing]
Claude: "The Prime member price is $24.99 (public price: $34.99)"Inline Cookies vs Stored Sessions
Stored sessions (
session_id): Best for repeated access to the same domain. Create once, reuse across requests.Inline cookies (
cookies): Best for one-off authenticated requests where you don't need to save the session.
What Can You Do with AlterLab MCP?
Research and Analysis
Ask Claude to scrape and analyze websites in real-time:
"Scrape the top 5 results from this Google search and summarize them"
"Extract all product prices from this Amazon category page"
"Compare the pricing pages of these 3 competitors"
Code Generation with Real Data
Let Cursor or Windsurf fetch live data while building:
"Scrape this API documentation page and generate TypeScript types from it"
"Extract the color palette from this website and create a Tailwind config"
"Screenshot this design and recreate it in React"
Content and SEO
Use Claude to analyze content at scale:
"Scrape this blog post and suggest improvements for SEO"
"Extract all FAQ entries from this help center and create a structured dataset"
"Compare our landing page to the competitor's and identify gaps"
Monitoring and Alerts
Build agentic workflows that watch the web:
"Check if this product is back in stock"
"Scrape this page daily and alert me when the price drops below $50"
"Monitor this job board for new senior engineering positions"
Pricing — Pay-As-You-Go Web Scraping
No subscriptions. No monthly minimums. Add balance and use it whenever you need it.
Base Scraping Costs
Tier | Method | Cost per Request | Use Case |
Curl | Direct HTTP | $0.0002 | Static pages, RSS feeds, public APIs |
HTTP | TLS fingerprinting | $0.0003 | Sites with basic bot detection |
Stealth | Browser impersonation | $0.0005 | Cloudflare, DataDome, PerimeterX protected sites |
Light JS | JSON extraction | $0.0007 | Server-rendered pages needing structured data |
Browser | Headless Chromium | $0.001 | Full JavaScript SPAs (React, Angular, Vue) |
Optional Add-Ons
Add-On | Extra Cost | Description |
JavaScript Rendering | +$0.0006 | Headless Chromium for dynamic content |
Screenshot Capture | +$0.0002 | Full-page PNG screenshot |
Premium Proxy | +$0.0002 | Geo-targeted residential proxy (195+ countries) |
OCR Text Extraction | +$0.001 | Extract text from images on the page |
$1 = 5,000 light scrapes. New accounts get $1 free balance on signup.
Environment Variables
Variable | Required | Default | Description |
| Yes | — | Your API key (get one free) |
| No |
| API base URL (for self-hosted or development) |
Frequently Asked Questions
How do I add web scraping to Claude, Cursor, or Windsurf?
Install the AlterLab MCP server. For Claude Code, run claude mcp add alterlab -- npx -y alterlab-mcp-server@latest and set your ALTERLAB_API_KEY. For Claude Desktop, Cursor, or Windsurf, add the JSON config block to your MCP settings file. Once configured, your AI assistant can scrape any URL, extract structured data, and take screenshots directly in conversation.
Can Claude scrape websites that are behind Cloudflare or anti-bot protection?
Yes. AlterLab automatically handles Cloudflare, DataDome, PerimeterX, Akamai, and other anti-bot systems. It uses a multi-tier approach that starts with the cheapest method and escalates only when blocked. You don't need to configure anything — anti-bot bypass is fully automatic.
What is an MCP server and how does it work with Claude?
MCP (Model Context Protocol) is Anthropic's open standard for connecting AI assistants to external tools and data sources. An MCP server is a small program that exposes tools — like web scraping — that Claude, Cursor, or Windsurf can call during a conversation. The AlterLab MCP server gives your AI assistant 23 tools: scrape, extract, screenshot, crawl, search, map, batch scraping, session management, beta features, and more.
How is AlterLab different from Firecrawl, ScrapingBee, or Apify MCP servers?
AlterLab starts at $0.0002 per request — 5-20x cheaper than most scraping APIs — because it only uses expensive browser rendering when a site actually requires it. Smart tier escalation means you pay for what each site needs, not the maximum. AlterLab also includes built-in structured data extraction with pre-built profiles (product, article, job posting, etc.) at no extra cost.
Can I scrape Amazon, Walmart, and other e-commerce sites from Claude?
Yes. AlterLab handles all major e-commerce anti-bot protection. Use the alterlab_extract tool with extraction_profile: "product" to get structured JSON: product name, price, currency, rating, review count, availability, and images — ready for analysis, comparison, or data pipelines.
Can Cursor scrape documentation and generate code from it?
Yes. With AlterLab MCP installed in Cursor, you can ask it to scrape API documentation, library docs, or any reference page and generate TypeScript types, API clients, or component code from the live content. This is more reliable than relying on the LLM's training data, which may be outdated.
Does AlterLab MCP work with JavaScript-heavy sites (React, Angular, Vue)?
Yes. Use render_js: true or set mode: "js" to enable full headless Chromium rendering. AlterLab renders the complete page including all JavaScript, waits for dynamic content to load, then extracts content from the fully rendered DOM. This works for React, Angular, Vue, Next.js, and any other JavaScript framework.
What output format is best for AI and LLM context windows?
Use markdown (the default). It preserves document structure — headings, tables, lists, links — while being 60-80% smaller than raw HTML. Claude, GPT-4, and other LLMs process markdown significantly better than HTML. AlterLab's markdown output is specifically optimized for LLM context windows.
Is there rate limiting?
Free-tier accounts have rate limits. Adding any balance removes rate limits. The MCP server includes automatic retry with exponential backoff for transient rate limit errors (429).
Can I use this MCP server for large-scale scraping?
Yes. For parallel scraping, use alterlab_batch to scrape up to 100 URLs in a single request — much faster than sequential calls. For crawling entire domains, use alterlab_crawl. You can also build agentic workflows that scrape many URLs sequentially, or use the n8n integration for workflow automation.
Error Handling
The MCP server returns helpful error messages with suggested next actions:
Error | What Happens | Suggested Action |
401 Unauthorized | Invalid API key | Check |
402 Insufficient Credits | Balance too low | Run |
403 Forbidden | Site blocked the request | Try |
429 Rate Limited | Too many requests | Automatic retry with backoff |
504 Gateway Timeout | Scrape took too long | Increase |
Agentic Workflows — AI Agents That Scrape the Web
AlterLab MCP turns any AI agent into a web-capable agent. Instead of relying on stale training data, your agent can fetch live information from any website during execution.
Use Cases for AI Agents
Research agents — scrape multiple sources, cross-reference facts, generate reports with citations
Data pipeline agents — extract structured product/pricing/job data on a schedule
Competitive intelligence — monitor competitor pages, track pricing changes, detect new features
Content generation — scrape real data to ground LLM output in facts, not hallucinations
Lead enrichment — scrape company websites to enrich CRM records with live data
Compliance monitoring — check regulatory pages, terms of service, and policy updates
Compatible AI Frameworks and Clients
Works with any tool that supports MCP (Model Context Protocol):
Claude Desktop / Claude Code — Anthropic's AI assistant
Cursor — AI-powered code editor
Windsurf — Codeium's AI IDE
Cline — VS Code AI assistant
GitHub Copilot — via MCP configuration
Custom agents — any framework using the MCP SDK (Python, TypeScript, Go)
n8n — workflow automation via n8n-nodes-alterlab
Contributing
git clone https://github.com/RapierCraft/alterlab-mcp-server.git
cd alterlab-mcp-server
npm install
npm run buildSupport
License
Available Tools
25 toolsalterlab_batchA
Scrape up to 100 URLs in parallel with a single request — much faster and more efficient than sequential alterlab_scrape calls. Each URL automatically gets anti-bot bypass protection (Cloudflare, DataDome, etc.) at its own tier level. Returns a batch_id immediately — use alterlab_batch_status to poll results. Each URL can have its own mode, formats, extraction_schema, and options. Credits are pre-debited based on estimated cost; unused credits are refunded on completion. Use this whenever you need to scrape more than 2-3 URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | List of URLs to scrape (max 100) | |
| webhook_url | No | Webhook URL to receive batch.completed event when all jobs finish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses parallel execution, anti-bot bypass, immediate batch_id return, and credit pre-debit/refund. Missing details on error handling or rate limits, but overall informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each adding value: core function, benefit, immediate response, customization, credit behavior. No redundancy, well-structured, and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the main workflow and key behaviors. Lacks mention of expected result format from 'alterlab_batch_status', but since that's a separate tool, completeness is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context about per-URL customization and anti-bot protection but does not significantly extend beyond schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scrapes up to 100 URLs in parallel, using a specific verb ('scrape') and resource ('URLs'). It distinguishes itself from sibling 'alterlab_scrape' by emphasizing efficiency and parallelism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Use this whenever you need to scrape more than 2-3 URLs.' This advises when to use the batch tool versus sequential alternatives, fulfilling the dimension well.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_batch_scrapeA
Scrape multiple URLs simultaneously and get all results back in one call — no polling required. Unlike alterlab_batch (async with batch_id polling), this returns all results inline when complete. Best for 2-20 URLs where you need results immediately. For 20+ URLs, use alterlab_batch instead. Uses concurrent scraping (controlled by max_concurrent) for speed. Shows per-URL status, content preview, and a total cost summary at the end. Handles partial failures gracefully — failed URLs show error details, successful ones show content.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | List of URLs to scrape (max 20). All results are returned synchronously. | |
| formats | No | Output formats applied to every URL. 'markdown' is best for LLM consumption. | |
| timeout | No | Request timeout in seconds per URL (1-300). | |
| render_js | No | Render JavaScript using headless browser for all URLs. Required for JS-heavy sites. Increases cost to tier 4 (~$0.001/req). | |
| use_proxy | No | Route all requests through premium proxy (+~$0.0002/req). | |
| max_concurrent | No | Maximum number of URLs to scrape in parallel (1-10, default 3). Higher values finish faster but consume more concurrent connections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully explains behavior: concurrent scraping, per-URL status, content preview, cost summary, and graceful handling of partial failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise yet comprehensive; front-loaded with core purpose, then contrasts with sibling, usage guidelines, and behavioral insights—every sentence is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema or annotations, the description covers purpose, usage, behavior, and results sufficiently, making it easy for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides full parameter descriptions (100% coverage), but the description adds value by explaining the use case and concurrency behavior, integrating parameter choices into overall context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scrapes multiple URLs simultaneously and returns results synchronously, distinguishing it from alterlab_batch which uses async polling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using this tool for 2-20 URLs when immediate results are needed, and directs users to alterlab_batch for 20+ URLs, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_batch_statusA
Poll the status and results of a submitted batch. Call this after alterlab_batch to check progress and retrieve scraped content. Status values: processing, completed, failed, partially_failed. When completed, results contains the content for each URL.
| Name | Required | Description | Default |
|---|---|---|---|
| batch_id | Yes | Batch ID returned by alterlab_batch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return behavior with status values and when results are returned. No annotations are provided, so the description carries the burden; it covers the key behaviors for a polling tool, though it doesn't explicitly state non-destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences that are well-structured, front-loading the purpose and then providing status values and results. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers usage, status values, and result content. No output schema, but the description explains what to expect. For a simple polling tool with one parameter, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (batch_id) with 100% schema description coverage. The tool description reinforces that the batch_id comes from alterlab_batch, but adds no new semantic detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (poll) and resource (status and results of a submitted batch), and it distinguishes from siblings by specifying that this is to be used after alterlab_batch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call after alterlab_batch, providing clear usage context. Does not mention when not to use or alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_check_balanceA
Check your AlterLab account balance, status, and credit usage. Call this before expensive operations (batch scrapes, large crawls) to verify sufficient funds. Returns current balance in dollars, balance status (healthy/low/critical/exhausted), total deposited, and total spent. For a full spending breakdown by time window and top domains, use alterlab_get_usage instead. No parameters required — uses your API key for identification.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes exactly what is returned (balance, status, deposited, spent) and notes that no parameters are required, using API key for identification. No annotations exist, so description fully covers behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words, front-loaded with purpose, and includes a tip and an alternative reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully explains return values and provides context about when to use and alternative tools, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in schema, and the description explicitly states 'No parameters required — uses your API key for identification,' adding value beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks account balance, status, and credit usage. It distinguishes from sibling alterlab_get_usage by noting that tool provides a full spending breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises calling before expensive operations like batch scrapes or large crawls. Also provides an alternative tool (alterlab_get_usage) for detailed breakdown, giving both when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_crawlA
Crawl an entire website for RAG, index all pages on a site, or build a knowledge base from a domain. Automatically bypasses anti-bot protection on every page — works on Cloudflare-protected sites. Discovers URLs via sitemap parsing and link extraction, then scrapes each page asynchronously. Returns content as clean markdown, text, or structured data. Returns a crawl_id immediately — use alterlab_crawl_status to poll results. Use include_patterns/exclude_patterns to scope the crawl to specific sections. Use render_js='auto' for mixed sites to save 30-60% vs always rendering. Supports extraction_schema or extraction_profile to extract structured data from every page. Use cost_controls to cap total credits or pin the scraping tier for all pages. Use sitemap_path to specify a non-standard sitemap location. Use headers to inject custom HTTP headers (e.g., Authorization) into every page request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Start URL for the crawl | |
| formats | No | Output formats for each scraped page | |
| headers | No | Custom HTTP headers injected into every page request during the crawl (e.g., {"Authorization": "Bearer token"}). Maximum 50 headers. | |
| sitemap | No | Sitemap mode: include (default), skip (link extraction only), only (sitemap URLs only) | include |
| timeout | No | Per-page request timeout in seconds (1-300) | |
| wait_for | No | CSS selector to wait for before extracting each page (e.g., '#main-content'). Applied to all pages in the crawl. | |
| max_depth | No | Maximum link-following depth from start URL (0 = start page only) | |
| max_pages | No | Maximum number of pages to scrape | |
| render_js | No | Render JavaScript on crawled pages. true=always (Tier 4), false=never, auto=smart detection per page | |
| use_proxy | No | Route all crawl requests through premium proxy | |
| webhook_url | No | Webhook URL to notify on crawl completion | |
| block_images | No | Block image downloads during browser rendering on each crawled page. Reduces proxy bandwidth and speeds up crawls. Only effective with render_js=true. | |
| sitemap_path | No | Explicit path to the sitemap file (e.g., '/sitemap_index.xml'). Use when the sitemap is not at the standard /sitemap.xml location. | |
| cost_controls | No | Cost controls for the entire crawl — cap total spend or pin the scraping tier | |
| respect_robots | No | Respect robots.txt rules for the target domain | |
| max_concurrency | No | Maximum concurrent pages to scrape simultaneously | |
| exclude_patterns | No | Glob patterns — skip URLs whose path matches any (e.g., ['/tag/*', '/author/*']) | |
| extraction_model | No | Per-request LLM model override in provider-specific format (e.g. 'gpt-4o', 'claude-opus-4-5-20251101', 'llama3-70b-8192'). Overrides the model saved in your BYOK key settings for this request only. | |
| include_patterns | No | Glob patterns — only scrape URLs whose path matches at least one (e.g., ['/blog/*', '/docs/*']) | |
| extraction_schema | No | JSON schema for structured extraction on each page | |
| extraction_profile | No | Pre-defined extraction profile applied to every crawled page. 'auto' detects the page type automatically. | |
| include_subdomains | No | Include links to subdomains during discovery |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behaviors: auto-bypassing anti-bot protection (works on Cloudflare), URL discovery via sitemap and link extraction, asynchronous scraping, return of crawl_id for polling, and support for patterns, render_js options, and cost controls. Missing details on rate limits or error handling, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized for a complex tool, with each sentence adding meaningful information. It front-loads the main purpose and then lists features. Could be slightly improved with bullet points or clearer grouping, but it is well-structured and not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 22 parameters, high schema coverage, and no output schema, the description is comprehensive. It covers major use cases, parameter interactions, and return behavior (crawl_id for polling). Minor gap: does not describe output format details beyond 'clean markdown, text, or structured data,' but sufficient for initial selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value beyond schema by explaining render_js='auto' savings, cost_controls for capping or pinning tiers, sitemap_path for non-standard locations, and headers for injection. This enriches understanding and usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Crawl an entire website for RAG, index all pages on a site, or build a knowledge base from a domain.' It uses specific verbs and resources, and distinguishes from siblings like alterlab_scrape (single page) by emphasizing full-site crawling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use the tool (for site crawling, RAG, knowledge base), mentions polling with alterlab_crawl_status, and explains scoping patterns and cost controls. It implies alternatives (e.g., single scrapes via alterlab_scrape) but does not explicitly state when not to use or compare to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_crawl_cancelA
Cancel an ongoing crawl and refund unused pre-debited credits. Already-scraped pages are kept and available via alterlab_crawl_status. Cancelled crawls cannot be resumed.
| Name | Required | Description | Default |
|---|---|---|---|
| crawl_id | Yes | Crawl ID to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses key behaviors: cancellation stops crawling, refunds credits, keeps already-scraped pages (via alterlab_crawl_status), and prohibits resumption. Sufficiently transparent for a simple cancellation tool, though auth or rate limits are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. First sentence captures primary action and refund. Second sentence adds important details about persistence and non-resumability. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema or annotations, the description fully covers what the tool does, what happens to scraped pages, and what cannot be done afterwards. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'crawl_id' with schema coverage 100%. Description adds no extra meaning beyond the schema's 'Crawl ID to cancel'. Baseline 3 is appropriate as schema already documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'cancel', resource 'ongoing crawl', and additional action 'refund unused pre-debited credits'. Distinguishes from sibling tools like alterlab_crawl and alterlab_crawl_status by specifying cancellation and refund behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies when to use (to stop a crawl) and notes that cancelled crawls cannot be resumed, but does not explicitly state when not to use or mention alternative tools. Provides context about already-scraped pages but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_crawl_statusA
Poll the status and results of an ongoing or completed crawl. Call this after alterlab_crawl to check progress and retrieve scraped pages. Status values: queued, running, completed, failed, cancelled. When completed, results contains the scraped page content.
| Name | Required | Description | Default |
|---|---|---|---|
| crawl_id | Yes | Crawl ID returned by alterlab_crawl |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains polling behavior and that results are present when completed, but does not specify idempotency, whether results persist after first read, or any side effects. Adequate but not deep.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Front-loaded with purpose, then adds details on status values and output. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description explains that 'results contains the scraped page content' when completed. Lists status values. Could mention if results are paginated or size limits, but complete enough for a simple status poll tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds context by noting crawl_id is returned by alterlab_crawl, helping the agent understand the parameter source. Slight improvement over bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it polls status and results of a crawl, explicitly naming the action and resource. It distinguishes itself from siblings like alterlab_crawl and alterlab_crawl_cancel by specifying it is the follow-up call for progress checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call this after alterlab_crawl' and lists status values, providing clear context. Does not include explicit when-not-to-use or alternative tools, but given sibling set, this is the only status poll for crawls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_create_sessionA
Create a new stored session for authenticated scraping. Provide cookies from a logged-in browser session to enable scraping behind login walls. The session is stored securely and can be reused across multiple scrape requests via session_id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name for this session (e.g., 'My Amazon Account') | |
| domain | Yes | Domain this session is for (e.g., 'amazon.com') | |
| cookies | Yes | Cookie key-value pairs for authentication (e.g., {"session-id": "abc123", "session-token": "xyz789"}) | |
| user_agent | No | Browser User-Agent string to use with this session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description handles the burden. It mentions secure storage and reusability, but lacks details on conflict handling, idempotency, or session expiration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded with the main action. It efficiently communicates the tool's purpose and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main use case and what the session enables, but does not explicitly state the return value (likely session_id) or address potential conflicts when creating a session with an existing name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond what the schema provides for individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create'), the resource ('a new stored session'), and the purpose ('for authenticated scraping'), distinguishing it from sibling tools like delete_session, list_sessions, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: create a session when you need to scrape behind login walls. However, it does not explicitly state when not to use it or compare with alternatives like refresh_session or validate_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_delete_sessionA
Delete a stored session. This permanently removes the session and its cookies. Use this when a session is no longer needed or has been compromised.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | UUID of the session to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full weight. It discloses that the deletion is permanent and removes cookies, which are critical behavioral traits. No contradictory or missing safety cues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main action, and contains no superfluous words. Every sentence adds value: purpose and usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and no annotations, the description is complete. It covers action, effect, and appropriate use case, leaving no obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the single parameter (session_id as a UUID). The description does not add new semantic information beyond the schema; it simply references the session. With 100% schema coverage, the baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Delete a stored session' and emphasizes permanence, distinguishing it from sibling session tools like create, get, update, or refresh. The verb 'delete' and resource 'session' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use guidance: 'Use this when a session is no longer needed or has been compromised.' This is explicit context, though it does not formally exclude alternatives. However, the purpose is sufficiently distinct from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_disable_beta_featureA
Opt out of a beta feature on your AlterLab account. This operation is idempotent — calling it when not opted in returns success. GA (generally available) features cannot be disabled.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | URL-safe slug of the beta feature to opt out of (e.g., 'v2-extraction', 'stealth-v3'). Use alterlab_list_my_beta_features to see your currently active slugs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses idempotency ('calling it when not opted in returns success') and the limitation on GA features. It does not mention side effects, auth needs, or error behavior, but the operation is simple enough that this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the purpose, then adding idempotency and constraint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers purpose, idempotency, and a constraint. It also references a sibling tool for listing slugs. Minor gaps: no mention of return values or error states, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% since the parameter 'slug' already has a description. The tool description adds no new semantic detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Opt out of a beta feature on your AlterLab account.' It uses a specific verb-resource pair and distinguishes from sibling tools like 'alterlab_enable_beta_feature' by noting that GA features cannot be disabled.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by mentioning idempotency and the constraint that GA features cannot be disabled. It also directs users to 'alterlab_list_my_beta_features' to find valid slugs. However, it does not explicitly contrast with enabling or list all alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_enable_beta_featureA
Opt in to a beta feature on your AlterLab account. Beta features are experimental capabilities available before general release. This operation is idempotent — calling it when already opted in returns success. Use alterlab_list_beta_features to discover available feature slugs.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | URL-safe slug of the beta feature to opt in to (e.g., 'v2-extraction', 'stealth-v3'). Use alterlab_list_beta_features to see available slugs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description mentions idempotency and experimental nature, but does not disclose potential side effects, permissions required, or reversibility (e.g., via 'alterlab_disable_beta_feature'). More behavioral context would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences with no wasted words. It front-loads the action and efficiently adds necessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description adequately covers purpose, parameter guidance, and a related sibling. It could mention the response format, but it's not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds value by providing an example slug format and referencing the list endpoint for discovery, going beyond the schema's minimal description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Opt in to a beta feature'), the resource ('AlterLab account'), and distinguishes it from siblings like 'disable_beta_feature' and 'list_beta_features'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to use 'alterlab_list_beta_features' to discover available slugs, guiding when to use the tool. It does not explicitly state when not to use it, but the context is sufficient for a simple opt-in tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_estimate_costA
Preview the cost of scraping a URL before committing — no credits charged. Returns the predicted anti-bot tier (1-4), estimated cost per request, and confidence level. Call this before scraping protected or unfamiliar sites to avoid surprises. Tier 1 (simple HTTP): $0.0001. Tier 4 (full browser + anti-bot bypass): $0.001. Use render_js and use_proxy flags to see how options affect cost.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to estimate scraping cost for | |
| mode | No | Scraping mode | auto |
| formats | No | Output formats to include in the estimate. Passed to the API but does not currently affect the cost estimate — the endpoint uses URL-pattern heuristics only. 'json_v2' returns a structured section tree. 'rag' returns chunked text for retrieval-augmented generation. 'content' returns body_markdown + content_hash + images + links. 'raw' returns the response body byte-for-byte with no transformation. | |
| render_js | No | Enable JS rendering (forces Tier 4 minimum — no separate add-on charge) | |
| use_proxy | No | Include premium proxy cost (+1 credit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description covers key behavioral facts: no credits charged, returns tier/cost/confidence, explains tier pricing, and honestly notes that the 'formats' parameter doesn't affect cost estimate. With no annotations, this fully compensates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five concise sentences: purpose, returns, usage, tier breakdown, flag behavior. No fluff, each sentence serves a purpose. Front-loaded with core information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects for a cost estimation tool: purpose, return values, pricing tiers, parameter effects, and usage advice. No output schema, but return values are well described. Complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds significant value beyond schema: explains render_js forces Tier 4 minimum, formats don't affect cost, use_proxy adds +1 credit, and describes format options in detail. Schema coverage is 100%, but description enriches each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's purpose: preview scraping cost before committing, with no credit charge. It distinguishes itself from siblings (e.g., alterlab_scrape, alterlab_crawl) by focusing on cost estimation rather than actual scraping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to call this before scraping protected or unfamiliar sites to avoid surprises, and shows how to use flags (render_js, use_proxy) to explore cost implications. This is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_extractA
Extract product data, scrape prices, get structured data from any page content, or pull specific fields like names, emails, and ratings from HTML. Runs AlterLab's extraction pipeline on raw HTML, text, or markdown you already have — does NOT scrape a URL. For scraping + extraction in one step, use alterlab_scrape with extraction_schema instead. Profiles: 'product' (price, title, reviews), 'article' (title, author, body), 'job_posting', 'faq', 'recipe', 'event', 'ecommerce_homepage', 'directory_listing'. Returns JSON data. Use extraction_prompt for natural language extraction (LLM-powered). Use cache='only' to retrieve a previously cached result without calling the LLM.
| Name | Required | Description | Default |
|---|---|---|---|
| cache | No | Cache control for LLM extraction results. 'auto': return cached result if available (default). 'skip': bypass cache lookup, always call LLM (result is still stored). 'only': return cached result or 404 if not cached — never calls the LLM. | auto |
| content | Yes | Raw content to extract from — HTML, text, or markdown. Bring your own pre-fetched content; this endpoint does NOT scrape a URL. | |
| formats | No | Output formats for content transformation. 'json' is best for structured extraction. 'content' returns filtered/cleaned content. 'raw' returns the unprocessed response body. | |
| evidence | No | Include field provenance/evidence for extracted fields (which part of the content each field came from) | |
| cache_ttl | No | TTL for caching this extraction result, in seconds. Defaults to server setting (3600s). Max 86400s (24 hours). | |
| source_url | No | Original URL of the content (for context only — not fetched). Helps the extractor understand the content's domain. | |
| content_type | No | Type of the provided content | html |
| extraction_model | No | Per-request LLM model override in provider-specific format (e.g. 'gpt-4o', 'claude-opus-4-5-20251101', 'llama3-70b-8192'). Overrides the model saved in your BYOK key settings for this request only. | |
| extraction_prompt | No | Natural language instructions for LLM extraction (e.g., 'Extract all product prices and ratings'). Charged at LLM extraction rate when provided. | |
| extraction_schema | No | Custom JSON Schema for extraction. Fields are mapped from content. Overrides extraction_profile when provided | |
| extraction_profile | No | Pre-defined extraction profile. 'product' extracts price/title/reviews, 'article' extracts title/author/body, etc. 'auto' detects the page type. Mutually exclusive with extraction_template. | |
| extraction_provider | No | LLM provider to use for extraction. Selects the matching BYOK key registered at /dashboard/settings/llm-keys. When omitted, the most recently used registered key is used. | |
| extraction_template | No | Shorthand alias for extraction_profile — selects the same pre-built schema template. Mutually exclusive with extraction_profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. It discloses that the tool operates on raw HTML/text/markdown, does not fetch URLs, returns JSON, explains cache behavior (including 'only' mode never calling LLM), and mentions charging for extraction_prompt. However, it lacks details on authentication requirements, rate limits, or idempotency, which would elevate it to 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed and informative, with the core purpose front-loaded. Every sentence adds value, but it could be slightly more structured (e.g., separating profile list from other details). Minor redundancy in explaining extraction_template as an alias for extraction_profile. Still, it is concise given the complexity of 13 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 13 parameters, nested objects, and no output schema. The description covers the main functionality, clearly differentiates from siblings, explains key parameters, and gives usage hints. However, it could elaborate more on the output structure (especially since no output schema) and potential edge cases like error handling. Despite this, it is fairly complete for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value beyond the schema. It explains the mutual exclusivity of extraction_profile and extraction_template, notes that extraction_prompt incurs extra charges, elaborates on cache options, and provides context for profiles. This helps the agent understand parameter semantics beyond simple definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Extract product data, scrape prices, get structured data from any page content, or pull specific fields like names, emails, and ratings from HTML.' It distinguishes itself from sibling alterlab_scrape by explicitly stating it does NOT scrape a URL. The list of profiles and mention of extraction_prompt add further specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool vs alternatives: 'For scraping + extraction in one step, use alterlab_scrape with extraction_schema instead.' It also advises using extraction_prompt for natural language extraction and cache='only' for retrieving cached results. This ensures the agent knows the appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_get_sessionA
Get detailed information about a specific stored session. Returns session status, cookie names, usage statistics (total requests, success rate), expiry info, and notes. Use this to inspect a session before deciding to validate, refresh, or delete it.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | UUID of the session to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the data returned (status, cookie names, usage stats, expiry, notes) and implies a read operation. It does not mention side effects, auth, or rate limits, but for a simple get operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states function and return, second gives usage guidance. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one required parameter, full schema coverage, no output schema, and clear sibling context (CRUD for sessions), the description fully covers what an agent needs to know to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (session_id) with 100% schema coverage (UUID format). The description adds context for why the parameter is needed ('inspect a session') beyond the schema, providing extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information about a specific stored session' and lists specific return fields (status, cookie names, usage statistics, expiry info, notes). It distinguishes from sibling tools by saying 'inspect a session before deciding to validate, refresh, or delete it.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to inspect a session before deciding to validate, refresh, or delete it.' This gives clear context for when to use. It doesn't explicitly exclude scenarios, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_get_usageA
Get a detailed spending breakdown for your AlterLab account — credits consumed today, this week, and this month, plus the top domains by credit consumption. Use this to audit costs, identify expensive domains, and track usage trends. No parameters required — uses your API key for identification.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses that the tool uses the API key for identification and returns specific data points. While read-only nature is implied, it could be explicitly stated. Overall, it provides good behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, use cases, and a note on parameters/authentication. Every sentence adds value; no redundancy. Front-loaded with the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description gives a solid sense of return values (credits by time periods, top domains) and authentication. Could be slightly more explicit about output format or data freshness, but it is sufficiently complete for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0 parameters, and the description confirms 'No parameters required' and explains authentication via API key. This adds value beyond the empty schema, making it clear that no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('detailed spending breakdown for your AlterLab account'), listing exact outputs (credits today/week/month, top domains). It clearly distinguishes from siblings, which are about scraping, crawling, batch operations, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states use cases ('audit costs, identify expensive domains, track usage trends') and notes 'No parameters required'. However, it does not provide explicit exclusions or mention alternative tools, though context from sibling names makes this less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_list_beta_featuresA
List all public beta and GA features available on AlterLab, with your current opt-in state for each. Beta features require opting in; GA features are available to all users. Use alterlab_enable_beta_feature to opt in to any beta feature that interests you.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description transparently states it lists features and opt-in state, implying read-only behavior. Does not disclose performance or rate limits, but sufficient for safe use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with key action and result. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description fully covers what the tool does and its output (list with opt-in state). Refers to sibling for next action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. Description adds nothing about parameters, but baseline 4 is appropriate for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all public beta and GA features with opt-in state, using specific verb 'list' and resource 'features'. It differentiates from sibling 'alterlab_enable_beta_feature' by mentioning that tool for opting in.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use to view features and opt-in state, and suggests 'alterlab_enable_beta_feature' for opting in. Does not explicitly contrast with 'alterlab_list_my_beta_features', but overall guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_list_my_beta_featuresA
List all beta and GA features currently active on your account — a compact slug list for quick checks. Includes all GA features plus any beta features you have opted in to. Use this to verify which features are available before making API calls that require them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description reveals it is a read operation returning a compact slug list. Notes that list includes GA features and opted-in beta features. Lacks details on pagination or format but sufficient for a simple list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with clear purpose: action, content, usage guidance. No redundant words; highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, no-output-schema tool, description fully covers what it does, what it returns, and why to use it. Context with sibling tools is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; schema coverage is 100% trivially. Description adds meaning by explaining the composition of the list (GA + opted-in beta features), which is beyond schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'list' and resource 'beta and GA features active on your account'. It differentiates from sibling 'alterlab_list_beta_features' by specifying scope is only active features on the user's account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: 'to verify which features are available before making API calls that require them'. Does not explicitly name alternatives but context implies use sibling for full list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_list_sessionsA
List all stored sessions for authenticated scraping. Sessions contain cookies for specific domains, allowing you to scrape content that requires login (e.g., Amazon order history, LinkedIn profiles). Use the returned session_id with alterlab_scrape to scrape authenticated pages.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly describes the read-only listing behavior ('List all stored sessions') and adds context about authenticated scraping. No side effects are mentioned, which is appropriate for a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with verb and resource, no filler. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is complete enough. It explains the purpose of sessions (cookies, login) and the workflow with alterlab_scrape. A minor gap: no mention of return format or pagination, but for a list tool this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (0 params, 100% coverage). The description adds no parameter info, which is acceptable since none exist. Baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all stored sessions for authenticated scraping' with a specific verb and resource. It distinguishes from sibling tools like alterlab_create_session, alterlab_delete_session, and alterlab_get_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: to obtain session_id for alterlab_scrape. Implicitly excludes other operations (create, delete, get) via sibling names. Could add explicit when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_mapA
Discover all URLs on a website, get a sitemap, or find specific pages within a large site. Lightweight URL discovery via sitemap parsing and link extraction — no content scraping, no JS rendering. Costs just $0.001 per call regardless of how many URLs are found (up to 50,000). Use this before alterlab_crawl or alterlab_batch to identify which pages to scrape. Returns a flat list of URLs with source (sitemap/link) and depth. Use include_patterns/exclude_patterns to scope discovery to specific sections. Use search to rank URLs by relevance to a query. Use include_metadata=true to also fetch page titles and descriptions. Use sitemap_path to specify a non-standard sitemap location (e.g., '/sitemap_index.xml').
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Starting URL for site discovery | |
| search | No | Query to filter and rank discovered URLs by relevance (returns relevance_score per URL) | |
| sitemap | No | Sitemap handling: include (parse sitemaps + follow links), skip (links only), only (sitemap URLs only) | include |
| max_depth | No | Link-following depth (0 = start page + sitemap only) | |
| max_pages | No | Maximum URLs to discover | |
| sitemap_path | No | Explicit path to the sitemap file (e.g., '/sitemap_index.xml'). Use when the sitemap is not at the standard /sitemap.xml location. | |
| respect_robots | No | Respect robots.txt directives | |
| exclude_patterns | No | Glob patterns — exclude URLs whose path matches any (e.g., ['/tag/*', '/page/*']) | |
| include_metadata | No | Fetch title and meta description for each URL via lightweight GET (adds latency) | |
| include_patterns | No | Glob patterns — only include URLs whose path matches at least one (e.g., ['/docs/*']) | |
| include_subdomains | No | Include URLs from subdomains of the target domain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of disclosing behavioral traits. It states the tool is lightweight, non-scraping, non-rendering, costs $0.001 per call, and returns a flat list with source and depth. It also reveals features like search ranking, metadata fetching, and sitemap path handling, providing comprehensive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of eight sentences, packed with information. It front-loads the primary purpose and then details options. While not overly verbose, it could be more structured (e.g., bullets) for easier scanning. Nonetheless, every sentence adds value, earning a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters and no output schema, the description thoroughly explains the tool's behavior, output format ('Returns a flat list of URLs with source and depth'), and parameter usage. It also covers edge cases like non-standard sitemap paths and suggests usage in conjunction with other tools. This makes it complete for an AI agent's decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining usage patterns for key parameters: 'Use include_patterns/exclude_patterns to scope discovery', 'Use search to rank URLs', 'Use include_metadata=true to also fetch page titles', and 'Use sitemap_path to specify a non-standard sitemap location.' This goes beyond the schema descriptions, justifying a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Discover all URLs on a website, get a sitemap, or find specific pages within a large site.' It uses specific verbs and describes the resource (URLs on a site) and explicitly distinguishes from sibling tools like alterlab_crawl and alterlab_batch by advising to use this tool before them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: 'Use this before alterlab_crawl or alterlab_batch to identify which pages to scrape.' It also clarifies what it does not do: 'no content scraping, no JS rendering.' While it doesn't explicitly state when not to use, the context and alternatives are clear, earning a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_refresh_sessionA
Refresh a session by rotating its cookies and resetting failure counters. This is the preferred way to update cookies after re-authenticating in your browser. The session status is reset to active. If cookies are omitted, only the failure counters are reset.
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | No | New cookie key-value pairs to replace the old ones. If omitted, only failure counters are reset. | |
| headers | No | Updated custom headers to include with the session | |
| session_id | Yes | UUID of the session to refresh |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the session status is reset to active, and explains the effect of omitting cookies. It could mention if existing cookies are immediately invalidated or any authentication requirements, but overall it is transparent about core behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action. Every word is purposeful, with no redundancy. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description covers the main behavior and the optional cookie nuance. It could mention the return value or side effects, but it is sufficiently complete for an agent to understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that omitting cookies only resets failure counters, and that headers are updated. This provides context beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb "Refresh" and the resource "session" with specific actions (rotating cookies, resetting failure counters). It distinguishes from sibling tools like alterlab_update_session by specifying the rotation and reset behavior, and by labeling it as the preferred way to update cookies after re-authentication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: "after re-authenticating in your browser." It also explains the behavior when cookies are omitted. However, it does not explicitly state when not to use this tool or mention alternative tools for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_scrapeA
Get data from any website, bypass Cloudflare and anti-bot protection, scrape JavaScript-rendered pages, or fetch content from dynamic single-page apps. Turn any URL into clean, LLM-ready markdown — or get text, HTML, JSON, and structured sections. Automatically bypasses anti-bot protection (Cloudflare, Akamai, DataDome, PerimeterX, hCaptcha) with intelligent 4-tier escalation — no manual configuration needed. Cost-efficient: starts at $0.0001/page for simple sites, auto-escalates only when protection is detected. Returns markdown by default — optimized for LLM context. Supports GET (default) and POST via the method parameter. Use method='POST' with body for GraphQL APIs, REST endpoints, and form submissions. Use content_type to set the POST body Content-Type (json, urlencoded, graphql, plain). Use render_js=true to scrape dynamic pages, JavaScript-heavy sites (React, Angular, Vue, SPAs). Use render_js='auto' for mixed sites to detect JS needs per-page (saves 30-60%). Use use_proxy=true for geo-restricted or heavily protected sites. Use formats=['json_v2'] for a structured section tree (headings + content blocks). Use formats=['rag'] for chunked text optimized for RAG pipelines. Use formats=['raw'] for the raw response body without extraction. Use formats=['content'] for AI/KB pipelines — returns body_markdown, content_hash, images, links. Use extraction_schema to extract structured fields from the page using LLM. Use extraction_prompt for natural language extraction instructions. Use extraction_profile for pre-built templates (product, article, job_posting, etc.). Use evidence=true to include source passages alongside extracted fields. Use cache=true and cache_ttl to enable response caching. Use cost_controls to cap spending, pin a tier, or set a time budget. Supports authenticated scraping via session_id or inline cookies. Use scroll_to_load=true for infinite-scroll pages. Use location.country to scrape geo-targeted content from any region. Use prefer_cost=true to minimize credit spend (starts from cheapest tier). Use prefer_speed=true to skip to a fast reliable tier immediately. Use fail_fast=true to error instead of auto-escalating to expensive tiers. Use force_refresh=true to bypass cache and always fetch live content. Use promote_schema_org=true to prefer Schema.org JSON-LD over LLM extraction on structured pages. Use estimate_first=true to run a free cost estimate before scraping (prepended to the result).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to scrape | |
| body | No | Request body for POST requests. For GraphQL: JSON string with 'query' and optional 'variables' fields (e.g., '{"query": "{ user { id name } }"}').For REST APIs: JSON-encoded payload string. For form submissions: URL-encoded key=value pairs (e.g., 'name=Alice&email=alice@example.com'). Omit for GET requests. | |
| mode | No | Scraping mode: auto (recommended), html, js (headless browser), pdf, or ocr | auto |
| cache | No | Enable caching for this request. When true, repeat requests with identical parameters may return cached results. Only use for idempotent requests (GET pages, read-only POSTs). | |
| method | No | HTTP method for the request. Default GET (standard page scraping). Use POST for GraphQL endpoints, form submissions, and REST API calls. When using POST, provide body with the request payload. POST costs 1.5x base tier price. | GET |
| cookies | No | Inline cookies as key-value pairs for authenticated scraping (e.g., {"session_token": "abc123"}). Use this for one-off requests; use session_id for reusable sessions. | |
| formats | No | Output formats. 'markdown' is best for LLM consumption. 'json_v2' returns a structured section tree (headings + content blocks). 'rag' returns chunked text optimized for retrieval-augmented generation. 'raw' returns the raw response body without extraction. 'content' returns body_markdown + content_hash + images + links for AI/KB pipelines. | |
| timeout | No | Request timeout in seconds (1-300) | |
| evidence | No | Include provenance/evidence snippets alongside extracted fields. Each extracted value will include the source text passage it was derived from. Requires extraction_schema or extraction_prompt. | |
| location | No | Geo-targeting parameters for localized content scraping. Controls proxy country routing, Accept-Language header, and browser locale. | |
| template | No | Named extraction template to apply to the scrape result. Accepts standard template names (e.g. 'product', 'article', 'job_posting') or a custom template name registered in your account. When provided, routes the request through template-based extraction. | |
| wait_for | No | CSS selector to wait for before extracting content (e.g., '#main-content') | |
| cache_ttl | No | Cache TTL in seconds (60–86400). Defaults to 3600 (60 min) when cache=true. Requires cache=true. | |
| fail_fast | No | Fail immediately if the page requires an expensive tier (browser/captcha) instead of auto-escalating. Use this to protect against unexpected credit spend on protected pages. Returns an error with the required tier instead of automatically upgrading. | |
| render_js | No | Render JavaScript using headless browser (forces Tier 4 minimum — no separate add-on charge). Required for JS-heavy sites. Set to 'auto' for smart detection (probes each page, only renders JS-heavy pages with browser — saves 30-60% on mixed sites). | |
| use_proxy | No | Route through premium proxy (+$0.0002). Helps bypass geo-restrictions and anti-bot | |
| session_id | No | UUID of a stored session for authenticated scraping. Use alterlab_list_sessions to find available sessions. The session's cookies will be injected into the request. | |
| prefer_cost | No | Optimize for lowest cost — try cheaper tiers first before escalating. Best for non-time-sensitive scrapes where minimizing credit spend matters. Mutually exclusive intent with prefer_speed. | |
| block_images | No | Block image downloads during browser rendering. Reduces proxy bandwidth and speeds up scrapes. Only effective with render_js=true. | |
| content_type | No | Content-Type header for the request body. Defaults to 'application/json' when body is provided. Use 'application/graphql' for raw GraphQL queries. Use 'application/x-www-form-urlencoded' for HTML form submissions. Requires body to be set. | |
| prefer_speed | No | Optimize for speed — skip to a reliable tier immediately instead of escalating from Tier 1. Best for time-sensitive scrapes where latency matters more than cost. Mutually exclusive intent with prefer_cost. | |
| scroll_count | No | Number of scroll iterations when scroll_to_load is enabled (1-10, default 3) | |
| cost_controls | No | Fine-grained cost and tier controls. Use to cap spending, pin a tier, or trade off cost vs speed. Prefer these over the top-level prefer_cost/prefer_speed/fail_fast fields for full control. | |
| force_refresh | No | Bypass the cache and always fetch a fresh copy of the page. Use when you need real-time content and a cached result would be stale. | |
| proxy_country | No | ISO country code for geo-targeting (e.g., 'US', 'DE'). Requires use_proxy=true | |
| estimate_first | No | Run a cost estimate before scraping and include it in the response. Adds one lightweight API call (~50ms) with no credit charge. The estimated tier, cost, and confidence are prepended to the scrape result. Useful for unfamiliar or potentially expensive sites — see cost before committing. | |
| filter_content | No | Apply quality filtering to extracted content. When false (default), returns all parsed content without quality thresholds (lossless mode). When true, filters low-quality boilerplate. | |
| scroll_to_load | No | Scroll page to trigger lazy-loaded content (requires render_js). Performs explicit viewport-height scrolls to load dynamic content. Adds ~2-3s latency. | |
| extraction_model | No | Per-request LLM model override in provider-specific format (e.g. 'gpt-4o', 'claude-opus-4-5-20251101', 'llama3-70b-8192'). Overrides the model saved in your BYOK key settings for this request only. | |
| include_raw_html | No | Include raw HTML in the response alongside formatted content | |
| extraction_prompt | No | Natural language extraction instruction. Describes what fields to extract from the page. Mutually exclusive with extraction_schema. Example: "Extract the product name, price, and availability". | |
| extraction_schema | No | JSON schema for structured extraction. The API extracts fields matching this schema from the scraped page using LLM. Result is returned in extraction_result. Example: { "title": "string", "price": "number", "in_stock": "boolean" } | |
| extraction_profile | No | Pre-built extraction schema template. auto: detect best template. product: e-commerce product details. article: news/blog article fields. job_posting: job listing fields. faq: FAQ entries. recipe: recipe ingredients and instructions. event: event details. ecommerce_homepage: homepage product listings. directory_listing: directory/listing page entries. | |
| max_response_bytes | No | Soft cap on raw response body size in bytes. When the downloaded HTML exceeds this value it is truncated before extraction. Default: 5 MB (5242880). Set to 0 for no limit. Maximum: 50 MB (52428800). Useful for very large pages where you only need the beginning of the content. | |
| promote_schema_org | No | Use Schema.org JSON-LD/Microdata as the primary structured-data source when present. Promotes machine-readable metadata embedded in the page over LLM extraction. Most effective on e-commerce, recipe, and news article pages. | |
| extraction_provider | No | LLM provider to use for extraction. Selects the matching BYOK key registered at /dashboard/settings/llm-keys. When omitted, the most recently used registered key is used automatically. Requires extraction_schema or extraction_prompt. | |
| remove_cookie_banners | No | Remove cookie consent banners from HTML before content extraction (free, enabled by default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It details intelligent anti-bot escalation, cost mechanics, caching policies, and various parameter effects. However, it does not explicitly state that the tool is read-only or describe potential side effects (e.g., no destructive operations), which would have earned a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively long (over 1000 words) and contains a dense list of parameter usage examples that could be more succinct. While the first sentence is effective, the rest is verbose and mixes crucial behavioral info with parameter-level details, reducing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the complexity (37 parameters, nested objects, no output schema), the description covers essential behavioral aspects (caching, cost, authentication, geo-targeting, error escalation). It lacks an explicit description of the output format beyond 'markdown by default', but mentions alternatives. Minor gaps: no error handling details or response structure beyond formats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minor extra context like pricing ('starts at $0.0001/page') and high-level feature summaries, but largely repeats or elaborates on what is already in the schema. It does not significantly enhance understanding of parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get data from any website', 'scrape', 'fetch') and resource ('any website', 'JavaScript-rendered pages', 'dynamic single-page apps'). It distinguishes itself from siblings by emphasizing anti-bot bypass and JavaScript rendering capabilities, which are unique among the listed tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use alterlab_scrape versus alternatives like alterlab_crawl, alterlab_extract, or alterlab_screenshot. There is no 'use when' or 'consider using X instead' language, leaving the agent to infer usage from the lengthy parameter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_screenshotA
Take a screenshot of any website, capture a webpage as an image, or snapshot a URL visually. Works on anti-bot protected sites (Cloudflare, DataDome, etc.) — uses the same bypass engine as alterlab_scrape. Returns a full-page PNG screenshot directly in the conversation — rendered with a real headless browser. Use wait_for to wait for a specific element before capturing. Use wait_until to control page load timing (networkidle, domcontentloaded, load).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to take a screenshot of | |
| wait_for | No | CSS selector to wait for before taking screenshot | |
| wait_until | No | Page load event to wait for before screenshot | networkidle |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes returning a full-page PNG screenshot via a real headless browser and working on anti-bot sites. No annotations provided, so description carries the burden; it covers key behavioral traits but could mention performance or cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each providing essential information: purpose, anti-bot capability, output type, and parameter usage. No wasted words; front-loaded with main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description adequately explains return value (full-page PNG in conversation). All parameters are described in schema and elaborated in text. Context is sufficient for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds usage context (e.g., 'Use wait_for to wait for a specific element') that goes beyond schema definitions, providing practical guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool takes a screenshot of any website, captures a webpage as an image, or snapshots a URL visually. It distinguishes from siblings by mentioning anti-bot bypass capability and similarity to alterlab_scrape.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on using wait_for and wait_until parameters. Implicitly distinguishes from alterlab_scrape for visual capture vs. data extraction, but lacks explicit when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_searchA
Search the web, find information online, look up any topic, or research a subject across the internet. Returns search results with URLs, titles, and snippets from multiple search engines. Uses AlterLab's SERP engine with Google/Bing/DuckDuckGo multi-engine failover for reliable results. Costs $0.001 per search query. Set scrape_results=true to also scrape each result page (with anti-bot bypass) and get full content — each page is billed at its normal scraping tier cost. Use domain to restrict results to a specific site (equivalent to site: operator). Use time_range to filter by recency (hour/day/week/month/year). Use safe_search=true to filter adult content from results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Result page number (1-indexed). Page 2 returns results 11-20, etc. | |
| query | Yes | Search query (max 500 characters) | |
| domain | No | Restrict results to a specific domain (applied as site: prefix, e.g. 'docs.example.com') | |
| country | No | ISO 3166-1 alpha-2 country code for geo-targeted results (e.g., 'US', 'GB', 'DE') | |
| formats | No | Output formats when scrape_results=true | |
| language | No | Language code for results (e.g., 'en', 'fr', 'de') | |
| time_range | No | Filter results by recency | |
| num_results | No | Number of results to return (1-30) | |
| safe_search | No | Enable safe search filtering to exclude adult content from results. Defaults to the search engine's own safe-search setting when omitted. | |
| scrape_results | No | If true, scrape each result page and include content in response. Each page is billed at its scraping tier cost in addition to the base search fee. | |
| extraction_schema | No | JSON schema for structured extraction when scrape_results=true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It discloses cost ($0.001 per query), multi-engine failover, anti-bot bypass on scrape, and billing for optional scraping. It does not mention rate limits or caching, but the disclosed information is substantial and free of contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that efficiently conveys purpose, behavior, cost, and parameter usage. It is front-loaded with the core function. While it could benefit from bullet points for readability, it remains concise without redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters, no output schema, and no annotations, the description is quite complete. It explains the search result contents, cost, optional scraping, and key parameters. It could briefly mention pagination (page parameter behavior) but that is covered in the schema. Overall, it provides sufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining domain as 'site: operator', time_range for recency, safe_search for adult content filtering, and scrape_results for full page scraping. This exceeds the baseline by providing practical context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search the web, find information online, look up any topic, or research a subject across the internet.' It specifies the return format (URLs, titles, snippets) and distinguishes itself from sibling tools like alterlab_scrape by focusing on search rather than scraping a specific page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use this tool by detailing its capabilities (multi-engine failover, cost, optional scraping). It explains parameter usage (domain, time_range, safe_search) but does not explicitly exclude use cases better served by sibling tools (e.g., alterlab_scrape for known URLs). However, the context makes the typical use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_update_sessionA
Update a stored session's properties. You can change the name, rotate cookies, update custom headers, set a new expiration, or add notes. When cookies are provided, they replace ALL existing cookies (not merged). Use this instead of delete+recreate when you need to rotate credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the session | |
| notes | No | Notes or description for this session | |
| cookies | No | New cookie key-value pairs — replaces ALL existing cookies (e.g., {"session-id": "new123", "session-token": "newxyz"}) | |
| headers | No | New custom headers — replaces ALL existing headers | |
| expires_at | No | New expiration date in ISO 8601 format (e.g., '2026-12-31T23:59:59Z') | |
| session_id | Yes | UUID of the session to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that cookies and headers replace ALL existing values (not merged), and mentions rotating credentials. It could be improved by explicitly stating the session must exist, but that is implied by the required session_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and front-loaded: first sentence states purpose, then lists properties, then highlights key behavior, and ends with usage guidance. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers usage, parameter behavior (including replacement) and when to use vs alternatives. It does not explain return values or error cases, but those are less critical for this tool. Overall, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds critical context beyond schema, such as 'replaces ALL existing cookies' and provides an example for the cookies parameter. This clarifies the non-merge behavior, adding significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a session's properties and lists specific changeable aspects (name, cookies, headers, expiration, notes). It also distinguishes from the sibling tool by suggesting this over delete+recreate for credential rotation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool (to update properties, rotate credentials) and contrasts it with the alternative of delete+recreate. It also warns about replacement behavior for cookies and headers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alterlab_validate_sessionA
Validate whether a stored session is still active and its cookies are valid. Run this before scraping if you suspect a session may have expired. Returns the session status and a reason if invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | UUID of the session to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it checks session activity and cookie validity, returns status and reason if invalid. No annotations provided, so description carries burden; no side effects mentioned but validation is inherently read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers purpose, usage context, and return information for a simple validation tool with one parameter and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (session_id) with 100% schema description coverage. The description does not add meaningful detail beyond what the schema already provides (UUID for session). Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states validation of session activity and cookie validity. Distinguishes from sibling tools like create, delete, refresh, get by focusing solely on checking status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Run this before scraping if you suspect a session may have expired,' providing clear context for use. No explicit exclusions but implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose, from scraping individual URLs (alterlab_scrape) to batch operations (alterlab_batch vs alterlab_batch_scrape) and account management (alterlab_check_balance). Descriptions clearly differentiate overlapping tools like the two batch methods.
All tools follow a consistent 'alterlab_' prefix with a verb_noun pattern (e.g., alterlab_crawl, alterlab_crawl_status, alterlab_create_session). No mixing of conventions or case styles.
25 tools cover a comprehensive scraping service including main operations, session management, account features, and beta controls. While slightly above the typical 15-tool range, each tool serves a clear purpose in the ecosystem.
The tool set covers core workflows: scraping (single, batch, crawl), URL discovery, search, extraction, screenshots, and account management. Minor gaps exist, such as no listing of all crawls or batches, but essential operations are present.
Maintenance
Related MCP Connectors
Crawl, scrape, search the web, and automate browsers at scale with anti-bot bypass.
Web scraping for AI agents. Extract text and metadata from any URL worldwide. $0.005/page.
Hundreds of scraping & data APIs through one key. USD pay-per-request, normalized schemas, failover.
Automate cloud browsers to navigate websites, interact with elements, and extract structured data.…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables web scraping and document processing with JavaScript execution, anti-detection measures, batch processing, and structured data extraction. Supports multiple formats including markdown, HTML, screenshots, and handles PDFs with OCR capabilities.4MIT
- AlicenseBqualityBmaintenanceEnables web scraping and data extraction from websites with geographic flexibility, privacy features, and anti-detection capabilities. Supports scraping general websites, Google Search, Amazon Search, and Reddit with customizable parameters for rendering, geolocation, and locale.3014635ISC
- AlicenseAqualityBmaintenanceEnables AI agents to scrape any website by providing tools for JavaScript rendering, antibot bypass, and automatic captcha solving. It supports synchronous, asynchronous, and batch scraping operations with built-in proxy rotation.5207MIT
- AlicenseNot gradedqualityFmaintenanceEnables intelligent web scraping with support for static pages, JavaScript-rendered SPAs, and natural language data extraction.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RapierCraft/alterlab-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server