Skip to main content
Glama
RapierCraft

alterlab-mcp-server


One-Line Install

Claude Code

claude mcp add alterlab -- npx -y alterlab-mcp-server@latest

Then 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 below

Smithery

npx -y @smithery/cli install alterlab-mcp-server --client claude

Related 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:

  1. Curl ($0.0002/req) — Direct HTTP for static pages, RSS feeds, public APIs

  2. HTTP ($0.0003/req) — TLS fingerprint rotation for moderately protected sites

  3. Stealth ($0.0005/req) — Browser impersonation for Cloudflare/DataDome-protected sites

  4. Light JS ($0.0007/req) — Lightweight JS extraction from server-rendered HTML

  5. 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 claude

Get Your API Key

  1. Sign up free — $1 free balance on signup

  2. Go to Dashboard → API Keys and copy your key

  3. Paste it into the ALTERLAB_API_KEY field 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

url

string

required

URL to scrape

mode

auto | html | js | pdf | ocr

auto

Scraping mode

formats

(text|json|html|markdown)[]

["markdown"]

Output formats

render_js

boolean

false

Use headless browser (+3 credits)

use_proxy

boolean

false

Premium proxy (+1 credit)

proxy_country

string

—

ISO country code for geo-targeting (e.g., US, DE)

wait_for

string

—

CSS selector to wait for before extraction

timeout

number

90

Timeout in seconds (1-300)

include_raw_html

boolean

false

Include raw HTML alongside formatted content

session_id

string (UUID)

—

Stored session ID for authenticated scraping

cookies

Record<string, string>

&mdash;

Inline cookies for one-off authenticated requests

alterlab_extract &mdash; Extract Structured Data

Extract structured fields from any webpage using pre-built profiles or custom JSON Schema. Returns clean JSON &mdash; ready for databases, spreadsheets, or downstream processing.

"Extract the product name, price, and rating from this Amazon page"

Parameter

Type

Default

Description

url

string

required

URL to extract from

extraction_profile

enum

auto

Profile: product, article, job_posting, faq, recipe, event

extraction_schema

object

&mdash;

Custom JSON Schema for structured output

extraction_prompt

string

&mdash;

Natural language extraction instructions

render_js

boolean

false

Use headless browser

use_proxy

boolean

false

Premium proxy

Extraction profiles:

  • Product &mdash; name, price, currency, rating, reviews, availability, images, description

  • Article &mdash; title, author, published date, body text, featured image

  • Job Posting &mdash; title, company, location, salary, description, requirements

  • FAQ &mdash; question-answer pairs

  • Recipe &mdash; ingredients, instructions, prep time, servings

  • Event &mdash; name, date, location, description, organizer

alterlab_screenshot &mdash; Screenshot Any Page

Take a full-page screenshot of any URL. Returns a PNG image directly in the conversation &mdash; no URLs to copy, no files to download.

"Take a screenshot of our landing page at https://alterlab.io"

Parameter

Type

Default

Description

url

string

required

URL to screenshot

wait_for

string

&mdash;

CSS selector to wait for before capture

wait_until

enum

networkidle

networkidle, domcontentloaded, or load

alterlab_estimate_cost &mdash; 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

url

string

required

URL to estimate

mode

enum

auto

Scraping mode

render_js

boolean

false

Include JS rendering cost

use_proxy

boolean

false

Include proxy cost

alterlab_check_balance &mdash; Check Your Credits

Check your account balance, total deposited, and total spent. No parameters needed.

"Check my AlterLab balance"

alterlab_list_sessions &mdash; 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 &mdash; 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

name

string

required

Human-readable name (e.g., "My Amazon Account")

domain

string

required

Domain (e.g., "amazon.com")

cookies

Record<string, string>

required

Cookie key-value pairs

user_agent

string

&mdash;

Browser User-Agent to use with this session

alterlab_validate_session &mdash; 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

session_id

string (UUID)

required

Session ID to validate

alterlab_delete_session &mdash; Delete a Session

Permanently delete a stored session and its cookies.

"Delete session abc-123-def"

Parameter

Type

Default

Description

session_id

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

  1. Create a session with cookies from a logged-in browser using alterlab_create_session

  2. Scrape authenticated pages by passing the session_id to alterlab_scrape

  3. Manage 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 &mdash; 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

ALTERLAB_API_KEY

Yes

&mdash;

Your API key (get one free)

ALTERLAB_API_URL

No

