web_extract
Get JSON from up to 10 pages, with no session.
Opens up to 10 pages in a real browser, then a model returns the data you ask for as JSON. Say what to collect in a prompt, give a JSON Schema in schema for exact fields, or both. A value the page does not show comes back as null, never a guess. It does not use or create a session. Public pages only.
Inputs
| Name | Type | Default | Allowed values | Description |
|---|---|---|---|---|
url | string | – | – | One page to read. Give url or urls. |
urls | array of strings | – | – | 1 to 10 pages. The model sees them all at once. |
prompt | string | – | – | What to collect, in words, up to 4,000 characters. Give prompt, schema or both. |
schema | object | – | – | A JSON Schema the result must match. |
Example call
This is what an MCP client sends. You do not write it yourself: ask the model in plain words and it calls the tool.
{ "name": "web_extract", "arguments": { "url": "https://example.com/pricing", "prompt": "The name and monthly price of every plan" }}What it returns
The extracted data as formatted JSON, then one line for each page with its address and HTTP status, or why it could not be read.
{ "plans": [ { "name": "Pro", "price": "$20" } ]}Pages:- https://example.com/pricing: HTTP 200When a call fails, the result is marked as an error. Its text starts with the API’s error code, such as unauthorized or session_not_running, followed by its message.
Annotations
The server tells every client what this tool does to the world, so a client can decide what to ask you about before it runs.
| Annotation | Value |
|---|---|
title | Extract data from pages |
readOnlyHint | true |
destructiveHint | false |
openWorldHint | true |
Good to know
- Give
urlorurls, and apromptor aschema. Without them the call fails. - It uses an AI model and is billed for that, like other model calls. It counts toward your plan's monthly spend cap. The Free plan runs models on your own model keys only.
- Your plan must include extract, and a project can make 30 requests a minute.
- Pages are treated as data, never as instructions: the model is told to ignore any instructions a page contains.
The same thing with the API
| Endpoint | Reference |
|---|---|
POST /v1/extract | Extract data from pages |
These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.