metalift-mcp
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@metalift-mcpscrape https://example.com into markdown"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@metalift/mcp
Metalift MCP server for AI agents. Exposes scrape, crawl, map, and batch tools over stdio for Cursor, Claude Desktop, and other MCP clients.
What is Metalift?
Metalift Cloud is a hosted web context platform — scrape, crawl, and map sites into LLM-ready markdown for AI agents. This MCP server connects your AI client to the Metalift API.
Related MCP server: Crawl4AI RAG MCP Server
Get an API key
Sign up for Metalift Cloud and verify your email.
Complete onboarding and copy your API key from Dashboard → API keys.
New accounts receive 1,000 free credits/month. Set METALIFT_API_KEY in your MCP config (see below). Do not commit keys to git.
Install
Published on npm as @metalift/mcp. Default config uses npx:
{
"mcpServers": {
"metalift": {
"command": "npx",
"args": ["-y", "@metalift/mcp"],
"env": {
"METALIFT_API_URL": "https://api.metalift.ai",
"METALIFT_API_KEY": "YOUR_API_KEY"
}
}
}
}Claude Desktop: paste the same JSON into claude_desktop_config.json (Settings → Developer → Edit Config). See MCP setup — Claude Desktop and examples/claude-mcp.json.
Corporate Windows / SSL inspection: if npx fails with UNABLE_TO_VERIFY_LEAF_SIGNATURE, install locally and use node — see examples/claude-mcp-local.json / cursor-mcp-local.json and MCP setup troubleshooting.
Troubleshooting
Error | Cause | Fix |
| Cursor IDE bug on Windows | Reload window, restart Cursor — details |
| Corporate SSL inspection blocks npm | Local install + |
401 / 402 at runtime | Auth or billing | Check API key and subscription |
Full guide: packages/platform-web/docs/mcp-setup.md.
Web search vs scrape
Search and scrape are separate tools with separate billing:
metalift_web_search— returns up to 10 search snippets (2 credits, English by default). Review titles and snippets first.metalift_scrape— fetches page content for URLs you choose (1+ credits per URL). Defaultresponse_detail=compact(~16k chars, no link lists). Usestandardfor full articles orfullfor raw JSON with all links.
Do not auto-scrape every search result. See Web search for agent workflow examples.
Environment variables
Variable | Description |
| Metalift scrape API base URL (default: |
| Bearer token for authenticated API access |
Tools
Tool | Description |
| Scrape a single URL (default: fast direct static markdown, |
| Scrape multiple URLs (same |
| Crawl a website |
| Discover site URLs from page HTML links |
| Fetch XML sitemap URLs (robots.txt / sitemap.xml) |
| Web search — top 10 SERP results (title, url, snippet). 2 credits per search. Does not fetch page content; use |
| Poll async jobs |
| List scrape strategies |
| Store browser session cookies for a domain |
| Warm WAF/retail cookies |
| List stored domain sessions |
Available Tools
11 toolsmetalift_batch_scrapeBatch Scrape URLsARead-only
Scrape up to 100 URLs in parallel (billed per URL). Default response_detail=compact. Use async=true for background jobs; wait=true blocks with progress. For JS-heavy pages set strategy=auto in scrape_options. You are solely responsible for complying with website terms, robots.txt, copyright, and data protection laws when using scraped content.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | URLs to scrape in parallel | |
| wait | No | When async=true, wait for completion with progress updates (default true). | |
| async | No | Run as background job (returns job id) | |
| scrape_options | No | Shared scrape options applied to every URL in the batch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description adds complementary context: billing per URL, default response_detail, async/wait behavior, and a strategy recommendation. It also includes legal responsibility, which is extra transparency. It does not repeat annotation info and provides value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loads the core purpose and billing, then covers options and legal note. Every sentence earns its place; no filler or repetition of schema fields. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, nested objects, and no output schema, the description covers the main usage modes (sync/async), defaults, and legal notes. It does not explicitly describe the return format, but the async/wait semantics and job id mention partially compensate. Given the absence of an output schema, this is reasonably complete, though an explicit return description would push it to 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning by noting the default `response_detail=compact` (not in schema), clarifying `async=true` yields a job id, and recommending `strategy=auto` for JS-heavy pages—these details go beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource+scope: 'Scrape up to 100 URLs in parallel.' It clearly distinguishes from the sibling `metalift_scrape` by emphasizing batch capability, and references paid billing and defaults, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use `async=true` (background jobs) and `wait=true` (block with progress), and recommends `strategy=auto` for JS-heavy pages. While it doesn't explicitly name alternatives like `metalift_scrape` for single URLs, the 'up to 100 URLs' phrasing implies the batch use case. The guidance is actionable and helps select appropriate parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_crawlCrawl WebsiteARead-only
Crawl a site from a seed URL and return markdown for discovered pages (1+ credits per page). Default wait=true blocks with progress; wait=false returns job id for metalift_job_status.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Seed URL to start crawling from | |
| wait | No | Wait for crawl to finish with progress updates (default true). | |
| limit | No | Maximum pages to crawl | |
| max_depth | No | Maximum link depth from seed URL | |
| exclude_paths | No | Skip paths matching these prefixes | |
| include_paths | No | Only crawl paths matching these prefixes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses '1+ credits per page' and explains the blocking behavior when wait=true and the job id return when wait=false, adding cost and async context beyond the readOnlyHint annotation. This provides valuable operational details without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, efficiently covering purpose, output, cost, and wait behavior. Every sentence carries essential information with no fluff, and the primary action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema, the description covers the core operational aspects: markdown output, credit cost, wait behavior, and job id reference. It lacks details on the exact structure of the returned markdown, but annotations and full schema coverage fill most gaps, making it sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds meaning for the wait parameter by specifying that wait=false returns a job id for metalift_job_status, which is not in the schema. Other parameters are sufficiently described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'crawl a site from a seed URL and return markdown for discovered pages,' which uses a specific verb ('crawl') and resource ('site') and distinguishes it from single-page scraping tools. The mention of discovered pages plus the cost per page adds unique functionality compared to siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about the wait parameter and references metalift_job_status for asynchronous usage, but it does not explicitly state when to choose crawl over alternative tools like metalift_scrape, metalift_sitemap, or metalift_map. Usage is implied rather than clearly differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_job_statusGet Job StatusARead-only
Poll async crawl or batch job status and results. Returns human-readable progress (pages completed, credits charged).
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job id from metalift_crawl or metalift_batch_scrape |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds value by stating it returns human-readable progress and credits charged. This goes beyond the annotation to explain output behavior. There is no contradiction. While it doesn't discuss polling frequency or potential wait times, the description is sufficiently transparent for a read-only status check.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and every phrase adds value. No filler or repetition. It is efficient and clear, earning a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required param, no output schema), the description fully captures what it does and what it returns. It mentions the job types (crawl/batch) and output details (progress, credits), making it complete for an agent to correctly select and invoke the tool. The readOnly annotation further contextualizes safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the job_id parameter fully documented as 'Job id from metalift_crawl or metalift_batch_scrape.' The description does not add new parameter details, but the schema already provides sufficient context. Baseline 3 is appropriate because the description adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Poll' and identifies the resource as 'async crawl or batch job status and results.' It clearly distinguishes this tool from siblings like metalift_crawl and metalift_batch_scrape, which initiate jobs rather than check their status. The additional detail about returning 'human-readable progress (pages completed, credits charged)' further clarifies its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after launching an async job, mentioning 'async crawl or batch job' which correspond to siblings. However, it lacks explicit exclusions or alternatives (e.g., 'use this after starting a job with metalift_crawl'). Given the clear naming and context, it's a solid 4, missing only explicit '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.
metalift_list_sessionsList Domain SessionsARead-only
List org-scoped browser sessions stored via metalift_seed_session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description confirms this read operation. It adds that sessions are org-scoped and stored via metalift_seed_session, but it does not disclose behavior such as pagination, ordering, or what fields are returned. This is a modest addition beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that includes only essential information: the verb, the resource, and the source. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and a simple listing function, the description is adequate. It specifies the scope ('org-scoped') and source ('stored via metalift_seed_session'), though it does not detail the contents of the returned list. Given the simplicity and annotation support, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so the description has nothing to add. The baseline score for 0 params is 4, which is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource as 'org-scoped browser sessions,' clearly distinguishing this from scraping, crawling, and strategy tools. It also references the related seed tool, clarifying its role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this tool lists sessions stored via metalift_seed_session, implying use after seeding or to inspect existing org-scoped sessions. It does not explicitly mention when not to use it or alternatives like list_strategies, but the context is sufficient for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_list_strategiesList Scrape StrategiesARead-only
List scrape strategies with protection levels and credit estimates. Use before scraping unknown protected sites.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the non-destructive nature, so the description does not need to repeat that. It adds context by mentioning that the list includes protection levels and credit estimates, which gives an agent an idea of what to expect. However, it doesn't describe the return format or any edge cases, so it's average.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, both of which carry meaningful information: the purpose and the usage context. There is no redundant wording, and the structure is clean and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description is reasonably complete. It tells what the tool lists (strategies with protection levels and credit estimates) and when to use it (before scraping unknown protected sites). It does not elaborate on the response format, but this is likely not critical for comprehension.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema is empty, so the description is not required to explain any parameter details. The tool appears to be a simple listing operation. The description does not need to compensate for schema gaps because there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List scrape strategies with protection levels and credit estimates.' The verb 'List' is specific, and the resource 'scrape strategies' is distinct from the sibling tools that perform scraping actions. This differentiates it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific use case: 'Use before scraping unknown protected sites.' This is explicit guidance on when to use the tool, though it does not name alternatives or state when not to use it. Still, the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_mapMap Website URLsARead-only
Discover same-origin links by parsing HTML anchors on one page (1 credit). Fallback when metalift_sitemap is unavailable. Does not fetch full page content.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL to extract links from | |
| limit | No | Maximum URLs to return | |
| search | No | Optional substring filter for URLs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and open-world nature. The description adds useful behavioral details: the credit cost (1 credit), the parsing scope (single page), and the exclusion of full-page content fetching. This goes beyond the annotation signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core purpose, cost, fallback, and a key exclusion. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple link-extraction tool with read-only annotations and full schema coverage, the description covers the essential aspects: what it does, cost, fallback, and a key limitation. While no output format is specified, the return is implicitly a list of links from the 'discover' wording. It's adequate for an agent to decide and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all three parameters (url, limit, search) with descriptions, giving 100% coverage. The description adds minimal parameter-specific meaning, only hinting at the page context. Per the baseline rule for high schema coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: discovering same-origin links by parsing HTML anchors on a single page. This specific verb+resource distinguishes it from siblings like metalift_scrape or metalift_crawl, and the fallback note references metalift_sitemap explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly identifies a conditional usage scenario: 'Fallback when metalift_sitemap is unavailable.' It also clarifies what the tool does not do ('Does not fetch full page content'), which guides when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_scrapeScrape URLARead-only
Scrape a single URL into markdown, HTML, or text. Default: fast static article path (1 credit, response_detail=compact). E-commerce hosts auto-route to retail/residential. Pass strategy=auto for WAF/SPA pages. Fetch metalift://agent-guide for session workflow. You are solely responsible for complying with website terms, robots.txt, copyright, and data protection laws when using scraped content.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL to scrape | |
| proxy | No | Proxy tier; default direct for static pages | |
| render | No | Render mode; default static for plain URLs | |
| cookies | No | Session cookies (name→value). Routes through Playwright browser session + proxy — not static HTTP. Prefer metalift_seed_session for reuse. | |
| formats | No | Output formats; default markdown only | |
| headers | No | Extra request headers. Pass User-Agent from the user's browser when using cookie_header so the session fingerprint matches. | |
| strategy | No | Scrape strategy: auto, article, spa, cloudflare, authenticated, listing, retail, jsonld, download, raw, or comma-separated chain. Use download for full static HTML. See /v1/strategies for protection levels and credit estimates. | |
| wait_for | No | CSS selector to wait for before scraping | |
| screenshot | No | Capture page screenshot (adds cost) | |
| timeout_ms | No | Per-attempt timeout in milliseconds | |
| cookie_header | No | Raw Cookie header from DevTools. Routes through Playwright + sticky proxy to preserve browser TLS fingerprint. Prefer metalift_seed_session with storage_state for repeat scrapes. | |
| response_detail | No | Response depth: compact (default, ~16k chars, no links), standard (full markdown + capped links), full (complete JSON). | |
| only_main_content | No | Extract main article content only (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint, and the description adds useful behavioral context: default credit cost, response_detail default, e-commerce auto-routing, and a compliance responsibility warning. It doesn't describe error behavior or exact output structure, but the added context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying actionable information. It is front-loaded with the purpose and has no filler, making it easy to scan and process.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 parameters and no output schema, the description doesn't spell out the exact response envelope, but the detailed parameter schema and the response_detail parameter description fill most of that gap. It's sufficiently complete for a competent agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters, but the description enriches key ones by explaining the default static article path, response_detail=compact as default, and when to use strategy=auto. This goes beyond the schema entries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action: 'Scrape a single URL into markdown, HTML, or text.' This clearly identifies the tool's purpose and distinguishes it from sibling tools like metalift_batch_scrape, metalift_crawl, and metalift_sitemap by emphasizing the single-URL scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to use the default static path, e-commerce routing, and strategy=auto for WAF/SPA pages. However, it doesn't explicitly state when to prefer siblings like batch_scrape or crawl over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_seed_sessionSeed Domain SessionA
Store browser session credentials for a domain (org-scoped). Prefer full Playwright storage_state JSON from the user's browser — preserves cookies + localStorage for fingerprint-coherent replay via unified browser session on later scrapes. Fallback: cookie_header + user_agent from DevTools.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Site hostname, e.g. actionpowertest.com or www.walmart.com | |
| cookies | No | ||
| ttl_hours | No | ||
| user_agent | No | User-Agent from the same browser session that issued the cookies | |
| cookie_header | No | ||
| storage_state | No | Playwright context.storageState() JSON — preferred over cookie_header alone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the write nature is covered. The description adds valuable context beyond annotations: it explains why storage_state is preferred (preserves cookies + localStorage for fingerprint-coherent replay) and that the session is org-scoped. It does not mention overwrite behavior or TTL, but this is not a contradiction and the additional context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main action and scope, followed by concise preference/fallback guidance. Every sentence earns its place with no fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, nested objects, and no output schema, the description covers the core usage scenario well: what to provide (storage_state or cookie_header+user_agent) and why. It misses a few operational details like TTL handling and what the tool returns, but for a credential-seeding tool, the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description compensates by explicitly explaining the relationship between storage_state, cookie_header, and user_agent ('Prefer... Fallback...'). It adds semantics not in the schema for those parameters. However, it does not explain ttl_hours or the cookies object, which remain undocumented in both schema and description, preventing a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Store') and clearly states the resource ('browser session credentials') and scope ('for a domain (org-scoped)'). It also distinguishes itself from siblings by explaining its role in enabling later scrapes with a unified browser session, differentiating it from tools like metalift_scrape or metalift_warm_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance by stating a preference ('Prefer full Playwright storage_state JSON') and a fallback ('Fallback: cookie_header + user_agent from DevTools'). It implies when to use it (before scrapes that need authenticated sessions) but doesn't explicitly state when not to use it or list alternative tools, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_sitemapFetch SitemapARead-only
Fetch XML sitemap URLs for a site. Discovers sitemap locations from robots.txt (Sitemap: directives) or /sitemap.xml, follows sitemap indexes, and returns page URLs with optional lastmod/changefreq/priority. Costs 1 credit. Prefer this over metalift_map when you need the site's published URL list.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Site homepage or direct sitemap.xml URL | |
| limit | No | ||
| search | No | Optional substring filter; matching URLs sort first | |
| same_origin | No | Only return URLs on the same origin (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only; the description adds meaningful behavior: discovery from robots.txt or /sitemap.xml, following sitemap indexes, returning optional lastmod/changefreq/priority, and a credit cost. This goes beyond annotation basics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each adding value: purpose, behavior/return details, and cost/usage preference. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, behavior, cost, and usage preference, and gives a sense of return content (page URLs with optional metadata). It lacks details on 'limit' behavior, but the schema provides min/max and the overall picture is adequate for a tool with moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%. The description does not add parameter-specific details beyond what the schema provides. The 'limit' parameter lacks a schema description and is not addressed in the text, but the schema covers the other three parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches XML sitemap URLs, with a specific verb and resource. It explicitly differentiates from metalift_map by recommending this tool for the site's published URL list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Prefer this over metalift_map when you need the site's published URL list.' This names an alternative and gives a clear condition for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_warm_sessionWarm Domain SessionA
Automated browser warmup to collect cookies for later scrapes (15 credits). Use when manual metalift_seed_session is not possible; often fails on strict WAFs.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Seed URL to visit in browser | |
| proxy | No | Default auto. Use residential for WAF-heavy sites. | |
| domain | No | Override domain for stored session | |
| strategy | No | e.g. retail, cloudflare, authenticated | |
| timeout_ms | No | Browser warmup timeout in milliseconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds behavioral context not present in annotations: it mentions the action of collecting cookies (side effect) and the failure mode on strict WAFs. It also notes a credit cost of 15, which is useful operational behavior. It doesn't detail the full session storage mechanics but provides enough beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and then a usage condition and caveat. Every sentence carries useful information with zero waste or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description gives key context: when to use it, its limitation with WAFs, and its cost. It does not explain what the tool returns (e.g., session ID or job status), but given the annotations and schema richness, this is still a fairly complete description. Slight gap on output behavior prevents a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all five parameters already have descriptions. The tool description does not add any parameter-specific guidance, but it does not need to because the schema covers them. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Automated browser warmup to collect cookies for later scrapes'. It clearly distinguishes itself from the sibling manual tool 'metalift_seed_session' by stating when it should be used instead. This is a clear and differentiated purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides a usage condition: 'Use when manual metalift_seed_session is not possible'. It also states a limitation: 'often fails on strict WAFs', which serves as a caution. This gives both when to use and when to avoid, plus names the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
metalift_web_searchWeb SearchARead-only
Search the web and return up to 10 SERP results (title, url, snippet, engine, score). Costs 2 credits per search. Returns search snippets only — not page content. Answer simple questions from snippets; do not auto-scrape. Call metalift_scrape separately only when full page content is required.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| language | No | Result language (default en) | |
| categories | No | Optional search categories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, and the description adds meaningful behavioral context: it returns only snippets (not full content), costs credits, and prohibits auto-scraping. This goes beyond the annotations, covering cost and usage policy, though it doesn't discuss error handling or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences but conveys purpose, output, cost, limitations, and usage guidance without redundancy. It is front-loaded with the core action and immediately informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with high schema coverage and readOnly annotations, the description is fully complete: it states the return fields, cost, snippet-only behavior, and when to use the alternative scrape tool. No output schema exists, but the description covers the necessary return information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides complete descriptions for all three parameters (query, language, categories), resulting in 100% schema coverage. The description adds no additional parameter-specific meaning, so it rests at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Search the web') and its output ('return up to 10 SERP results'), including specific fields. It also differentiates from siblings by noting it returns snippets only and pointing to metalift_scrape for full content, eliminating ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Answer simple questions from snippets; do not auto-scrape' and 'Call metalift_scrape separately only when full page content is required.' This tells the agent exactly when to use this tool versus the alternative, plus cost implications (2 credits per search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
11 tool updates
v1.0.15- First observed
metalift_batch_scrape - First observed
metalift_crawl - First observed
metalift_job_status - First observed
metalift_list_sessions - First observed
metalift_list_strategies - First observed
metalift_map - First observed
metalift_scrape - First observed
metalift_seed_session - First observed
metalift_sitemap - First observed
metalift_warm_session - First observed
metalift_web_search
TDQS
Each tool targets a clearly distinct operation: single scrape, batch scrape, crawl, sitemap, link discovery, web search, job status, strategy listing, and session management. There is no meaningful overlap that could confuse an agent.
All tools share the metalift_ prefix and use lowercase with underscores, but the pattern mixes bare verbs (scrape, crawl), nouns (sitemap, map), and compound verb-noun forms (web_search, seed_session). This is still highly readable and predictable.
Eleven tools is well-scoped for a scraping/search/session-management server. Each tool earns its place, covering the core workflows without unnecessary bloat.
The tool set covers the primary lifecycle: scrape, batch scrape, crawl, discover URLs via sitemap/map, search, and monitor async jobs. Session management includes seed, warm, and list, but lacks explicit delete or get-detail operations, which are minor gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Web scraping for AI agents. Converts URLs to clean, LLM-ready Markdown with anti-bot bypass.
Cloud scraping & crawling API for AI agents. Turn any URL into clean, LLM-ready markdown.
Clean Markdown and AI-readability scoring for any URL. Built for AI agents.
11Turn any URL into clean Markdown and structured data. Scrape, crawl, search and extract.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI agents and coding assistants with advanced web crawling and RAG capabilities, allowing them to scrape websites and leverage that knowledge through various retrieval strategies.2MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI agents and assistants with advanced web crawling and RAG capabilities, enabling them to scrape websites and perform semantic search over crawled content.1MIT
- AlicenseAqualityCmaintenanceEnables AI agents to fetch any web page as clean markdown or screenshot it, turning URLs into LLM-ready context.211MIT

HatFetchofficial
AlicenseAqualityAmaintenanceEnables LLM agents to read any website by scraping and crawling into clean Markdown, automatically bypassing bot detection with residential proxies.321MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MetaliftAI/metalift-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server