https://api.alterlab.io

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 &mdash; 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 &mdash; like web scraping &mdash; 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 &mdash; 5-20x cheaper than most scraping APIs &mdash; 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 &mdash; 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 &mdash; headings, tables, lists, links &mdash; 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 ALTERLAB_API_KEY is set correctly

402 Insufficient Credits

Balance too low

Run alterlab_check_balance, add funds

403 Forbidden

Site blocked the request

Try render_js: true + use_proxy: true

429 Rate Limited

Too many requests

Automatic retry with backoff

504 Gateway Timeout

Scrape took too long

Increase timeout, simplify request


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 build

Support

License

MIT

Available Tools

25 tools
alterlab_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesList of URLs to scrape (max 100)
webhook_urlNoWebhook URL to receive batch.completed event when all jobs finish

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesList of URLs to scrape (max 20). All results are returned synchronously.
formatsNoOutput formats applied to every URL. 'markdown' is best for LLM consumption.
timeoutNoRequest timeout in seconds per URL (1-300).
render_jsNoRender JavaScript using headless browser for all URLs. Required for JS-heavy sites. Increases cost to tier 4 (~$0.001/req).
use_proxyNoRoute all requests through premium proxy (+~$0.0002/req).
max_concurrentNoMaximum number of URLs to scrape in parallel (1-10, default 3). Higher values finish faster but consume more concurrent connections.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
batch_idYesBatch ID returned by alterlab_batch

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesStart URL for the crawl
formatsNoOutput formats for each scraped page
headersNoCustom HTTP headers injected into every page request during the crawl (e.g., {"Authorization": "Bearer token"}). Maximum 50 headers.
sitemapNoSitemap mode: include (default), skip (link extraction only), only (sitemap URLs only)include
timeoutNoPer-page request timeout in seconds (1-300)
wait_forNoCSS selector to wait for before extracting each page (e.g., '#main-content'). Applied to all pages in the crawl.
max_depthNoMaximum link-following depth from start URL (0 = start page only)
max_pagesNoMaximum number of pages to scrape
render_jsNoRender JavaScript on crawled pages. true=always (Tier 4), false=never, auto=smart detection per page
use_proxyNoRoute all crawl requests through premium proxy
webhook_urlNoWebhook URL to notify on crawl completion
block_imagesNoBlock image downloads during browser rendering on each crawled page. Reduces proxy bandwidth and speeds up crawls. Only effective with render_js=true.
sitemap_pathNoExplicit path to the sitemap file (e.g., '/sitemap_index.xml'). Use when the sitemap is not at the standard /sitemap.xml location.
cost_controlsNoCost controls for the entire crawl — cap total spend or pin the scraping tier
respect_robotsNoRespect robots.txt rules for the target domain
max_concurrencyNoMaximum concurrent pages to scrape simultaneously
exclude_patternsNoGlob patterns — skip URLs whose path matches any (e.g., ['/tag/*', '/author/*'])
extraction_modelNoPer-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_patternsNoGlob patterns — only scrape URLs whose path matches at least one (e.g., ['/blog/*', '/docs/*'])
extraction_schemaNoJSON schema for structured extraction on each page
extraction_profileNoPre-defined extraction profile applied to every crawled page. 'auto' detects the page type automatically.
include_subdomainsNoInclude links to subdomains during discovery

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
crawl_idYesCrawl ID to cancel

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
crawl_idYesCrawl ID returned by alterlab_crawl

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable name for this session (e.g., 'My Amazon Account')
domainYesDomain this session is for (e.g., 'amazon.com')
cookiesYesCookie key-value pairs for authentication (e.g., {"session-id": "abc123", "session-token": "xyz789"})
user_agentNoBrowser User-Agent string to use with this session

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesUUID of the session to delete

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesURL-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

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesURL-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

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to estimate scraping cost for
modeNoScraping modeauto
formatsNoOutput 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_jsNoEnable JS rendering (forces Tier 4 minimum — no separate add-on charge)
use_proxyNoInclude premium proxy cost (+1 credit)

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cacheNoCache 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
contentYesRaw content to extract from — HTML, text, or markdown. Bring your own pre-fetched content; this endpoint does NOT scrape a URL.
formatsNoOutput formats for content transformation. 'json' is best for structured extraction. 'content' returns filtered/cleaned content. 'raw' returns the unprocessed response body.
evidenceNoInclude field provenance/evidence for extracted fields (which part of the content each field came from)
cache_ttlNoTTL for caching this extraction result, in seconds. Defaults to server setting (3600s). Max 86400s (24 hours).
source_urlNoOriginal URL of the content (for context only — not fetched). Helps the extractor understand the content's domain.
content_typeNoType of the provided contenthtml
extraction_modelNoPer-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_promptNoNatural language instructions for LLM extraction (e.g., 'Extract all product prices and ratings'). Charged at LLM extraction rate when provided.
extraction_schemaNoCustom JSON Schema for extraction. Fields are mapped from content. Overrides extraction_profile when provided
extraction_profileNoPre-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_providerNoLLM 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_templateNoShorthand alias for extraction_profile — selects the same pre-built schema template. Mutually exclusive with extraction_profile.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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

