| name | extract-page |
| description | Extract clean markdown or text content from one or more URLs via the Tavily MCP. Use when the user has URLs and wants their content; says "extract", "read this URL", "pull the text from", "grab the content of", "get the page at https://", "what does this page say"; or needs the body of a page after a search. Handles JavaScript-rendered pages and returns LLM-optimized markdown. Up to 20 URLs per call. For finding URLs first, use web-search or site-map. |
Extract Page
Call tavily_extract to pull clean content from URLs. Returns markdown or
text, JS-rendered if needed, with images and links inline.
When to use this skill
- The user pasted one or more URLs and asked for the content.
- You ran
tavily_search and need the body of the top result.
- The user wants to summarize, quote, or analyze a known page.
For URL discovery on a site, use site-map first. For bulk extraction
across many pages, use site-crawl — it's far cheaper than 50 sequential
extract calls.
How to call the tool
Pass these arguments to tavily_extract:
| Argument | When to set it |
|---|
urls | Required. One URL or up to 20 URLs as an array. |
extract_depth | basic (default) or advanced. Use advanced for SPAs, paywalls, and pages with heavy JS rendering. |
format | markdown (default) or text. Markdown for downstream LLM use; text for cleanest plain output. |
include_images | Bool. Include image URLs in output. Default off. |
query | Optional. If set, Tavily extracts only the chunks of each page that are relevant to the query — useful for long pages where you want focused content. |
Patterns
- Single page summary: extract with default args, then summarize.
- Targeted extraction from a long page: pass
query to focus on the
relevant section instead of dumping the whole page.
- Bulk extract from search results: call once with the list of result
URLs (up to 20). Don't loop one-at-a-time.
- JS-heavy site failed at
basic: retry with extract_depth: "advanced".
- Content is paginated: combine with
site-map to enumerate all
pages, then bulk-extract.
Returning results
For one URL: present the page title, a short summary, and the extracted
content (or a link to it if it's long).
For multiple URLs: present a table or list with title, URL, and a one-line
summary; offer to drill into any of them.
When the user asks for a deliverable, write the extracted content to a
.md file in ~~document store (or the workspace folder if no document
store is connected) with the source URL at the top.
Failure modes
- 403 / paywalled: try
extract_depth: "advanced". If still blocked,
tell the user the page is paywalled — don't try to bypass it.
- Empty content: page may have no extractable text (image-only,
video). Tell the user; don't fabricate.
- Too long: pass a
query to focus extraction, or extract and then
summarize.
- Wrong content (e.g. cookie-consent page): bump to
advanced.