Server definition
- Hash
- sha256:564a68f22fccf828e48545b7da9965278c01041826a3be386a12628c320b2760
- What it is
- What a remote MCP server returned when asked what it offers: 11 tools
The blob, as servednamed by its sha256
{
"instructions": "Web extraction and browser control for agents. You can try it with no key and no account: 10 page or document reads a day, 10 site listings a day, and — once, ever — one browser session with 10 actions and 5 searches. Crawls, batches and AI extraction need a key. Call GET /mcp for the table. After that, send an API key in `Authorization: Bearer oas_…`, or pay per call with a wallet over the HTTP API (x402, USDC on Base) with no account at all. To read a page use web_scrape; to fill in or click something, open a session with web_session_open and act with web_act; to find urls use web_map before paying to read them.",
"tools": [
{
"description": "Runs actions against an open session and returns the resulting state. Actions: {navigate}, {click:{ref}}, {type:{ref,text,clear}}, {select:{ref,value}}, {press}, {scroll}, {wait}, {back}. The `ref` is the one `controls` gave you. It stops at the first failure and tells you where. $0.0005 per action. Reference for the oassis API: https://oassis.dev/openapi.json",
"inputSchema": {
"properties": {
"actions": {
"description": "What to do, in order: click, type, select, scroll, hover, press, navigate, wait. One to twenty-five per call.",
"items": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"navigate": {
"format": "uri",
"type": "string"
}
},
"required": [
"navigate"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"click": {
"additionalProperties": false,
"properties": {
"ref": {
"minLength": 1,
"type": "string"
},
"selector": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
}
},
"required": [
"click"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"type": {
"additionalProperties": false,
"properties": {
"clear": {
"type": "boolean"
},
"ref": {
"minLength": 1,
"type": "string"
},
"selector": {
"minLength": 1,
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
}
},
"required": [
"type"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"select": {
"additionalProperties": false,
"properties": {
"ref": {
"minLength": 1,
"type": "string"
},
"selector": {
"minLength": 1,
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"value"
],
"type": "object"
}
},
"required": [
"select"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"press": {
"minLength": 1,
"type": "string"
}
},
"required": [
"press"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"scroll": {
"additionalProperties": false,
"properties": {
"by": {
"type": "number"
},
"to": {
"enum": [
"top",
"bottom"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"scroll"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"wait": {
"additionalProperties": false,
"properties": {
"ms": {
"maximum": 30000,
"minimum": 0,
"type": "integer"
},
"selector": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
}
},
"required": [
"wait"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"back": {
"const": true,
"type": "boolean"
}
},
"required": [
"back"
],
"type": "object"
}
]
},
"maxItems": 25,
"minItems": 1,
"type": "array"
},
"binaryAs": {
"default": "base64",
"description": "How a screenshot or a PDF comes back. `base64` is the only value today.",
"enum": [
"base64",
"url"
],
"type": "string"
},
"block": {
"additionalProperties": false,
"description": "What not to load, which makes a render faster and cheaper. `resourceTypes` takes image, font, stylesheet, media… and `urlPatterns` are regular expressions, not globs: `\\.svg$`, not `*.svg`.",
"properties": {
"resourceTypes": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"urlPatterns": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"controls": {
"additionalProperties": false,
"description": "Options for the `controls` format: `visibleOnly`, and `limit` (1 to 1000) to cut the map.",
"properties": {
"limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"formats": {
"default": [
"controls"
],
"description": "Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt` or `json.schema`.",
"items": {
"enum": [
"html",
"markdown",
"links",
"screenshot",
"pdf",
"elements",
"json",
"accessibility",
"controls"
],
"type": "string"
},
"maxItems": 9,
"minItems": 1,
"type": "array"
},
"json": {
"additionalProperties": false,
"description": "For the `json` format: a `prompt` describing what to pull out, a JSON `schema` to fill, or both.",
"properties": {
"model": {
"minLength": 1,
"type": "string"
},
"prompt": {
"minLength": 1,
"type": "string"
},
"schema": {
"additionalProperties": {},
"type": "object"
}
},
"type": "object"
},
"links": {
"additionalProperties": false,
"description": "Options for the `links` format: `visibleOnly`, `excludeExternal` to keep only internal links.",
"properties": {
"excludeExternal": {
"type": "boolean"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"maxAge": {
"description": "Accept an answer up to this many milliseconds old. A cache hit costs $0.0002 instead of the format price. Leave it out to force a fresh render.",
"maximum": 604800000,
"minimum": 0,
"type": "integer"
},
"pdf": {
"additionalProperties": false,
"description": "Options for the `pdf` format: `format` (a4, letter, legal…), `landscape`, `printBackground`, `scale` 0.1 to 2.",
"properties": {
"format": {
"enum": [
"letter",
"legal",
"tabloid",
"ledger",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6"
],
"type": "string"
},
"landscape": {
"type": "boolean"
},
"printBackground": {
"type": "boolean"
},
"scale": {
"maximum": 2,
"minimum": 0.1,
"type": "number"
}
},
"type": "object"
},
"request": {
"additionalProperties": false,
"description": "How to make the request: `headers`, `cookies`, `userAgent`, and `auth` for basic authentication.",
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"username",
"password"
],
"type": "object"
},
"cookies": {
"items": {
"additionalProperties": false,
"properties": {
"domain": {
"type": "string"
},
"httpOnly": {
"type": "boolean"
},
"name": {
"minLength": 1,
"type": "string"
},
"path": {
"type": "string"
},
"secure": {
"type": "boolean"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"type": "array"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"userAgent": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"screenshot": {
"additionalProperties": false,
"description": "Options for the `screenshot` format: `fullPage` for the whole page, `type` (png, jpeg, webp), `quality` 1-100 (not with png), `omitBackground`, `selector` to capture one element, and its own `viewport`.",
"properties": {
"fullPage": {
"type": "boolean"
},
"omitBackground": {
"type": "boolean"
},
"quality": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"selector": {
"minLength": 1,
"type": "string"
},
"type": {
"enum": [
"png",
"jpeg",
"webp"
],
"type": "string"
},
"viewport": {
"additionalProperties": false,
"properties": {
"deviceScaleFactor": {
"maximum": 3,
"minimum": 0.1,
"type": "number"
},
"height": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
},
"width": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
}
},
"type": "object"
},
"selectors": {
"description": "CSS selectors for the `elements` format.",
"items": {
"minLength": 1,
"type": "string"
},
"minItems": 1,
"type": "array"
},
"sessionId": {
"description": "The session to act on, from `web_session_open`.",
"minLength": 1,
"type": "string"
},
"url": {
"description": "Page to process.",
"format": "uri",
"type": "string"
},
"viewport": {
"additionalProperties": false,
"description": "The window to render in: `width`, `height`, `deviceScaleFactor`.",
"properties": {
"deviceScaleFactor": {
"maximum": 3,
"minimum": 0.1,
"type": "number"
},
"height": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
},
"width": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"wait": {
"additionalProperties": false,
"description": "When to consider the page loaded: `until` (load, domcontentloaded, networkidle0, networkidle2), `selector` to wait for, `timeout` in ms.",
"properties": {
"selector": {
"minLength": 1,
"type": "string"
},
"timeout": {
"maximum": 60000,
"minimum": 100,
"type": "integer"
},
"until": {
"enum": [
"load",
"domcontentloaded",
"networkidle0",
"networkidle2"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"sessionId",
"actions"
],
"type": "object"
},
"name": "web_act",
"outputSchema": null
},
{
"description": "Checks a batch of scrapes: status, how many are done, and the results. Free. Pass `cancel: true` to stop it and get the urls it never read refunded.",
"inputSchema": {
"properties": {
"cancel": {
"description": "Stop the batch and refund what it did not read.",
"type": "boolean"
},
"jobId": {
"description": "The batch, from web_scrape_batch.",
"type": "string"
},
"limit": {
"description": "Results to return (default 50).",
"type": "number"
}
},
"required": [
"jobId"
],
"type": "object"
},
"name": "web_batch_status",
"outputSchema": null
},
{
"description": "Follows a site's links and reads every page. Returns a jobId; poll it with web_crawl_status. Charged up front for the pages it is allowed to read (`limit`), and the pages it never reads are refunded. Use web_map first if you only need the urls. Reference for the oassis API: https://oassis.dev/openapi.json",
"inputSchema": {
"properties": {
"binaryAs": {
"default": "base64",
"description": "How a screenshot or a PDF comes back. `base64` is the only value today.",
"enum": [
"base64",
"url"
],
"type": "string"
},
"block": {
"additionalProperties": false,
"description": "What not to load, which makes a render faster and cheaper. `resourceTypes` takes image, font, stylesheet, media… and `urlPatterns` are regular expressions, not globs: `\\.svg$`, not `*.svg`.",
"properties": {
"resourceTypes": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"urlPatterns": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"controls": {
"additionalProperties": false,
"description": "Options for the `controls` format: `visibleOnly`, and `limit` (1 to 1000) to cut the map.",
"properties": {
"limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"excludePaths": {
"description": "Discard urls whose path contains one of these. Up to twenty. It wins over `includePaths`.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"formats": {
"description": "Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt` or `json.schema`. A screenshot or a PDF is not available here: every result is kept until you collect it. Ask for those one url at a time on web_scrape.",
"items": {
"enum": [
"html",
"markdown",
"links",
"elements",
"json",
"accessibility",
"controls"
],
"type": "string"
},
"type": "array"
},
"includePaths": {
"description": "Keep only urls whose path contains one of these. Up to twenty.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"includeSubdomains": {
"description": "Treat subdomains of the same site as part of it.",
"type": "boolean"
},
"json": {
"additionalProperties": false,
"description": "For the `json` format: a `prompt` describing what to pull out, a JSON `schema` to fill, or both.",
"properties": {
"model": {
"minLength": 1,
"type": "string"
},
"prompt": {
"minLength": 1,
"type": "string"
},
"schema": {
"additionalProperties": {},
"type": "object"
}
},
"type": "object"
},
"limit": {
"default": 25,
"description": "Pages this crawl may read, up to 200. Charged up front; what it does not read comes back.",
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"links": {
"additionalProperties": false,
"description": "Options for the `links` format: `visibleOnly`, `excludeExternal` to keep only internal links.",
"properties": {
"excludeExternal": {
"type": "boolean"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"maxAge": {
"description": "Accept an answer up to this many milliseconds old. A cache hit costs $0.0002 instead of the format price. Leave it out to force a fresh render.",
"maximum": 604800000,
"minimum": 0,
"type": "integer"
},
"maxDepth": {
"default": 2,
"description": "How far from the starting page to follow links. 0 reads only the starting page.",
"maximum": 5,
"minimum": 0,
"type": "integer"
},
"request": {
"additionalProperties": false,
"description": "How to make the request: `headers`, `cookies`, `userAgent`, and `auth` for basic authentication.",
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"username",
"password"
],
"type": "object"
},
"cookies": {
"items": {
"additionalProperties": false,
"properties": {
"domain": {
"type": "string"
},
"httpOnly": {
"type": "boolean"
},
"name": {
"minLength": 1,
"type": "string"
},
"path": {
"type": "string"
},
"secure": {
"type": "boolean"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"type": "array"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"userAgent": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"selectors": {
"description": "CSS selectors for the `elements` format.",
"items": {
"minLength": 1,
"type": "string"
},
"minItems": 1,
"type": "array"
},
"url": {
"description": "Page to process.",
"format": "uri",
"type": "string"
},
"viewport": {
"additionalProperties": false,
"description": "The window to render in: `width`, `height`, `deviceScaleFactor`.",
"properties": {
"deviceScaleFactor": {
"maximum": 3,
"minimum": 0.1,
"type": "number"
},
"height": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
},
"width": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"wait": {
"additionalProperties": false,
"description": "When to consider the page loaded: `until` (load, domcontentloaded, networkidle0, networkidle2), `selector` to wait for, `timeout` in ms.",
"properties": {
"selector": {
"minLength": 1,
"type": "string"
},
"timeout": {
"maximum": 60000,
"minimum": 100,
"type": "integer"
},
"until": {
"enum": [
"load",
"domcontentloaded",
"networkidle0",
"networkidle2"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "web_crawl",
"outputSchema": null
},
{
"description": "Checks a crawl: status, pages read, discovered and still queued, and the pages themselves. Free. Pass `cancel: true` to stop it and get the unread pages refunded.",
"inputSchema": {
"properties": {
"cancel": {
"description": "Stop the crawl and refund what it did not read.",
"type": "boolean"
},
"jobId": {
"description": "The crawl, from web_crawl.",
"type": "string"
},
"limit": {
"description": "Pages to return (default 50).",
"type": "number"
}
},
"required": [
"jobId"
],
"type": "object"
},
"name": "web_crawl_status",
"outputSchema": null
},
{
"description": "Tell us an answer was good or bad. FREE. Use it when a result is wrong — empty markdown, a control map missing a button, data that does not match the page — with the url or the jobId so it can be reproduced. It is the only way we learn that we read a page badly: our logs cannot tell that apart from a page that is simply like that. Reference for the oassis API: https://oassis.dev/openapi.json",
"inputSchema": {
"properties": {
"comment": {
"description": "What you expected and what you got.",
"maxLength": 2000,
"minLength": 1,
"type": "string"
},
"reference": {
"description": "The jobId or sessionId it happened on, so it can be looked up.",
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"route": {
"description": "Which tool or endpoint it is about, as you called it.",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"url": {
"description": "The page that came out wrong: usually the fastest way to reproduce it.",
"format": "uri",
"type": "string"
},
"verdict": {
"description": "Did the answer do the job or not.",
"enum": [
"good",
"bad"
],
"type": "string"
}
},
"required": [
"verdict"
],
"type": "object"
},
"name": "web_feedback",
"outputSchema": null
},
{
"description": "Every url of a site, fast and cheap: its sitemap plus, optionally, the links on the page. Use it BEFORE crawling, to see what is there and decide what is worth reading. $0.001 with `includePage: false` (no browser at all), $0.0015 with the page. Reference for the oassis API: https://oassis.dev/openapi.json",
"inputSchema": {
"properties": {
"excludePaths": {
"description": "Discard urls whose path contains one of these. Up to twenty. It wins over `includePaths`.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"includePage": {
"description": "Render the page too, to catch urls the sitemap does not list. `false` uses no browser at all and costs a third.",
"type": "boolean"
},
"includePaths": {
"description": "Keep only urls whose path contains one of these. Up to twenty.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"includeSubdomains": {
"description": "Treat subdomains of the same site as part of it.",
"type": "boolean"
},
"limit": {
"default": 1000,
"description": "Urls to return. Up to 5000.",
"maximum": 5000,
"minimum": 1,
"type": "integer"
},
"search": {
"description": "Keep only urls containing this text.",
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"url": {
"description": "Page to process.",
"format": "uri",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "web_map",
"outputSchema": null
},
{
"description": "Processes a page and returns every output you ask for at once: markdown, html, links, screenshot, PDF, accessibility tree, elements by selector, AI-structured data, and `controls` (what can be clicked). One call, and a partial failure does not void the rest. From $0.001 per output. A url pointing at a PDF, Word, Excel or CSV file is converted to markdown instead, with no browser, for $0.002. Reference for the oassis API: https://oassis.dev/openapi.json",
"inputSchema": {
"properties": {
"binaryAs": {
"default": "base64",
"description": "How a screenshot or a PDF comes back. `base64` is the only value today.",
"enum": [
"base64",
"url"
],
"type": "string"
},
"block": {
"additionalProperties": false,
"description": "What not to load, which makes a render faster and cheaper. `resourceTypes` takes image, font, stylesheet, media… and `urlPatterns` are regular expressions, not globs: `\\.svg$`, not `*.svg`.",
"properties": {
"resourceTypes": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"urlPatterns": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"controls": {
"additionalProperties": false,
"description": "Options for the `controls` format: `visibleOnly`, and `limit` (1 to 1000) to cut the map.",
"properties": {
"limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"formats": {
"default": [
"markdown"
],
"description": "Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt` or `json.schema`.",
"items": {
"enum": [
"html",
"markdown",
"links",
"screenshot",
"pdf",
"elements",
"json",
"accessibility",
"controls"
],
"type": "string"
},
"maxItems": 9,
"minItems": 1,
"type": "array"
},
"html": {
"description": "Raw HTML instead of `url`, for a page you already have. Nothing leaves for the network.",
"minLength": 1,
"type": "string"
},
"json": {
"additionalProperties": false,
"description": "For the `json` format: a `prompt` describing what to pull out, a JSON `schema` to fill, or both.",
"properties": {
"model": {
"minLength": 1,
"type": "string"
},
"prompt": {
"minLength": 1,
"type": "string"
},
"schema": {
"additionalProperties": {},
"type": "object"
}
},
"type": "object"
},
"links": {
"additionalProperties": false,
"description": "Options for the `links` format: `visibleOnly`, `excludeExternal` to keep only internal links.",
"properties": {
"excludeExternal": {
"type": "boolean"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"maxAge": {
"description": "Accept an answer up to this many milliseconds old. A cache hit costs $0.0002 instead of the format price. Leave it out to force a fresh render.",
"maximum": 604800000,
"minimum": 0,
"type": "integer"
},
"pdf": {
"additionalProperties": false,
"description": "Options for the `pdf` format: `format` (a4, letter, legal…), `landscape`, `printBackground`, `scale` 0.1 to 2.",
"properties": {
"format": {
"enum": [
"letter",
"legal",
"tabloid",
"ledger",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6"
],
"type": "string"
},
"landscape": {
"type": "boolean"
},
"printBackground": {
"type": "boolean"
},
"scale": {
"maximum": 2,
"minimum": 0.1,
"type": "number"
}
},
"type": "object"
},
"request": {
"additionalProperties": false,
"description": "How to make the request: `headers`, `cookies`, `userAgent`, and `auth` for basic authentication.",
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"username",
"password"
],
"type": "object"
},
"cookies": {
"items": {
"additionalProperties": false,
"properties": {
"domain": {
"type": "string"
},
"httpOnly": {
"type": "boolean"
},
"name": {
"minLength": 1,
"type": "string"
},
"path": {
"type": "string"
},
"secure": {
"type": "boolean"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"type": "array"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"userAgent": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"screenshot": {
"additionalProperties": false,
"description": "Options for the `screenshot` format: `fullPage` for the whole page, `type` (png, jpeg, webp), `quality` 1-100 (not with png), `omitBackground`, `selector` to capture one element, and its own `viewport`.",
"properties": {
"fullPage": {
"type": "boolean"
},
"omitBackground": {
"type": "boolean"
},
"quality": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"selector": {
"minLength": 1,
"type": "string"
},
"type": {
"enum": [
"png",
"jpeg",
"webp"
],
"type": "string"
},
"viewport": {
"additionalProperties": false,
"properties": {
"deviceScaleFactor": {
"maximum": 3,
"minimum": 0.1,
"type": "number"
},
"height": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
},
"width": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
}
},
"type": "object"
},
"selectors": {
"description": "CSS selectors for the `elements` format.",
"items": {
"minLength": 1,
"type": "string"
},
"minItems": 1,
"type": "array"
},
"url": {
"description": "Page to process.",
"format": "uri",
"type": "string"
},
"viewport": {
"additionalProperties": false,
"description": "The window to render in: `width`, `height`, `deviceScaleFactor`.",
"properties": {
"deviceScaleFactor": {
"maximum": 3,
"minimum": 0.1,
"type": "number"
},
"height": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
},
"width": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"wait": {
"additionalProperties": false,
"description": "When to consider the page loaded: `until` (load, domcontentloaded, networkidle0, networkidle2), `selector` to wait for, `timeout` in ms.",
"properties": {
"selector": {
"minLength": 1,
"type": "string"
},
"timeout": {
"maximum": 60000,
"minimum": 100,
"type": "integer"
},
"until": {
"enum": [
"load",
"domcontentloaded",
"networkidle0",
"networkidle2"
],
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"name": "web_scrape",
"outputSchema": null
},
{
"description": "A batch OF SCRAPES: reads a list of urls YOU give it (2 to 50, from any sites) and returns a jobId. It discovers nothing on its own — for that use web_crawl. Charged up front per url; urls that fail and urls served from the cache are refunded. Poll it with web_batch_status.",
"inputSchema": {
"properties": {
"binaryAs": {
"default": "base64",
"description": "How a screenshot or a PDF comes back. `base64` is the only value today.",
"enum": [
"base64",
"url"
],
"type": "string"
},
"block": {
"additionalProperties": false,
"description": "What not to load, which makes a render faster and cheaper. `resourceTypes` takes image, font, stylesheet, media… and `urlPatterns` are regular expressions, not globs: `\\.svg$`, not `*.svg`.",
"properties": {
"resourceTypes": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"urlPatterns": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"controls": {
"additionalProperties": false,
"description": "Options for the `controls` format: `visibleOnly`, and `limit` (1 to 1000) to cut the map.",
"properties": {
"limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"formats": {
"description": "Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt` or `json.schema`. A screenshot or a PDF is not available here: every result is kept until you collect it. Ask for those one url at a time on web_scrape.",
"items": {
"enum": [
"html",
"markdown",
"links",
"elements",
"json",
"accessibility",
"controls"
],
"type": "string"
},
"type": "array"
},
"json": {
"additionalProperties": false,
"description": "For the `json` format: a `prompt` describing what to pull out, a JSON `schema` to fill, or both.",
"properties": {
"model": {
"minLength": 1,
"type": "string"
},
"prompt": {
"minLength": 1,
"type": "string"
},
"schema": {
"additionalProperties": {},
"type": "object"
}
},
"type": "object"
},
"links": {
"additionalProperties": false,
"description": "Options for the `links` format: `visibleOnly`, `excludeExternal` to keep only internal links.",
"properties": {
"excludeExternal": {
"type": "boolean"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"maxAge": {
"description": "Accept an answer up to this many milliseconds old. A cache hit costs $0.0002 instead of the format price. Leave it out to force a fresh render.",
"maximum": 604800000,
"minimum": 0,
"type": "integer"
},
"request": {
"additionalProperties": false,
"description": "How to make the request: `headers`, `cookies`, `userAgent`, and `auth` for basic authentication.",
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"username",
"password"
],
"type": "object"
},
"cookies": {
"items": {
"additionalProperties": false,
"properties": {
"domain": {
"type": "string"
},
"httpOnly": {
"type": "boolean"
},
"name": {
"minLength": 1,
"type": "string"
},
"path": {
"type": "string"
},
"secure": {
"type": "boolean"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"type": "array"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"userAgent": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"selectors": {
"description": "CSS selectors for the `elements` format.",
"items": {
"minLength": 1,
"type": "string"
},
"minItems": 1,
"type": "array"
},
"urls": {
"description": "The pages of this batch. Two to fifty, no duplicates: a batch charges per url.",
"items": {
"format": "uri",
"type": "string"
},
"maxItems": 50,
"minItems": 2,
"type": "array"
},
"viewport": {
"additionalProperties": false,
"description": "The window to render in: `width`, `height`, `deviceScaleFactor`.",
"properties": {
"deviceScaleFactor": {
"maximum": 3,
"minimum": 0.1,
"type": "number"
},
"height": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
},
"width": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"wait": {
"additionalProperties": false,
"description": "When to consider the page loaded: `until` (load, domcontentloaded, networkidle0, networkidle2), `selector` to wait for, `timeout` in ms.",
"properties": {
"selector": {
"minLength": 1,
"type": "string"
},
"timeout": {
"maximum": 60000,
"minimum": 100,
"type": "integer"
},
"until": {
"enum": [
"load",
"domcontentloaded",
"networkidle0",
"networkidle2"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"urls"
],
"type": "object"
},
"name": "web_scrape_batch",
"outputSchema": null
},
{
"description": "Search the web with Exa's index: a query instead of a url, for when you do not know where to look. Returns title, url and a snippet per result. To read the pages, pass the urls to web_scrape_batch. The engine is named because the price is Exa's, passed through with no markup and read from its own payment challenge on every call — today $0.007 per search.",
"inputSchema": {
"properties": {
"domains": {
"description": "Only these domains, subdomains included: `example.com` also matches `docs.example.com`.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"excludeDomains": {
"description": "Never these domains, subdomains included.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"type": "array"
},
"limit": {
"default": 10,
"description": "Results to return. Up to 50.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "What to search for.",
"maxLength": 500,
"minLength": 1,
"type": "string"
},
"since": {
"description": "Only results published after this ISO date.",
"maxLength": 30,
"minLength": 4,
"type": "string"
},
"snippets": {
"description": "Text alongside each result. On by default: a bare url is rarely enough.",
"type": "boolean"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "web_search_exa",
"outputSchema": null
},
{
"description": "Closes a session and stops billing browser time. Free. If you do not close it, it closes itself after a minute without use.",
"inputSchema": {
"properties": {
"sessionId": {
"description": "The session to close, from web_session_open.",
"type": "string"
}
},
"required": [
"sessionId"
],
"type": "object"
},
"name": "web_session_close",
"outputSchema": null
},
{
"description": "Opens a browser on a page and leaves it open, returning the map of controls. Use it when something has to be FILLED IN or CLICKED, not just read: inside the session the `controls` references keep working and you can act on the same state. $0.005 plus the outputs. Close it with web_session_close when you are done. Reference for the oassis API: https://oassis.dev/openapi.json",
"inputSchema": {
"properties": {
"binaryAs": {
"default": "base64",
"description": "How a screenshot or a PDF comes back. `base64` is the only value today.",
"enum": [
"base64",
"url"
],
"type": "string"
},
"block": {
"additionalProperties": false,
"description": "What not to load, which makes a render faster and cheaper. `resourceTypes` takes image, font, stylesheet, media… and `urlPatterns` are regular expressions, not globs: `\\.svg$`, not `*.svg`.",
"properties": {
"resourceTypes": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
},
"urlPatterns": {
"items": {
"minLength": 1,
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"controls": {
"additionalProperties": false,
"description": "Options for the `controls` format: `visibleOnly`, and `limit` (1 to 1000) to cut the map.",
"properties": {
"limit": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"formats": {
"default": [
"controls"
],
"description": "Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt` or `json.schema`.",
"items": {
"enum": [
"html",
"markdown",
"links",
"screenshot",
"pdf",
"elements",
"json",
"accessibility",
"controls"
],
"type": "string"
},
"maxItems": 9,
"minItems": 1,
"type": "array"
},
"json": {
"additionalProperties": false,
"description": "For the `json` format: a `prompt` describing what to pull out, a JSON `schema` to fill, or both.",
"properties": {
"model": {
"minLength": 1,
"type": "string"
},
"prompt": {
"minLength": 1,
"type": "string"
},
"schema": {
"additionalProperties": {},
"type": "object"
}
},
"type": "object"
},
"links": {
"additionalProperties": false,
"description": "Options for the `links` format: `visibleOnly`, `excludeExternal` to keep only internal links.",
"properties": {
"excludeExternal": {
"type": "boolean"
},
"visibleOnly": {
"type": "boolean"
}
},
"type": "object"
},
"maxAge": {
"description": "Accept an answer up to this many milliseconds old. A cache hit costs $0.0002 instead of the format price. Leave it out to force a fresh render.",
"maximum": 604800000,
"minimum": 0,
"type": "integer"
},
"pdf": {
"additionalProperties": false,
"description": "Options for the `pdf` format: `format` (a4, letter, legal…), `landscape`, `printBackground`, `scale` 0.1 to 2.",
"properties": {
"format": {
"enum": [
"letter",
"legal",
"tabloid",
"ledger",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6"
],
"type": "string"
},
"landscape": {
"type": "boolean"
},
"printBackground": {
"type": "boolean"
},
"scale": {
"maximum": 2,
"minimum": 0.1,
"type": "number"
}
},
"type": "object"
},
"request": {
"additionalProperties": false,
"description": "How to make the request: `headers`, `cookies`, `userAgent`, and `auth` for basic authentication.",
"properties": {
"auth": {
"additionalProperties": false,
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"username",
"password"
],
"type": "object"
},
"cookies": {
"items": {
"additionalProperties": false,
"properties": {
"domain": {
"type": "string"
},
"httpOnly": {
"type": "boolean"
},
"name": {
"minLength": 1,
"type": "string"
},
"path": {
"type": "string"
},
"secure": {
"type": "boolean"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"type": "array"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"userAgent": {
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"screenshot": {
"additionalProperties": false,
"description": "Options for the `screenshot` format: `fullPage` for the whole page, `type` (png, jpeg, webp), `quality` 1-100 (not with png), `omitBackground`, `selector` to capture one element, and its own `viewport`.",
"properties": {
"fullPage": {
"type": "boolean"
},
"omitBackground": {
"type": "boolean"
},
"quality": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"selector": {
"minLength": 1,
"type": "string"
},
"type": {
"enum": [
"png",
"jpeg",
"webp"
],
"type": "string"
},
"viewport": {
"additionalProperties": false,
"properties": {
"deviceScaleFactor": {
"maximum": 3,
"minimum": 0.1,
"type": "number"
},
"height": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
},
"width": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
}
},
"type": "object"
},
"selectors": {
"description": "CSS selectors for the `elements` format.",
"items": {
"minLength": 1,
"type": "string"
},
"minItems": 1,
"type": "array"
},
"url": {
"description": "Page to process.",
"format": "uri",
"type": "string"
},
"viewport": {
"additionalProperties": false,
"description": "The window to render in: `width`, `height`, `deviceScaleFactor`.",
"properties": {
"deviceScaleFactor": {
"maximum": 3,
"minimum": 0.1,
"type": "number"
},
"height": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
},
"width": {
"maximum": 4096,
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"wait": {
"additionalProperties": false,
"description": "When to consider the page loaded: `until` (load, domcontentloaded, networkidle0, networkidle2), `selector` to wait for, `timeout` in ms.",
"properties": {
"selector": {
"minLength": 1,
"type": "string"
},
"timeout": {
"maximum": 60000,
"minimum": 100,
"type": "integer"
},
"until": {
"enum": [
"load",
"domcontentloaded",
"networkidle0",
"networkidle2"
],
"type": "string"
}
},
"type": "object"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "web_session_open",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:564a68f22fccf828e48545b7da9965278c01041826a3be386a12628c320b2760 | sha256sum