Schema coverage is 100%, but the description adds significant 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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesUUID of the session to retrieve

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesStarting URL for site discovery
searchNoQuery to filter and rank discovered URLs by relevance (returns relevance_score per URL)
sitemapNoSitemap handling: include (parse sitemaps + follow links), skip (links only), only (sitemap URLs only)include
max_depthNoLink-following depth (0 = start page + sitemap only)
max_pagesNoMaximum URLs to discover
sitemap_pathNoExplicit path to the sitemap file (e.g., '/sitemap_index.xml'). Use when the sitemap is not at the standard /sitemap.xml location.
respect_robotsNoRespect robots.txt directives
exclude_patternsNoGlob patterns — exclude URLs whose path matches any (e.g., ['/tag/*', '/page/*'])
include_metadataNoFetch title and meta description for each URL via lightweight GET (adds latency)
include_patternsNoGlob patterns — only include URLs whose path matches at least one (e.g., ['/docs/*'])
include_subdomainsNoInclude URLs from subdomains of the target domain

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cookiesNoNew cookie key-value pairs to replace the old ones. If omitted, only failure counters are reset.
headersNoUpdated custom headers to include with the session
session_idYesUUID of the session to refresh

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to scrape
bodyNoRequest 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.
modeNoScraping mode: auto (recommended), html, js (headless browser), pdf, or ocrauto
cacheNoEnable 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).
methodNoHTTP 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
cookiesNoInline 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.
formatsNoOutput 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.
timeoutNoRequest timeout in seconds (1-300)
evidenceNoInclude 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.
locationNoGeo-targeting parameters for localized content scraping. Controls proxy country routing, Accept-Language header, and browser locale.
templateNoNamed 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_forNoCSS selector to wait for before extracting content (e.g., '#main-content')
cache_ttlNoCache TTL in seconds (60–86400). Defaults to 3600 (60 min) when cache=true. Requires cache=true.
fail_fastNoFail 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_jsNoRender 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_proxyNoRoute through premium proxy (+$0.0002). Helps bypass geo-restrictions and anti-bot
session_idNoUUID 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_costNoOptimize 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_imagesNoBlock image downloads during browser rendering. Reduces proxy bandwidth and speeds up scrapes. Only effective with render_js=true.
content_typeNoContent-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_speedNoOptimize 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_countNoNumber of scroll iterations when scroll_to_load is enabled (1-10, default 3)
cost_controlsNoFine-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_refreshNoBypass 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_countryNoISO country code for geo-targeting (e.g., 'US', 'DE'). Requires use_proxy=true
estimate_firstNoRun 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_contentNoApply 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_loadNoScroll page to trigger lazy-loaded content (requires render_js). Performs explicit viewport-height scrolls to load dynamic content. Adds ~2-3s latency.
extraction_modelNoPer-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_htmlNoInclude raw HTML in the response alongside formatted content
extraction_promptNoNatural 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_schemaNoJSON 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_profileNoPre-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_bytesNoSoft 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_orgNoUse 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_providerNoLLM 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_bannersNoRemove cookie consent banners from HTML before content extraction (free, enabled by default)

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness2/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to take a screenshot of
wait_forNoCSS selector to wait for before taking screenshot
wait_untilNoPage load event to wait for before screenshotnetworkidle

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the session
notesNoNotes or description for this session
cookiesNoNew cookie key-value pairs — replaces ALL existing cookies (e.g., {"session-id": "new123", "session-token": "newxyz"})
headersNoNew custom headers — replaces ALL existing headers
expires_atNoNew expiration date in ISO 8601 format (e.g., '2026-12-31T23:59:59Z')
session_idYesUUID of the session to update

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesUUID of the session to validate

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

A4.1/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    4
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables 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.
    30
    146
    35
    ISC

Latest Blog Posts

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