Card snapshot
api.agentwork.run
·
2026-10-19 12:33:56 UTC
·
8ada14735609f8c4be00a5b6b5a53f69e87aaf8cfeafd76ed43262526af17361
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"name": "AgentWork Web Evidence",
"version": "web-evidence-1.2.4",
"description": "Web read, fetch URL and scrape URL to markdown (batch up to 10, optional JavaScript rendering); PDF text extraction; website change monitoring with hashes and line diffs. For RAG and research agents. x402 USDC on Base or Algorand, no account.",
"aliases": [
"web_read",
"read_webpage",
"fetch_url",
"url_to_markdown",
"scrape_url_to_markdown",
"extract_text_from_pdf",
"pdf_to_text",
"pdf_text_extraction",
"website_change_monitoring"
],
"url": "https://api.agentwork.run",
"documentationUrl": "https://api.agentwork.run/skill.md",
"recipes": "https://api.agentwork.run/recipes.md",
"openapi": "https://api.agentwork.run/openapi.json",
"sample": "https://api.agentwork.run/v1/web/sample",
"examples": {
"monitor": "https://api.agentwork.run/examples/monitor-client.mjs",
"research_brief": "https://api.agentwork.run/examples/research-brief.mjs",
"workflows": "https://api.agentwork.run/workflows.md"
},
"pricing": {
"currency": "USDC",
"networks": [
"eip155:8453",
"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8="
],
"per_service_usdc": {
"web.read": "0.005",
"web.read.batch_per_url": "0.003",
"web.read.render_per_url": "0.01",
"web.changes": "0.005",
"web.changes.batch_per_url": "0.003",
"pdf.read": "0.01"
},
"per_service_usdc_algorand": {
"web.read": "0.01",
"web.read.batch_per_url": "0.006",
"web.read.render_per_url": "0.02",
"web.changes": "0.01",
"web.changes.batch_per_url": "0.006",
"pdf.read": "0.01"
},
"note": "web.read (and its /v1/web/fetch and /v1/web/markdown variants): one URL $0.005 Base / $0.01 Algorand; batches of 2-10 URLs $0.003 per URL ($0.006 Algorand); render=true $0.01 per URL ($0.02 Algorand). web.changes: one URL $0.005 / $0.01; items[] of 2-10 $0.003 per URL ($0.006 Algorand). The live 402 challenge states the exact total for your request body. Algorand web tools are 2x because the facilitator no longer sponsors sub-cent gas. PDF $0.01 on both.",
"account_required": false
},
"payments": {
"protocol": "x402",
"version": 2,
"networks": [
{
"network": "eip155:8453",
"payTo": "0x1cfC6489bC9703a2A49715b8a746D8c6075F3A80",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"currency": "USDC"
},
{
"network": "algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=",
"payTo": "PFHYLVHX77ANNQVF67LK6EVYB34D5VDIUOWLOL5SX367M366DBLOQQAOCA",
"asset": "31566704",
"currency": "USDC"
}
]
},
"skills": [
{
"id": "web.read",
"name": "Web read / read webpage",
"aliases": [
"web_read",
"read_webpage",
"url_to_text"
],
"description": "Webpage text extraction: extract clean text from any webpage. Extract the clean readable text from a public webpage with title, headings, links and SHA-256; add format=markdown for Markdown or render=true to render JavaScript pages. Web read / fetch URL / scrape URL to markdown \u2014 public webpage to clean text or Markdown with headings, links and SHA-256, for RAG and research. Batch up to 10 URLs; optional JavaScript rendering (headless Chromium). $0.005 per URL Base ($0.01 Algorand); batch of 2-10 $0.003/URL ($0.006); render $0.01/URL ($0.02). Synchronous JSON, no account; respects robots.txt; no paywall bypass. Failed reads not settled.",
"method": "POST",
"url": "https://api.agentwork.run/v1/web/read",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"urls"
]
}
],
"description": "Send url (one page) or urls (batch of 2-10). Omit format for the original text response; format=markdown adds a markdown field. render=true loads the page in headless Chromium first.",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTP/HTTPS URL; ports 80/443 and public IPv4 resolution only. Use url or urls, not both."
},
"urls": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"uniqueItems": true,
"items": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"description": "Batch of up to 10 public URLs. 2-10 URLs are priced $0.003 each on Base ($0.006 Algorand). Charged in full if at least one URL succeeds; per-URL errors are returned inline."
},
"format": {
"type": "string",
"enum": [
"text",
"markdown"
],
"default": "text",
"description": "markdown adds markdown + markdown_sha256 (text is still returned)"
},
"selector": {
"type": "string",
"maxLength": 300,
"description": "Optional CSS selector (e.g. \"main\", \"#pricing\", \"article .changelog\"). Only the first matching element is extracted; no match returns 422 SELECTOR_NOT_FOUND and nothing is settled. HTML only."
},
"render": {
"type": "boolean",
"default": false,
"description": "Execute JavaScript in headless Chromium before extraction. $0.01 per URL on Base ($0.02 Algorand). Images, media and fonts are not loaded."
},
"max_chars": {
"type": "integer",
"minimum": 1000,
"maximum": 60000,
"default": 20000,
"description": "Maximum returned characters per URL (applies to text and markdown separately)"
}
}
},
"outputSchema": {
"type": "object",
"required": [
"ok"
],
"description": "Single URL: one result. Batch (urls[]): results[] in the same order, each a result or an inline error.",
"properties": {
"ok": {
"const": true
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"final_url": {
"type": "string"
},
"fetched_at": {
"type": "string",
"format": "date-time"
},
"source_status": {
"type": "integer"
},
"content_type": {
"type": "string"
},
"source_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"language": {
"type": "string"
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"characters": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"headings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "integer"
},
"text": {
"type": "string"
}
}
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
},
"format": {
"enum": [
"markdown"
]
},
"markdown": {
"type": "string"
},
"markdown_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"selector": {
"type": "string"
},
"javascript_rendered": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"content_is_untrusted": {
"const": true
},
"request_id": {
"type": "string"
},
"batch": {
"const": true
},
"count": {
"type": "integer"
},
"succeeded": {
"type": "integer"
},
"failed": {
"type": "integer"
},
"charged_urls": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"ok": {
"const": true
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"final_url": {
"type": "string"
},
"fetched_at": {
"type": "string",
"format": "date-time"
},
"source_status": {
"type": "integer"
},
"content_type": {
"type": "string"
},
"source_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"language": {
"type": "string"
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"characters": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"headings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "integer"
},
"text": {
"type": "string"
}
}
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
},
"format": {
"enum": [
"markdown"
]
},
"markdown": {
"type": "string"
},
"markdown_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"selector": {
"type": "string"
},
"javascript_rendered": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"content_is_untrusted": {
"const": true
},
"request_id": {
"type": "string"
}
}
},
{
"type": "object",
"properties": {
"ok": {
"const": false
},
"url": {
"type": "string"
},
"error": {
"type": "string"
},
"status": {
"type": "integer"
},
"message": {
"type": "string"
}
}
}
]
}
}
}
},
"examples": {
"single": {
"url": "https://example.com"
},
"markdown": {
"url": "https://example.com",
"format": "markdown"
},
"batch": {
"urls": [
"https://example.com",
"https://www.iana.org/help/example-domains"
],
"format": "markdown"
},
"render": {
"url": "https://example.com",
"render": true,
"format": "markdown"
},
"selector": {
"url": "https://www.iana.org/help/example-domains",
"selector": "main"
}
},
"price_usdc": {
"base": {
"single": "0.005",
"batch_per_url": "0.003",
"render_per_url": "0.01"
},
"algorand": {
"single": "0.01",
"batch_per_url": "0.006",
"render_per_url": "0.02"
}
}
},
{
"id": "web.changes",
"name": "Website change monitoring",
"aliases": [
"website_change_monitoring",
"webpage_change_detection",
"monitor_url"
],
"description": "Website change monitoring: detect webpage changes. Website change monitoring / webpage change detection \u2014 text_sha256 or previous_text diff for documentation, pricing-page, changelog and policy monitoring. Batch up to 10 URLs in one call (items[]); optional CSS selector scoping and a one-line diff summary. $0.005 per URL Base ($0.01 Algorand); batch of 2-10 $0.003/URL ($0.006). Caller stores baseline; no server watch list. HTML/text only; no JS render. Failed checks not settled.",
"method": "POST",
"url": "https://api.agentwork.run/v1/web/changes",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"items"
]
}
],
"description": "Single URL: url + previous_sha256 or previous_text (omit both for the first snapshot). Batch: items[] of 1-10 {url, previous_sha256|previous_text}; 2-10 items are $0.003 each on Base ($0.006 Algorand). Keep max_chars and selector identical between runs.",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTP/HTTPS URL; ports 80/443 and public IPv4 resolution only. Use url or items, not both."
},
"max_chars": {
"type": "integer",
"minimum": 1000,
"maximum": 60000,
"default": 20000,
"description": "Maximum returned characters; keep identical between comparisons"
},
"previous_text": {
"type": "string",
"maxLength": 60000,
"description": "Exact text from the prior read, for line additions/removals"
},
"previous_sha256": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "Prior text_sha256; provides a compact change check without line diff"
},
"items": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"description": "Batch of up to 10 pages to check in one paid call. Each item is a URL string (first snapshot) or {url, previous_sha256} / {url, previous_text}. Charged for every item when at least one succeeds; per-item errors are returned inline. Request body limit 1 MiB.",
"items": {
"anyOf": [
{
"type": "string",
"format": "uri",
"maxLength": 2048
},
{
"type": "object",
"required": [
"url"
],
"additionalProperties": false,
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"previous_text": {
"type": "string",
"maxLength": 60000,
"description": "Exact text from the prior read, for line additions/removals"
},
"previous_sha256": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$",
"description": "Prior text_sha256; provides a compact change check without line diff"
}
}
}
]
}
},
"selector": {
"type": "string",
"maxLength": 300,
"description": "Optional CSS selector (e.g. \"main\", \"#pricing\", \"article .changelog\"). Only the first matching element is extracted; no match returns 422 SELECTOR_NOT_FOUND and nothing is settled. HTML only. Applied to every URL; comparison then covers only that element."
},
"diff_summary": {
"type": "boolean",
"default": false,
"description": "Add comparison.summary: one deterministic sentence such as \"Changed: 2 line(s) added, 1 removed. Added: ...\"."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"ok"
],
"description": "Single URL: one result with comparison. Batch (items[]): results[] in the same order, each a result with comparison or an inline error.",
"properties": {
"ok": {
"const": true
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"final_url": {
"type": "string"
},
"fetched_at": {
"type": "string",
"format": "date-time"
},
"source_status": {
"type": "integer"
},
"content_type": {
"type": "string"
},
"source_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"language": {
"type": "string"
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"characters": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"headings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "integer"
},
"text": {
"type": "string"
}
}
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
},
"format": {
"enum": [
"markdown"
]
},
"markdown": {
"type": "string"
},
"markdown_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"selector": {
"type": "string"
},
"javascript_rendered": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"content_is_untrusted": {
"const": true
},
"request_id": {
"type": "string"
},
"comparison": {
"type": "object",
"description": "changed is null on the first snapshot (no baseline), else true/false",
"properties": {
"changed": {
"type": [
"boolean",
"null"
]
},
"previous_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"current_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"added": {
"type": "array",
"items": {
"type": "string"
}
},
"removed": {
"type": "array",
"items": {
"type": "string"
}
},
"added_lines": {
"type": "integer"
},
"removed_lines": {
"type": "integer"
},
"summary": {
"type": "string"
},
"selector": {
"type": "string"
}
}
},
"batch": {
"const": true
},
"count": {
"type": "integer"
},
"succeeded": {
"type": "integer"
},
"failed": {
"type": "integer"
},
"charged_urls": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"ok": {
"const": true
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"final_url": {
"type": "string"
},
"fetched_at": {
"type": "string",
"format": "date-time"
},
"source_status": {
"type": "integer"
},
"content_type": {
"type": "string"
},
"source_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"language": {
"type": "string"
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"characters": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"headings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "integer"
},
"text": {
"type": "string"
}
}
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
},
"format": {
"enum": [
"markdown"
]
},
"markdown": {
"type": "string"
},
"markdown_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"selector": {
"type": "string"
},
"javascript_rendered": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"content_is_untrusted": {
"const": true
},
"request_id": {
"type": "string"
},
"comparison": {
"type": "object",
"description": "changed is null on the first snapshot (no baseline), else true/false",
"properties": {
"changed": {
"type": [
"boolean",
"null"
]
},
"previous_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"current_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"added": {
"type": "array",
"items": {
"type": "string"
}
},
"removed": {
"type": "array",
"items": {
"type": "string"
}
},
"added_lines": {
"type": "integer"
},
"removed_lines": {
"type": "integer"
},
"summary": {
"type": "string"
},
"selector": {
"type": "string"
}
}
}
},
"description": "text is omitted when comparison.changed is false"
},
{
"type": "object",
"properties": {
"ok": {
"const": false
},
"url": {
"type": "string"
},
"error": {
"type": "string"
},
"status": {
"type": "integer"
},
"message": {
"type": "string"
}
}
}
]
}
}
}
},
"examples": {
"first_snapshot": {
"url": "https://example.com"
},
"hash_check": {
"url": "https://example.com",
"previous_sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
},
"line_diff": {
"url": "https://example.com",
"previous_text": "Example Domain\nOld text.",
"diff_summary": true
},
"batch": {
"items": [
{
"url": "https://example.com",
"previous_sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
},
"https://www.iana.org/help/example-domains"
],
"diff_summary": true
},
"selector": {
"url": "https://www.iana.org/help/example-domains",
"previous_sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"selector": "main"
}
},
"price_usdc": {
"base": {
"single": "0.005",
"batch_per_url": "0.003"
},
"algorand": {
"single": "0.01",
"batch_per_url": "0.006"
}
}
},
{
"id": "pdf.read",
"name": "PDF text extraction",
"aliases": [
"pdf_text_extraction",
"extract_text_from_pdf",
"pdf_to_text"
],
"description": "PDF text extraction: extract text from a PDF URL. PDF text extraction / PDF to text \u2014 extract text from a public digital PDF into page-numbered JSON for RAG (no OCR). $0.01 USDC Base or Algorand. Caps 20 pages / 5 MiB / 100k chars; source + text SHA-256. No passwords or table reconstruction. Failed extractions not settled.",
"method": "POST",
"url": "https://api.agentwork.run/v1/pdf/read",
"inputSchema": {
"type": "object",
"required": [
"url"
],
"additionalProperties": false,
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTP/HTTPS URL to a digital PDF; no credentials or private addresses."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"ok"
],
"properties": {
"ok": {
"const": true
},
"url": {
"type": "string"
},
"page_count": {
"type": "integer"
},
"pages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"page": {
"type": "integer"
},
"text": {
"type": "string"
},
"characters": {
"type": "integer"
}
}
}
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"source_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"truncated": {
"type": "boolean"
},
"empty_text_pages": {
"type": "array",
"items": {
"type": "integer"
}
},
"ocr_performed": {
"const": false
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"examples": {
"single": {
"url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
}
},
"price_usdc": {
"base": {
"single": "0.01"
},
"algorand": {
"single": "0.01"
}
}
},
{
"id": "web.fetch",
"name": "Fetch URL (compact)",
"aliases": [
"fetch_url",
"url_fetch"
],
"description": "Fetch URL: compact page text and final URL. Fetch URL \u2014 compact fetch of a public webpage: final URL, HTTP status, content type, title, clean text and text_sha256 (no link or heading lists). Same engine and prices as web/read: $0.005 per URL Base ($0.01 Algorand); batch of 2-10 urls $0.003/URL; render=true $0.01/URL. robots.txt respected. Failed fetches not settled.",
"method": "POST",
"url": "https://api.agentwork.run/v1/web/fetch",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"urls"
]
}
],
"description": "Send url (one page) or urls (batch of 2-10). Compact output: final_url, source_status, content_type, title, text, text_sha256. render=true loads the page in headless Chromium first.",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTP/HTTPS URL; ports 80/443 and public IPv4 resolution only. Use url or urls, not both."
},
"urls": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"uniqueItems": true,
"items": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"description": "Batch of up to 10 public URLs. 2-10 URLs are priced $0.003 each on Base ($0.006 Algorand). Charged in full if at least one URL succeeds; per-URL errors are returned inline."
},
"format": {
"type": "string",
"enum": [
"text",
"markdown"
],
"default": "text",
"description": "markdown adds markdown + markdown_sha256 (text is still returned)"
},
"selector": {
"type": "string",
"maxLength": 300,
"description": "Optional CSS selector (e.g. \"main\", \"#pricing\", \"article .changelog\"). Only the first matching element is extracted; no match returns 422 SELECTOR_NOT_FOUND and nothing is settled. HTML only."
},
"render": {
"type": "boolean",
"default": false,
"description": "Execute JavaScript in headless Chromium before extraction. $0.01 per URL on Base ($0.02 Algorand). Images, media and fonts are not loaded."
},
"max_chars": {
"type": "integer",
"minimum": 1000,
"maximum": 60000,
"default": 20000,
"description": "Maximum returned characters per URL (applies to text and markdown separately)"
}
}
},
"outputSchema": {
"type": "object",
"required": [
"ok"
],
"description": "Single URL: one result. Batch (urls[]): results[] in the same order, each a result or an inline error.",
"properties": {
"ok": {
"const": true
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"final_url": {
"type": "string"
},
"fetched_at": {
"type": "string",
"format": "date-time"
},
"source_status": {
"type": "integer"
},
"content_type": {
"type": "string"
},
"title": {
"type": "string"
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"characters": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"format": {
"enum": [
"markdown"
]
},
"markdown": {
"type": "string"
},
"markdown_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"selector": {
"type": "string"
},
"javascript_rendered": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"content_is_untrusted": {
"const": true
},
"request_id": {
"type": "string"
},
"batch": {
"const": true
},
"count": {
"type": "integer"
},
"succeeded": {
"type": "integer"
},
"failed": {
"type": "integer"
},
"charged_urls": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"ok": {
"const": true
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"final_url": {
"type": "string"
},
"fetched_at": {
"type": "string",
"format": "date-time"
},
"source_status": {
"type": "integer"
},
"content_type": {
"type": "string"
},
"title": {
"type": "string"
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"characters": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"format": {
"enum": [
"markdown"
]
},
"markdown": {
"type": "string"
},
"markdown_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"selector": {
"type": "string"
},
"javascript_rendered": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"content_is_untrusted": {
"const": true
},
"request_id": {
"type": "string"
}
}
},
{
"type": "object",
"properties": {
"ok": {
"const": false
},
"url": {
"type": "string"
},
"error": {
"type": "string"
},
"status": {
"type": "integer"
},
"message": {
"type": "string"
}
}
}
]
}
}
}
},
"examples": {
"single": {
"url": "https://example.com"
},
"batch": {
"urls": [
"https://example.com",
"https://www.iana.org/help/example-domains"
]
},
"render": {
"url": "https://example.com",
"render": true
}
},
"price_usdc": {
"base": {
"single": "0.005",
"batch_per_url": "0.003",
"render_per_url": "0.01"
},
"algorand": {
"single": "0.01",
"batch_per_url": "0.006",
"render_per_url": "0.02"
}
}
},
{
"id": "web.markdown",
"name": "Scrape URL to markdown",
"aliases": [
"scrape_url_to_markdown",
"url_to_markdown",
"fetch_url_to_markdown"
],
"description": "Webpage to Markdown: convert any URL to clean Markdown. Convert a webpage URL to clean, LLM-ready Markdown for RAG and agents. Scrape URL to markdown \u2014 public webpage to clean Markdown (headings, lists, links, tables, code) plus text and SHA-256, for RAG and LLM context. Same engine and prices as web/read with format=markdown by default: $0.005 per URL Base ($0.01 Algorand); batch of 2-10 urls $0.003/URL; render=true for JavaScript pages $0.01/URL. Failed reads not settled.",
"method": "POST",
"url": "https://api.agentwork.run/v1/web/markdown",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"urls"
]
}
],
"description": "Send url (one page) or urls (batch of 2-10). Returns markdown + markdown_sha256 (text is also returned). render=true loads the page in headless Chromium first.",
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Public HTTP/HTTPS URL; ports 80/443 and public IPv4 resolution only. Use url or urls, not both."
},
"urls": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"uniqueItems": true,
"items": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"description": "Batch of up to 10 public URLs. 2-10 URLs are priced $0.003 each on Base ($0.006 Algorand). Charged in full if at least one URL succeeds; per-URL errors are returned inline."
},
"format": {
"type": "string",
"enum": [
"text",
"markdown"
],
"default": "markdown",
"description": "markdown adds markdown + markdown_sha256 (text is still returned)"
},
"selector": {
"type": "string",
"maxLength": 300,
"description": "Optional CSS selector (e.g. \"main\", \"#pricing\", \"article .changelog\"). Only the first matching element is extracted; no match returns 422 SELECTOR_NOT_FOUND and nothing is settled. HTML only."
},
"render": {
"type": "boolean",
"default": false,
"description": "Execute JavaScript in headless Chromium before extraction. $0.01 per URL on Base ($0.02 Algorand). Images, media and fonts are not loaded."
},
"max_chars": {
"type": "integer",
"minimum": 1000,
"maximum": 60000,
"default": 20000,
"description": "Maximum returned characters per URL (applies to text and markdown separately)"
}
}
},
"outputSchema": {
"type": "object",
"required": [
"ok"
],
"description": "Single URL: one result. Batch (urls[]): results[] in the same order, each a result or an inline error.",
"properties": {
"ok": {
"const": true
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"final_url": {
"type": "string"
},
"fetched_at": {
"type": "string",
"format": "date-time"
},
"source_status": {
"type": "integer"
},
"content_type": {
"type": "string"
},
"source_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"language": {
"type": "string"
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"characters": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"headings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "integer"
},
"text": {
"type": "string"
}
}
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
},
"format": {
"enum": [
"markdown"
]
},
"markdown": {
"type": "string"
},
"markdown_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"selector": {
"type": "string"
},
"javascript_rendered": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"content_is_untrusted": {
"const": true
},
"request_id": {
"type": "string"
},
"batch": {
"const": true
},
"count": {
"type": "integer"
},
"succeeded": {
"type": "integer"
},
"failed": {
"type": "integer"
},
"charged_urls": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"ok": {
"const": true
},
"version": {
"type": "string"
},
"url": {
"type": "string"
},
"final_url": {
"type": "string"
},
"fetched_at": {
"type": "string",
"format": "date-time"
},
"source_status": {
"type": "integer"
},
"content_type": {
"type": "string"
},
"source_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"language": {
"type": "string"
},
"text": {
"type": "string"
},
"text_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"characters": {
"type": "integer"
},
"truncated": {
"type": "boolean"
},
"headings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "integer"
},
"text": {
"type": "string"
}
}
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
},
"format": {
"enum": [
"markdown"
]
},
"markdown": {
"type": "string"
},
"markdown_sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"selector": {
"type": "string"
},
"javascript_rendered": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"content_is_untrusted": {
"const": true
},
"request_id": {
"type": "string"
}
}
},
{
"type": "object",
"properties": {
"ok": {
"const": false
},
"url": {
"type": "string"
},
"error": {
"type": "string"
},
"status": {
"type": "integer"
},
"message": {
"type": "string"
}
}
}
]
}
}
}
},
"examples": {
"single": {
"url": "https://example.com"
},
"batch": {
"urls": [
"https://example.com",
"https://www.iana.org/help/example-domains"
]
},
"render": {
"url": "https://example.com",
"render": true
}
},
"price_usdc": {
"base": {
"single": "0.005",
"batch_per_url": "0.003",
"render_per_url": "0.01"
},
"algorand": {
"single": "0.01",
"batch_per_url": "0.006",
"render_per_url": "0.02"
}
}
}
],
"limits": {
"source_bytes": 1048576,
"max_text_characters": 60000,
"default_text_characters": 20000,
"javascript_rendering": "web.read with render=true (headless Chromium, 15 s per page, 2 MiB rendered HTML)",
"max_batch_urls": 10,
"output_formats": [
"text",
"markdown"
],
"pdf": {
"endpoint": "/v1/pdf/read",
"max_bytes": 5242880,
"max_pages": 20,
"max_text_characters": 100000,
"ocr": false
},
"authentication": false
},
"privacy": "Page text, baselines and target URLs are processed in memory and not retained by this product. Payment receipts and coarse request outcomes (endpoint, outcome, user-agent family, referrer host, daily-rotating salted client hash; no IPs, URLs or bodies) are retained. Upstream and infrastructure providers may keep their own logs."
}