Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
75
💰 Paid API data live JSON-RPC A2A 0.3.0 vweb-evidence-1.10.3 x402 micropay

AgentWork Web Evidence

api.agentwork.run · AgentWork

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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain api.agentwork.run via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
75/100
grade B · 9 criteria
Uptime
98.1%
52 direct probes · 30d
~103 ms response
Observed inflow · 30d
$0.07
13 tx · on-chain
Invocations · 7d
0
1 listing impression — no calls
Card drift · 7d
changed
8 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

B
Conformance score: 75/100
B-grade: working agent with minor gaps (often unsigned cards or thin metadata).
click to expand breakdown click to collapse breakdown
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
pass Live JSON-RPC 25/25
Endpoint responds to a negotiated A2A SendMessage probe (answers in ~103 ms).
partial Protocol version 5/10
Declares pre-1.0 A2A 0.3.0 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` (Major.Minor, no patch number — §3.6) to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 15/15
51/52 probes succeeded (98% uptime).
pass Skill declaration 10/10
Declares 10 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: AgentWork (https://api.agentwork.run). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs
pass Freshness + modern flags 5/5
declares 1 modern capability flag(s) (x402); seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.
Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded
0
invocations 7d
reached the endpoint through us
0
lookups 7d
our API answered about it
1
impressions 7d
appeared in a result list
Per event type (7d)
2
search_click
1
search_impression
Recent events (last 20)
When Event Method Status Latency
2026-10-23T16:04:21 search_impression — 200 ok —
2026-10-22T00:32:54 search_click /agents — ok 2ms
2026-10-19T00:32:52 search_click /agents — ok 9ms
2026-10-18T00:32:53 search_click /agents — ok 24ms
2026-10-17T00:32:52 search_click /agents — ok 6ms
2026-10-16T00:32:52 search_click /agents — ok 1ms
2026-10-15T22:50:00 search_click /agents — ok 1ms
2026-10-15T00:32:55 search_click /agents — ok 1ms
2026-10-14T00:32:55 search_click /agents — ok 1ms
2026-10-13T00:32:53 search_click /agents — ok 29ms
2026-10-12T00:32:53 search_click /agents — ok 3ms
2026-10-11T00:32:53 search_click /agents — ok 2ms
2026-10-10T00:32:53 search_click /agents — ok 2ms
2026-10-09T00:32:53 search_click /agents — ok 3ms
2026-10-08T00:32:52 search_click /agents — ok 4ms
2026-10-07T17:43:26 search_click /agents — ok 14ms
2026-10-07T17:43:01 search_click /agents — ok 4ms
2026-10-07T17:42:23 search_click /agents — ok 3ms
2026-10-06T18:11:16 search_click /agents — ok 2ms
2026-10-06T17:18:12 search_click /agents — ok 4ms

Card history

8 snapshots drifted 7× Every change to agent-card.json
Agent card snapshots
Captured Hash Snapshot
2026-10-21 12:15:39 current 4bb40034457f… view →
2026-10-20 23:21:13 986121d38c5f… view →
2026-10-20 06:07:15 81d1bd966779… view →
2026-10-19 12:33:56 8ada14735609… view →
2026-10-16 15:51:45 86c214ea1088… view →
2026-10-14 23:19:46 f8a4bbf9d7c5… view →
2026-10-10 11:13:38 9df47eb31532… view →
2026-10-02 01:33:11 824767cefb83… view →
Uptime
98.1%
52 direct probes · 30d
Response
114ms
last direct probe
Skills
10
declared
Streaming
—
SSE-capable

Try it

Send a message to this agent live. Your prompt is proxied through Agenstry.

calling agent… ⌘/Ctrl + Enter

Endpoints

Pricing x402 on Base USDC Verified live · 402 challenge Dispute or improve this rating
From $0.0050 per call
Endpoint Price Currency
https://api.agentwork.run/v1/web/read 0.005 USDC
https://api.agentwork.run/v1/pdf/read 0.01 USDC
https://api.agentwork.run/v1/web/fetch 0.005 USDC
https://api.agentwork.run/v1/web/changes — USDC
https://api.agentwork.run/v1/web/markdown — USDC
https://api.agentwork.run/v1/uk-attractions/changes — USDC
Try it ↗ Opens the operator's playground / docs in a new tab.
Settlement wallet: 0x1cfc6489bc9703a2a49715b8a746d8c6075f3a80 on Base · basescan ↗
Listed by facilitators GoPlausible · 5 Coinbase CDP · 3
Observed on-chain inflow verified on-chain
Last 7d
$0.01
4 transfers · synced 2026-10-25
Last 30d
$0.07
13 transfers · synced 2026-10-25
Last 90d PRO
Unlock with Pro
90-day total + 90 days of daily history
USDC inflows on Base. Reproducible via eth_getLogs on USDC Transfer events to the wallet. Inflow to a wallet, not proof that every transfer was a paid call.
How the last 30 days were settled
$0.08 in the ledger, not classified yet. Each transfer is read once to tell facilitator-settled x402 payments from plain transfers. How we classify
Cross-check: Coinbase's Bazaar reports 11 calls in 30 days to this wallet across 3 listed resources; our ledger observed 14 transfers (0 facilitator-settled). Different counters; neither is assumed correct.
Daily 30-day observed-inflow history ↓ −$0.17 since 2026-09-25
2026-09-25 2026-10-25
Last 30 days · 90 days with Pro Peak 30-day total: $0.55 Data points: 31 Total tx (30d window): 13
Payment authenticity evidence confidence How we measure this →
recurring_independent_payers 4/5

Several distinct payers observed, including repeat payers, with no single payer dominating.

Assessed window
30d
9 active of 29 observed
Inflow assessed
$0.07
13 transactions
Payer identities
available
1 evidence caveat
uniform_amount_cadence — Daily settled amounts repeat identically across days, which is consistent with scheduled or scripted activity as well as with flat-rate demand.
Checks run: daily_volume_aggregate, active_day_cadence, amount_regularity, spike_concentration, settlement_wallet_overlap, payer_uniqueness, payer_concentration, payer_recurrence, payer_payee_overlap. Derived from agent_revenue_daily, agents.payment_wallet, agent_payment_transactions. Measured 2026-10-25.
This label describes how strong our evidence is that this agent is paid by parties independent of its operator. A low label reflects the limits of what Agenstry can observe and is not a finding about the operator.
Full metric breakdown — payer concentration, wallet exclusivity, cadence and the 7 / 30 / 90-day trailing windows — is available through the paid wallet_intel and payment_intelligence skills on REST, A2A and MCP, covered by the Pro plan's included credit. API docs →
Agent cardhttps://api.agentwork.run/.well-known/agent-card.json
Providerhttps://api.agentwork.run
Docshttps://api.agentwork.run/skill.md
Discovered via
agentic_market cdp_discovery x402_list recrawl_hot recrawl_warm

Skills · 10 declared by this agent

These skills are declared by the agent. A taxonomy link appears only when we can classify a skill confidently.

Web read / read webpage

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…

canonical Web Content Normalization match 91%
webresearchextractionragtext
Website change monitoring

Website change monitoring: detect webpage changes. Website change monitoring / webpage change detection — text_sha256 or previous_text diff for documentation, p…

No taxonomy category yet
webresearchmonitoringchange-detectionwebsite-change-monitoring
PDF text extraction

PDF text extraction: extract text from a PDF URL. PDF text extraction / PDF to text — extract text from a public digital PDF into page-numbered JSON for RAG (no…

canonical PDF Text Extraction match 98%
pdftext-extractiondocumentsragpdf-to-text
Fetch URL (compact)

Fetch URL: compact page text and final URL. Fetch URL — compact fetch of a public webpage: final URL, HTTP status, content type, title, clean text and text_sha2…

canonical Web Page Metadata Extraction match 88%
webfetch-urlurl-fetchhttptext
Scrape URL to markdown

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 — public w…

canonical Web Content Normalization match 91%
webmarkdownscrape-url-to-markdownurl-to-markdownhtml-to-markdown
UK attraction changes

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…

No taxonomy category yet
uk-attractionstheme-parkschange-detectionuk-travelopening-hours
Web contents (batch URLs to Markdown)

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 — send 1-20 public URLs, …

canonical Web Content Normalization match 91%
webcontentsbatchmarkdownrag
PDF pre-check (info)

PDF pre-check: is this URL a readable digital PDF? $0.001. Checks a public PDF before you pay for extraction: PDF version, page count, size, encryption, fonts (…

canonical PDF Text Extraction match 91%
pdfpdf-infopage-countpre-checkdocuments
Prompt-injection check

Prompt-injection check: scan untrusted text before your agent reads it, $0.003. Flags instruction overrides, role/system-tag spoofing, jailbreak personas, promp…

canonical Prompt Injection Screening match 95%
securityprompt-injectionjailbreakllm-securityguardrails
Sanctions screening (UK, OFAC, EU, UN)

Sanctions screening: fuzzy-match a person or company name against the official UK (FCDO/OFSI), US OFAC SDN, EU and UN sanctions lists, $0.01. One call checks al…

canonical Sanctions Screening match 92%
compliancesanctionskycamlofac

Health · last 30 probes

When HTTP Live JSON-RPC Latency
2026-10-25 07:33:32 200 ✓ 114ms
2026-10-24 17:06:36 200 ✓ 100ms
2026-10-24 05:38:09 200 ✓ 141ms
2026-10-23 15:55:43 200 ✓ 86ms
2026-10-23 03:53:15 200 ✓ 80ms
2026-10-22 14:57:04 200 ✓ 95ms
2026-10-22 01:34:16 200 ✓ 73ms
2026-10-21 12:15:39 200 ✓ 110ms
2026-10-20 23:21:13 200 ✓ 222ms
2026-10-20 06:07:15 200 ✗ 69ms

Who's calling this agent 30d

31 interactions captured (impressions + lookups + A2A calls)

By AI host (caller_kind) · top 3
OAI-SearchBot 22 (71%)
PerplexityBot (crawler) 4 (13%)
Web browser 3 (10%)
Caller geography · top 3
US 27
SG 2
CN 1
Via which API surface · top 3
web 30
rest 1

Public view: top 3 per dimension. Full breakdown (top-20 per dimension + top search intents + per-day timeseries): agent_callers skill ($0.05/call, $0 on Enterprise). Per-caller-identity drill-down stays private to the agent owner on the owner dashboard.

Cheaper or better alternatives per-skill

↓ 5 skills cheaper elsewhere peak save 80.0%

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

AgentReader
Pay-per-call content extraction and web intelligence for AI agents. 11 HTTP endpoints paid per request in USDC on Base via the x402 protocol
agentreader.dev · q 76%
AgentReader
Pay-per-call content extraction and web intelligence for AI agents. 11 HTTP endpoints paid per request in USDC on Base via the x402 protocol
agent-reader.agent-reader.workers.dev · q 76%
Agent Fetch Hub
Pay-per-call web extraction: URL in, clean Markdown out.
Die Netzhandwerker · q 78%
Agent Fetch Hub
Pay-per-call web extraction: URL in, clean Markdown out.
Die Netzhandwerker · q 78%
agent-web live
Charter-clean web toolkit for agents: give it one publicly reachable URL, get back clean, LLM-ready markdown (free), or a screenshot/PDF via
FOOM — foomworks · q 100%
x402 web tools
Pay-per-call web and on-chain data tools for AI agents, settled in USDC on Base via the x402 protocol. No account, no API key — an unpaid re
x402 web tools · q 90%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/api.agentwork.run.svg)](https://agenstry.com/agents/api.agentwork.run)
[![Verified Business](https://agenstry.com/badge/api.agentwork.run/identity.svg)](https://agenstry.com/agents/api.agentwork.run)
[![Uptime](https://agenstry.com/badge/api.agentwork.run/uptime.svg)](https://agenstry.com/agents/api.agentwork.run)
[![A2A version](https://agenstry.com/badge/api.agentwork.run/protocol.svg)](https://agenstry.com/agents/api.agentwork.run)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "name": "AgentWork Web Evidence",
  "version": "web-evidence-1.10.3",
  "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.