Card snapshot
api.agentwork.run
·
2026-10-20 23:21:13 UTC
·
986121d38c5f06af1572ef96803db3538bd89b3c983bb8fa49f3e59cb08ba052
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.10.1",
"description": "Ten pay-per-call tools for agents: web read, fetch URL and URL to Markdown (batch, optional JavaScript rendering), batch web contents (up to 20 URLs), website change monitoring with hashes and line diffs, UK attraction changes, PDF text extraction and PDF pre-check, prompt-injection check (pattern rules plus a local Qwen3-4B classifier, rules-only fallback) and sanctions screening (UK, OFAC, EU, UN lists). x402 USDC on Base or Algorand, no account or API key.",
"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.003",
"web.read.batch_per_url": "0.003",
"web.read.render_per_url": "0.01",
"web.read.safe_per_url": "0.001",
"web.changes": "0.005",
"web.changes.batch_per_url": "0.003",
"pdf.read": "0.01",
"uk.attractions.changes": "0.01",
"web.contents": "0.002",
"pdf.info": "0.001",
"text.injection_check": "0.003",
"compliance.sanctions_screen": "0.01"
},
"per_service_usdc_algorand": {
"web.read": "0.006",
"web.read.batch_per_url": "0.006",
"web.read.render_per_url": "0.02",
"web.read.safe_per_url": "0.002",
"web.changes": "0.01",
"web.changes.batch_per_url": "0.006",
"pdf.read": "0.01",
"uk.attractions.changes": "0.01",
"web.contents": "0.004",
"pdf.info": "0.002",
"text.injection_check": "0.006",
"compliance.sanctions_screen": "0.01"
},
"note": "web.read (and its /v1/web/fetch and /v1/web/markdown variants): one URL $0.003 Base / $0.006 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.003 per URL Base ($0.006 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."
},
"safe": {
"type": "boolean",
"default": false,
"description": "Add a prompt-injection scan of each page (safety: verdict clean/suspicious/injection, score, flagged excerpts). +$0.001 per URL on Base (+$0.002 Algorand)."
},
"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": [
"{\"skill\":\"web.read\",\"input\":{\"url\":\"https://example.com\"}}",
"{\"skill\":\"web.read\",\"input\":{\"url\":\"https://example.com\",\"format\":\"markdown\"}}",
"{\"skill\":\"web.read\",\"input\":{\"urls\":[\"https://example.com\",\"https://www.iana.org/help/example-domains\"],\"format\":\"markdown\"}}",
"{\"skill\":\"web.read\",\"input\":{\"url\":\"https://example.com\",\"render\":true,\"format\":\"markdown\"}}",
"{\"skill\":\"web.read\",\"input\":{\"url\":\"https://www.iana.org/help/example-domains\",\"selector\":\"main\"}}"
],
"price_usdc": {
"base": {
"single": "0.003",
"batch_per_url": "0.003",
"render_per_url": "0.01",
"safe_per_url": "0.001"
},
"algorand": {
"single": "0.006",
"batch_per_url": "0.006",
"render_per_url": "0.02",
"safe_per_url": "0.002"
}
},
"tags": [
"web",
"research",
"extraction",
"rag",
"text",
"markdown",
"web-read",
"fetch-url",
"url-to-markdown",
"scrape",
"batch",
"javascript-rendering"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json"
],
"input_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"
}
}
},
{
"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": [
"{\"skill\":\"web.changes\",\"input\":{\"url\":\"https://example.com\"}}",
"{\"skill\":\"web.changes\",\"input\":{\"url\":\"https://example.com\",\"previous_sha256\":\"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\"}}",
"{\"skill\":\"web.changes\",\"input\":{\"url\":\"https://example.com\",\"previous_text\":\"Example Domain\\nOld text.\",\"diff_summary\":true}}",
"{\"skill\":\"web.changes\",\"input\":{\"items\":[{\"url\":\"https://example.com\",\"previous_sha256\":\"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\"},\"https://www.iana.org/help/example-domains\"],\"diff_summary\":true}}",
"{\"skill\":\"web.changes\",\"input\":{\"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"
}
},
"tags": [
"web",
"research",
"monitoring",
"change-detection",
"website-change-monitoring",
"webpage-diff",
"batch",
"changelog"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json"
],
"input_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"
}
}
},
{
"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": [
"{\"skill\":\"pdf.read\",\"input\":{\"url\":\"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf\"}}"
],
"price_usdc": {
"base": {
"single": "0.01"
},
"algorand": {
"single": "0.01"
}
},
"tags": [
"pdf",
"text-extraction",
"documents",
"rag",
"pdf-to-text",
"extract-text-from-pdf",
"pdf-text-extraction"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json"
],
"input_examples": {
"single": {
"url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
}
}
},
{
"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.003 per URL Base ($0.006 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."
},
"safe": {
"type": "boolean",
"default": false,
"description": "Add a prompt-injection scan of each page (safety: verdict clean/suspicious/injection, score, flagged excerpts). +$0.001 per URL on Base (+$0.002 Algorand)."
},
"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": [
"{\"skill\":\"web.fetch\",\"input\":{\"url\":\"https://example.com\"}}",
"{\"skill\":\"web.fetch\",\"input\":{\"urls\":[\"https://example.com\",\"https://www.iana.org/help/example-domains\"]}}",
"{\"skill\":\"web.fetch\",\"input\":{\"url\":\"https://example.com\",\"render\":true}}"
],
"price_usdc": {
"base": {
"single": "0.003",
"batch_per_url": "0.003",
"render_per_url": "0.01",
"safe_per_url": "0.001"
},
"algorand": {
"single": "0.006",
"batch_per_url": "0.006",
"render_per_url": "0.02",
"safe_per_url": "0.002"
}
},
"tags": [
"web",
"fetch-url",
"url-fetch",
"http",
"text",
"batch",
"javascript-rendering"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json"
],
"input_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
}
}
},
{
"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.003 per URL Base ($0.006 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."
},
"safe": {
"type": "boolean",
"default": false,
"description": "Add a prompt-injection scan of each page (safety: verdict clean/suspicious/injection, score, flagged excerpts). +$0.001 per URL on Base (+$0.002 Algorand)."
},
"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": [
"{\"skill\":\"web.markdown\",\"input\":{\"url\":\"https://example.com\"}}",
"{\"skill\":\"web.markdown\",\"input\":{\"urls\":[\"https://example.com\",\"https://www.iana.org/help/example-domains\"]}}",
"{\"skill\":\"web.markdown\",\"input\":{\"url\":\"https://example.com\",\"render\":true}}"
],
"price_usdc": {
"base": {
"single": "0.003",
"batch_per_url": "0.003",
"render_per_url": "0.01",
"safe_per_url": "0.001"
},
"algorand": {
"single": "0.006",
"batch_per_url": "0.006",
"render_per_url": "0.02",
"safe_per_url": "0.002"
}
},
"tags": [
"web",
"markdown",
"scrape-url-to-markdown",
"url-to-markdown",
"html-to-markdown",
"rag",
"llm-context",
"batch",
"javascript-rendering"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json"
],
"input_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
}
}
},
{
"id": "uk.attractions.changes",
"name": "UK attraction changes",
"aliases": [
"uk_attraction_changes",
"uk_theme_park_changes",
"change_radar"
],
"description": "UK attraction website changes: confirmed price, hours, closure, offer and terms changes from daily HTML checks of 28 UK family attractions (Change Radar). $0.01 USDC on Base or Algorand. Filter by attraction slug, since date or category. Coverage is small and change volume is currently low; only differences seen on two consecutive runs are included. No fabricated data.",
"method": "POST",
"url": "https://api.agentwork.run/v1/uk-attractions/changes",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"attraction": {
"type": "string",
"description": "Attraction slug (e.g. flamingo-land). Optional."
},
"since": {
"type": "string",
"description": "ISO date or datetime; only changes at or after this time. Optional."
},
"category": {
"type": "string",
"enum": [
"price",
"hours",
"closure",
"offer",
"terms",
"other"
],
"description": "Change category filter. Optional."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"ok",
"count",
"changes"
],
"properties": {
"ok": {
"const": true
},
"product": {
"type": "string"
},
"count": {
"type": "integer"
},
"filters": {
"type": "object"
},
"coverage": {
"type": "object"
},
"note": {
"type": "string"
},
"exported_at": {
"type": "string"
},
"changes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"attraction": {
"type": "string"
},
"attraction_name": {
"type": "string"
},
"change_type": {
"type": "string"
},
"categories": {
"type": "array",
"items": {
"type": "string"
}
},
"before": {
"type": "array",
"items": {
"type": "string"
}
},
"after": {
"type": "array",
"items": {
"type": "string"
}
},
"detected_at": {
"type": "string"
},
"source_url": {
"type": "string"
},
"confirmed": {
"type": "boolean"
},
"summary": {
"type": "string"
}
}
}
}
}
},
"examples": [
"{\"skill\":\"uk.attractions.changes\",\"input\":{}}",
"{\"skill\":\"uk.attractions.changes\",\"input\":{\"attraction\":\"flamingo-land\"}}",
"{\"skill\":\"uk.attractions.changes\",\"input\":{\"category\":\"hours\"}}",
"{\"skill\":\"uk.attractions.changes\",\"input\":{\"since\":\"2026-10-01\"}}"
],
"price_usdc": {
"base": {
"single": "0.01"
},
"algorand": {
"single": "0.01"
}
},
"tags": [
"uk-attractions",
"theme-parks",
"change-detection",
"uk-travel",
"opening-hours",
"pricing"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json"
],
"input_examples": {
"all": {},
"by_attraction": {
"attraction": "flamingo-land"
},
"by_category": {
"category": "hours"
},
"since": {
"since": "2026-10-01"
}
}
},
{
"id": "web.contents",
"name": "Web contents (batch URLs to Markdown)",
"aliases": [
"get_contents",
"web_contents",
"batch_urls_to_markdown",
"urls_to_text"
],
"description": "Web contents: up to 20 URLs to clean Markdown or text in one call, $0.002 per URL. Batch web page contents for RAG and research agents \u2014 send 1-20 public URLs, get per-URL Markdown (or text), title, final URL, SHA-256 and inline errors. $0.002 per URL on Base ($0.004 Algorand); optional safe=true adds a prompt-injection scan per URL (+$0.001). Charged only if at least one URL succeeds. No account.",
"method": "POST",
"url": "https://api.agentwork.run/v1/web/contents",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"description": "Send urls (1-20) or a single url. format defaults to markdown.",
"properties": {
"urls": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"uniqueItems": true,
"items": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"description": "1-20 public HTTP/HTTPS URLs. $0.002 each on Base ($0.004 Algorand)."
},
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "S
… truncated here: the card is 88,996 characters as printed. The complete card is published at https://api.agentwork.run/.well-known/agent-card.json.