oassis — web for agents
What this MCP does
Searches, maps, scrapes, crawls, and interactively browses web pages and documents, including structured extraction and browser actions.
Tools
Input schema
{'type': 'object', 'required': ['sessionId', 'actions'], 'properties': {'url': {'type': 'string', 'description': 'Page to process.'}, 'json': {'type': 'object', 'properties': {'prompt': {'type': 'string'}, 'schema': {'type': 'object'}}, 'description': 'For the `json` format: `prompt` and/or `schema`.'}, 'wait': {'type': 'object', 'properties': {'until': {'enum': ['load', 'domcontentloaded', 'networkidle0', 'networkidle2'], 'type': 'string'}, 'timeout': {'type': 'number'}, 'selector': {'type': 'string'}}, 'description': 'When to consider the page loaded: `until`, `selector`, `timeout`.'}, 'maxAge': {'type': 'number', '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.'}, 'actions': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Actions, in order.'}, 'formats': {'type': 'array', 'items': {'enum': ['html', 'markdown', 'links', 'screenshot', 'pdf', 'elements', 'json', 'accessibility', 'controls'], 'type': 'string'}, 'description': 'Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt`.'}, 'selectors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CSS selectors for `elements`.'}, 'sessionId': {'type': 'string', 'description': 'The one web_session_open returned.'}}}
Input schema
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'limit': {'type': 'number', 'description': 'Results to return (default 50).'}, 'cancel': {'type': 'boolean', 'description': 'Stop the batch and refund what it did not read.'}}}
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Where to start.'}, 'limit': {'type': 'number', 'description': 'Pages it may read (default 25, max 200).'}, 'maxAge': {'type': 'number', '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.'}, 'formats': {'type': 'array', 'items': {'enum': ['html', 'markdown', 'links', 'screenshot', 'pdf', 'elements', 'json', 'accessibility', 'controls'], 'type': 'string'}, 'description': 'Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt`.'}, 'maxDepth': {'type': 'number', 'description': 'How far to follow links (default 2, max 5).'}, 'excludePaths': {'type': 'array', 'items': {'type': 'string'}}, 'includePaths': {'type': 'array', 'items': {'type': 'string'}}, 'includeSubdomains': {'type': 'boolean'}}}
Input schema
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string'}, 'limit': {'type': 'number', 'description': 'Pages to return (default 50).'}, 'cancel': {'type': 'boolean', 'description': 'Stop the crawl and refund what it did not read.'}}}
Input schema
{'type': 'object', 'required': ['verdict'], 'properties': {'url': {'type': 'string', 'description': 'The page that came out wrong.'}, 'route': {'type': 'string', 'description': 'Which tool or endpoint it is about.'}, 'comment': {'type': 'string', 'description': 'What you expected and what you got.'}, 'verdict': {'enum': ['good', 'bad'], 'type': 'string'}, 'reference': {'type': 'string', 'description': 'The jobId or sessionId it happened on.'}}}
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The site to map.'}, 'limit': {'type': 'number', 'description': 'Urls to return (default 1000, max 5000).'}, 'search': {'type': 'string', 'description': 'Keep only urls containing this text.'}, 'includePage': {'type': 'boolean', 'description': 'Render the page too (default true).'}, 'excludePaths': {'type': 'array', 'items': {'type': 'string'}}, 'includePaths': {'type': 'array', 'items': {'type': 'string'}}, 'includeSubdomains': {'type': 'boolean'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'url': {'type': 'string', 'description': 'Page to process.'}, 'html': {'type': 'string', 'description': 'Raw HTML instead of `url`.'}, 'json': {'type': 'object', 'properties': {'prompt': {'type': 'string'}, 'schema': {'type': 'object'}}, 'description': 'For the `json` format: `prompt` and/or `schema`.'}, 'wait': {'type': 'object', 'properties': {'until': {'enum': ['load', 'domcontentloaded', 'networkidle0', 'networkidle2'], 'type': 'string'}, 'timeout': {'type': 'number'}, 'selector': {'type': 'string'}}, 'description': 'When to consider the page loaded: `until`, `selector`, `timeout`.'}, 'maxAge': {'type': 'number', '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.'}, 'formats': {'type': 'array', 'items': {'enum': ['html', 'markdown', 'links', 'screenshot', 'pdf', 'elements', 'json', 'accessibility', 'controls'], 'type': 'string'}, 'description': 'Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt`.'}, 'selectors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CSS selectors for `elements`.'}}}
Input schema
{'type': 'object', 'required': ['urls'], 'properties': {'json': {'type': 'object', 'properties': {'prompt': {'type': 'string'}, 'schema': {'type': 'object'}}, 'description': 'For the `json` format: `prompt` and/or `schema`.'}, 'urls': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The urls to read, 2 to 50. They do not have to share a site.'}, 'wait': {'type': 'object', 'properties': {'until': {'enum': ['load', 'domcontentloaded', 'networkidle0', 'networkidle2'], 'type': 'string'}, 'timeout': {'type': 'number'}, 'selector': {'type': 'string'}}, 'description': 'When to consider the page loaded: `until`, `selector`, `timeout`.'}, 'maxAge': {'type': 'number', '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.'}, 'formats': {'type': 'array', 'items': {'enum': ['html', 'markdown', 'links', 'screenshot', 'pdf', 'elements', 'json', 'accessibility', 'controls'], 'type': 'string'}, 'description': 'Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt`.'}, 'selectors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CSS selectors for `elements`.'}}}
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number', 'description': 'Results (default 10, max 50).'}, 'query': {'type': 'string', 'description': 'What to search for.'}, 'since': {'type': 'string', 'description': 'Only results published after this ISO date.'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only these domains.'}, 'snippets': {'type': 'boolean', 'description': 'Text alongside each result (default true).'}, 'excludeDomains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Never these domains.'}}}
Input schema
{'type': 'object', 'required': ['sessionId'], 'properties': {'sessionId': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Page to process.'}, 'json': {'type': 'object', 'properties': {'prompt': {'type': 'string'}, 'schema': {'type': 'object'}}, 'description': 'For the `json` format: `prompt` and/or `schema`.'}, 'wait': {'type': 'object', 'properties': {'until': {'enum': ['load', 'domcontentloaded', 'networkidle0', 'networkidle2'], 'type': 'string'}, 'timeout': {'type': 'number'}, 'selector': {'type': 'string'}}, 'description': 'When to consider the page loaded: `until`, `selector`, `timeout`.'}, 'maxAge': {'type': 'number', '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.'}, 'formats': {'type': 'array', 'items': {'enum': ['html', 'markdown', 'links', 'screenshot', 'pdf', 'elements', 'json', 'accessibility', 'controls'], 'type': 'string'}, 'description': 'Outputs you want in the same response. `controls` is the map of what can be clicked; `elements` needs `selectors`; `json` needs `json.prompt`.'}, 'selectors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CSS selectors for `elements`.'}}}
Recent tool changes
Similar MCP servers
apis-io
Provides catalog search, comparison, scoring, enrichment, lists, and dataset exports for APIs, providers, specifications, workflo…
Tools for Agents
Provides web research and extraction workflows, crawling, browser automation, PDF and book OCR, text processing, embeddings, and …
canton-ccpedia
Searches and explains Canton Network and Daml documentation, governance proposals, forums, code examples, APIs, releases, and eco…
webbersites-x402-data-api
Provides pay-per-call utilities for web scraping, SEO and accessibility audits, document extraction, DNS and email checks, crypto…
api-evangelist
Provides API governance analysis, OpenAPI overlays and version diffs, security-sensitive field classification, code samples, matu…
arch-tools-mcp
Provides general-purpose agent APIs for browser automation, web and PDF extraction, data conversion, email operations, fact check…
Agent Margin Router
Provides pay-per-call tools for blockchain balances, contracts, prices, gas, domains, web extraction, package intelligence, news,…
1cent Web Intelligence for AI Agents
Performs SSRF-safe public web inspection, URL extraction, metadata and content analysis, accessibility checks, feed and sitemap d…