@axiomworks/agentreader-mcp 1.16.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -391,6 +391,22 @@ var TOOLS = [
|
|
|
391
391
|
},
|
|
392
392
|
previewable: true
|
|
393
393
|
},
|
|
394
|
+
{
|
|
395
|
+
name: "url_redirects",
|
|
396
|
+
description: "Unwrap URL redirects / short links: final_url + hop chain (SSRF-safe). $0.001 USDC.",
|
|
397
|
+
price: "$0.001",
|
|
398
|
+
schema: { url: z.string() },
|
|
399
|
+
http: (a) => `${ORIGIN}/redirects?url=${encodeURIComponent(a.url)}`,
|
|
400
|
+
previewable: true
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
name: "page_meta",
|
|
404
|
+
description: "Lightweight page metadata: title, description, canonical, Open Graph + Twitter, favicons, JSON-LD types, h1/h2. $0.001 USDC.",
|
|
405
|
+
price: "$0.001",
|
|
406
|
+
schema: { url: z.string() },
|
|
407
|
+
http: (a) => `${ORIGIN}/meta?url=${encodeURIComponent(a.url)}`,
|
|
408
|
+
previewable: true
|
|
409
|
+
},
|
|
394
410
|
{
|
|
395
411
|
name: "company_research",
|
|
396
412
|
description: "Website company research (tech, contacts, DNS, RDAP, news) with sources \u2014 not UK Companies House. $0.25 USDC.",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/tools.ts","../src/chain-routes.json","../src/payment.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * @axiomworks/agentreader-mcp\n * Stdio MCP server for Axiom Works AgentReader.\n * Proxies tool calls to https://api.axiomworks.co.uk (same surface as /mcp).\n * Optional AGENTREADER_PRIVATE_KEY / EVM_PRIVATE_KEY enables auto x402 payment (USDC on Base).\n * Without a key, free previews (&preview=1) still work; paid calls return payment requirements.\n */\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { TOOLS, VERSION, ORIGIN, type ToolDef } from \"./tools.js\";\nimport { createFetch } from \"./payment.js\";\n\nfunction b64json(header: string | null) {\n if (!header) return null;\n try {\n return JSON.parse(Buffer.from(header, \"base64\").toString(\"utf8\"));\n } catch {\n return { raw: header.slice(0, 200) };\n }\n}\n\nfunction withPreview(url: string, tool: ToolDef, paying: boolean, args: Record<string, any>): string {\n if (paying || tool.free || tool.method === \"POST\" || !tool.previewable) return url;\n // Explicit preview:false disables free truncated mode\n if (args?.preview === false || args?.preview === \"0\") return url;\n const u = new URL(url);\n if (!u.searchParams.has(\"preview\")) u.searchParams.set(\"preview\", \"1\");\n return u.toString();\n}\n\nasync function callHttp(\n tool: ToolDef,\n args: Record<string, any>,\n fetchFn: typeof fetch,\n paying: boolean,\n) {\n let url = tool.http(args || {});\n url = withPreview(url, tool, paying, args || {});\n const init: RequestInit = {\n method: tool.method || \"GET\",\n headers: {\n accept: \"application/json\",\n \"user-agent\": `axiomworks-agentreader-mcp/${VERSION}`,\n },\n };\n if (tool.method === \"POST\") {\n (init.headers as Record<string, string>)[\"content-type\"] = \"application/json\";\n init.body = JSON.stringify(tool.body ? tool.body(args) : args);\n }\n const res = await fetchFn(url, init);\n const pr = res.headers.get(\"payment-required\") || res.headers.get(\"PAYMENT-REQUIRED\");\n const text = await res.text();\n let body: any;\n try {\n body = JSON.parse(text);\n } catch {\n body = { raw: text.slice(0, 2000) };\n }\n\n if (res.status === 402 || pr) {\n const payment = b64json(pr);\n return {\n content: [\n {\n type: \"text\" as const,\n text: JSON.stringify(\n {\n error: \"payment_required\",\n status: 402,\n message:\n \"This tool is paid via x402 (USDC on Base). Set AGENTREADER_PRIVATE_KEY (or EVM_PRIVATE_KEY) so this MCP server can auto-pay, or retry the HTTP URL with @x402/fetch / @axiomworks/agentreader.\",\n paid_http: url.replace(/([?&])preview=1(&|$)/, \"$1\").replace(/\\?$/, \"\"),\n mcp: `${ORIGIN}/mcp`,\n preview_hint:\n \"Without a key, GET tools are called with preview=1 (free truncated sample, 8/IP/day).\",\n payment_required: payment,\n body,\n },\n null,\n 2,\n ),\n },\n ],\n };\n }\n if (!res.ok) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: JSON.stringify(\n { error: body?.error || `HTTP ${res.status}`, status: res.status, body },\n null,\n 2,\n ),\n },\n ],\n };\n }\n return {\n content: [{ type: \"text\" as const, text: typeof body === \"string\" ? body : JSON.stringify(body) }],\n };\n}\n\nasync function main() {\n const { fetch: fetchFn, paying } = createFetch();\n const server = new McpServer({\n name: \"agentreader\",\n title: \"Axiom Works AgentReader\",\n version: VERSION,\n });\n\n for (const t of TOOLS) {\n server.tool(t.name, t.description, t.schema, async (args) => {\n try {\n return await callHttp(t, (args as Record<string, any>) || {}, fetchFn, paying);\n } catch (e: any) {\n return {\n isError: true,\n content: [{ type: \"text\" as const, text: String(e?.message || e) }],\n };\n }\n });\n }\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((e) => {\n console.error(e);\n process.exit(1);\n});\n","import { z } from \"zod\";\n\nexport const ORIGIN = process.env.AGENTREADER_ORIGIN || \"https://api.axiomworks.co.uk\";\nexport const VERSION = \"1.16.0\";\nimport CHAIN from \"./chain-routes.json\";\n\nconst CH = z.enum([\"base\", \"ethereum\", \"arbitrum\", \"optimism\", \"polygon\"]).optional();\nconst qs = (a: Record<string, unknown>) =>\n new URLSearchParams(\n Object.entries(a)\n .filter(([, v]) => v != null && v !== \"\")\n .map(([k, v]) => [k, String(v)]),\n ).toString();\n\nexport type ToolDef = {\n name: string;\n description: string;\n price: string;\n schema: Record<string, z.ZodTypeAny>;\n http: (a: Record<string, any>) => string;\n method?: \"GET\" | \"POST\";\n body?: (a: Record<string, any>) => unknown;\n free?: boolean;\n /** When true, unpaid preview mode appends preview=1 */\n previewable?: boolean;\n};\n\nexport const TOOLS: ToolDef[] = [\n {\n name: \"read_url\",\n description:\n \"Use this when you need clean Markdown + metadata from a public URL (not raw HTML). $0.002 USDC on Base via x402.\",\n price: \"$0.002\",\n schema: { url: z.string().url() },\n http: (a) => `${ORIGIN}/read?url=${encodeURIComponent(a.url)}`,\n previewable: true,\n },\n {\n name: \"extract_links\",\n description: \"Use this when you only need de-duplicated absolute links. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { url: z.string().url() },\n http: (a) => `${ORIGIN}/links?url=${encodeURIComponent(a.url)}`,\n previewable: true,\n },\n {\n name: \"check_domain\",\n description: \"Use this when vetting domain health: DNS/TLS/MX/SPF/DMARC + score. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { domain: z.string() },\n http: (a) => `${ORIGIN}/check?domain=${encodeURIComponent(a.domain)}`,\n previewable: true,\n },\n {\n name: \"email_check\",\n description: \"Validate an email address: syntax, MX/A DNS, disposable/free/role flags, provider guess, score+verdict. No SMTP probe. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { email: z.string() },\n http: (a) => `${ORIGIN}/email-check?email=${encodeURIComponent(a.email)}`,\n previewable: true,\n },\n {\n name: \"domain_lookup\",\n description: \"RDAP domain registration lookup: registrar, registered, expires, age_days, status. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { domain: z.string() },\n http: (a) => `${ORIGIN}/domain?domain=${encodeURIComponent(a.domain)}`,\n previewable: true,\n },\n {\n name: \"dns_lookup\",\n description: \"DNS resolve via Cloudflare DoH: A/AAAA/MX/TXT/NS/CNAME (optional type=). $0.001 USDC.\",\n price: \"$0.001\",\n schema: { name: z.string(), type: z.string().optional() },\n http: (a) => {\n const q = new URLSearchParams({ name: a.name });\n if (a.type) q.set(\"type\", a.type);\n return `${ORIGIN}/dns?${q}`;\n },\n previewable: true,\n },\n {\n name: \"company_research\",\n description:\n \"Website company research (tech, contacts, DNS, RDAP, news) with sources — not UK Companies House. $0.25 USDC.\",\n price: \"$0.25\",\n schema: { domain: z.string() },\n http: (a) => `${ORIGIN}/company?domain=${encodeURIComponent(a.domain)}`,\n previewable: true,\n },\n {\n name: \"uk_company\",\n description:\n \"Full UK Companies House due diligence (number or name) + red flags. $0.50 USDC. Prefer uk_company_lite for a cheap snapshot.\",\n price: \"$0.50\",\n schema: { number: z.string().optional(), name: z.string().optional() },\n http: (a) =>\n a.number\n ? `${ORIGIN}/uk-company?number=${encodeURIComponent(a.number)}`\n : `${ORIGIN}/uk-company?name=${encodeURIComponent(a.name || \"\")}`,\n previewable: true,\n },\n {\n name: \"uk_officer\",\n description: \"Reverse-search a UK Companies House officer/director name -> their appointments. $0.15 USDC.\",\n price: \"$0.15\",\n schema: { name: z.string(), limit: z.string().optional() },\n http: (a) => `${ORIGIN}/uk-officer?name=${encodeURIComponent(a.name)}${a.limit ? `&limit=${encodeURIComponent(a.limit)}` : \"\"}`,\n },\n {\n name: \"registry_batch\",\n description: \"Batch verify up to 25 UK (Companies House, max 10), Australian (ACN/ABN) and Canadian (number/BN) companies in one call; comma-separated ids. $0.30 USDC.\",\n price: \"$0.30\",\n schema: { uk: z.string().optional(), au: z.string().optional(), ca: z.string().optional() },\n http: (a) => `${ORIGIN}/registry-batch?${new URLSearchParams(Object.entries(a).filter(([, v]) => v) as any)}`,\n },\n {\n name: \"ca_company\",\n description: \"Canadian federal corporation lookup (Corporations Canada, ~697k active) by corporation number or 9-digit Business Number: legal name, governing act, status, filings, registered office, directors. $0.02 USDC.\",\n price: \"$0.02\",\n schema: { number: z.string().optional(), bn: z.string().optional() },\n http: (a) => a.number ? `${ORIGIN}/ca-company?number=${encodeURIComponent(a.number)}` : `${ORIGIN}/ca-company?bn=${encodeURIComponent(a.bn || \"\")}`,\n },\n {\n name: \"au_company\",\n description: \"Australian company lookup (ASIC register, ~4M companies) by ACN or ABN: name, type, status, registration date. $0.02 USDC.\",\n price: \"$0.02\",\n schema: { acn: z.string().optional(), abn: z.string().optional() },\n http: (a) => a.acn ? `${ORIGIN}/au-company?acn=${encodeURIComponent(a.acn)}` : `${ORIGIN}/au-company?abn=${encodeURIComponent(a.abn || \"\")}`,\n },\n {\n name: \"uk_company_lite\",\n description: \"Cheap UK company snapshot: status, compliance, red flags. $0.05 USDC.\",\n price: \"$0.05\",\n schema: { number: z.string().optional(), name: z.string().optional() },\n http: (a) =>\n a.number\n ? `${ORIGIN}/uk-company-lite?number=${encodeURIComponent(a.number)}`\n : `${ORIGIN}/uk-company-lite?name=${encodeURIComponent(a.name || \"\")}`,\n previewable: true,\n },\n {\n name: \"company_full\",\n description: \"Website company research + UK CH pack when detected ($0.65 vs $0.75 separate).\",\n price: \"$0.65\",\n schema: { domain: z.string() },\n http: (a) => `${ORIGIN}/company-full?domain=${encodeURIComponent(a.domain)}`,\n previewable: true,\n },\n {\n name: \"convert_document\",\n description: \"Convert public PDF/DOCX/HTML/text URL to markdown or text. $0.03 USDC.\",\n price: \"$0.03\",\n schema: { url: z.string().url(), format: z.enum([\"markdown\", \"text\"]).optional() },\n http: (a) =>\n `${ORIGIN}/convert?url=${encodeURIComponent(a.url)}&format=${encodeURIComponent(a.format || \"markdown\")}`,\n previewable: true,\n },\n {\n name: \"create_monitor\",\n description: \"30-day hourly web change monitor → webhook. $1.00 USDC. POST body.\",\n price: \"$1.00\",\n schema: {\n url: z.string().url(),\n webhook: z.string().url(),\n selector: z.string().optional(),\n keyword: z.string().optional(),\n },\n http: () => `${ORIGIN}/monitor`,\n method: \"POST\",\n body: (a) => a,\n },\n {\n name: \"pricing\",\n description: \"Free: list Axiom Works AgentReader tools, prices and payment details.\",\n price: \"free\",\n schema: {},\n http: () => `${ORIGIN}/.well-known/x402`,\n free: true,\n },\n {\n name: \"wallet_balances\",\n description: \"EVM wallet balances (native + majors), 5 chains. $0.003 USDC.\",\n price: \"$0.003\",\n schema: { address: z.string(), chain: CH, tokens: z.string().optional() },\n http: (a) => `${ORIGIN}/wallet?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"tx_status\",\n description: \"Did a tx/payment land: status, confirmations, fee, decoded ERC20 transfers. $0.003 USDC.\",\n price: \"$0.003\",\n schema: { hash: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/tx?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"token_check\",\n description: \"ERC20 token risk: owner, proxy, liquidity, flags, score. $0.01 USDC.\",\n price: \"$0.01\",\n schema: { address: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/token-check?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"fx_rates\",\n description: \"ECB FX rates, latest/historical, with conversion. $0.002 USDC.\",\n price: \"$0.002\",\n schema: {\n base: z.string().optional(),\n symbols: z.string().optional(),\n date: z.string().optional(),\n amount: z.string().optional(),\n },\n http: (a) => `${ORIGIN}/fx?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"ens_lookup\",\n description: \"ENS name -> address + records, or reverse. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { name: z.string().optional(), address: z.string().optional() },\n http: (a) => `${ORIGIN}/ens?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"token_metadata\",\n description: \"ERC20 name/symbol/decimals/supply. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { address: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/token?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"token_allowance\",\n description: \"ERC20 allowance owner->spender, unlimited flag. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { token: z.string(), owner: z.string(), spender: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/allowance?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"contract_info\",\n description: \"Contract/proxy/clone/7702/standards/Sourcify name. $0.003 USDC.\",\n price: \"$0.003\",\n schema: { address: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/contract?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"gas_fees\",\n description: \"Current gas fees + USD cost estimates. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { chain: CH },\n http: (a) => `${ORIGIN}/gas?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"block_lookup\",\n description: \"Block by number or timestamp. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { number: z.string().optional(), timestamp: z.string().optional(), chain: CH },\n http: (a) => `${ORIGIN}/block?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"nft_lookup\",\n description: \"NFT owner + metadata. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { contract: z.string(), token_id: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/nft?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"web_search\",\n description:\n \"Open research search: Wikipedia + OpenAlex + arXiv + Crossref merged, deduped, ranked with snippets. $0.003 USDC.\",\n price: \"$0.003\",\n schema: { q: z.string(), sources: z.string().optional(), limit: z.string().optional() },\n http: (a) => `${ORIGIN}/search?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_property_prices\",\n description: \"England & Wales Land Registry sold prices near a postcode + medians. $0.01 USDC.\",\n price: \"$0.01\",\n schema: { postcode: z.string(), radius: z.string().optional() },\n http: (a) => `${ORIGIN}/uk-property?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_area_profile\",\n description: \"UK postcode profile: ONS geography, police crime, FSA hygiene. $0.005 USDC.\",\n price: \"$0.005\",\n schema: { postcode: z.string() },\n http: (a) => `${ORIGIN}/uk-area?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_charity\",\n description:\n \"UK Charity Commission snapshot: status, income, trustees count, activities. $0.05 USDC.\",\n price: \"$0.05\",\n schema: {\n number: z.string().optional(),\n name: z.string().optional(),\n suffix: z.string().optional(),\n },\n http: (a) =>\n a.number\n ? `${ORIGIN}/uk-charity?number=${encodeURIComponent(a.number)}${a.suffix != null ? `&suffix=${encodeURIComponent(a.suffix)}` : \"\"}`\n : `${ORIGIN}/uk-charity?name=${encodeURIComponent(a.name || \"\")}`,\n previewable: true,\n },\n\n {\n name: \"us_sec\",\n description:\n \"US SEC EDGAR company snapshot by ticker or CIK: filings, SIC, addresses. $0.05 USDC.\",\n price: \"$0.05\",\n schema: { ticker: z.string().optional(), cik: z.string().optional() },\n http: (a) =>\n a.ticker\n ? `${ORIGIN}/us-sec?ticker=${encodeURIComponent(a.ticker)}`\n : `${ORIGIN}/us-sec?cik=${encodeURIComponent(a.cik || \"\")}`,\n previewable: true,\n },\n {\n name: \"us_sec_full\",\n description:\n \"US SEC full DD: lite + us-gaap highlights + red-flag heuristics. $0.25 USDC.\",\n price: \"$0.25\",\n schema: { ticker: z.string().optional(), cik: z.string().optional() },\n http: (a) =>\n a.ticker\n ? `${ORIGIN}/us-sec-full?ticker=${encodeURIComponent(a.ticker)}`\n : `${ORIGIN}/us-sec-full?cik=${encodeURIComponent(a.cik || \"\")}`,\n previewable: true,\n },\n {\n name: \"eu_vat\",\n description: \"EU VIES VAT validation: valid, name, address. $0.01 USDC.\",\n price: \"$0.01\",\n schema: {\n vat: z.string().optional(),\n country: z.string().optional(),\n number: z.string().optional(),\n },\n http: (a) =>\n a.vat\n ? `${ORIGIN}/eu-vat?vat=${encodeURIComponent(a.vat)}`\n : `${ORIGIN}/eu-vat?country=${encodeURIComponent(a.country || \"\")}&number=${encodeURIComponent(a.number || \"\")}`,\n previewable: true,\n },\n {\n name: \"lei_lookup\",\n description: \"GLEIF LEI lookup with parents.direct/ultimate + BIC. $0.005 USDC.\",\n price: \"$0.005\",\n schema: {\n lei: z.string().optional(),\n name: z.string().optional(),\n registered_as: z.string().optional(),\n country: z.string().optional(),\n },\n http: (a) => `${ORIGIN}/lei?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"lei_full\",\n description: \"GLEIF name/registered_as search up to 10 matches each with parents. $0.05 USDC.\",\n price: \"$0.05\",\n schema: {\n name: z.string().optional(),\n registered_as: z.string().optional(),\n country: z.string().optional(),\n lei: z.string().optional(),\n },\n http: (a) => `${ORIGIN}/lei-full?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"read_batch\",\n description: \"Batch web read up to 8 URLs as Markdown. $0.015 USDC.\",\n price: \"$0.015\",\n schema: { urls: z.any() },\n http: (a) => `${ORIGIN}/read-batch?urls=${encodeURIComponent(Array.isArray(a.urls) ? a.urls.join(\",\") : String(a.urls || \"\"))}`,\n previewable: true,\n },\n {\n name: \"uk_charity_full\",\n description:\n \"Full UK charity DD: trustees, finances, assets, governance, regulatory + red flags. $0.25 USDC.\",\n price: \"$0.25\",\n schema: {\n number: z.string().optional(),\n name: z.string().optional(),\n suffix: z.string().optional(),\n },\n http: (a) =>\n a.number\n ? `${ORIGIN}/uk-charity-full?number=${encodeURIComponent(a.number)}${a.suffix != null ? `&suffix=${encodeURIComponent(a.suffix)}` : \"\"}`\n : `${ORIGIN}/uk-charity-full?name=${encodeURIComponent(a.name || \"\")}`,\n previewable: true,\n },\n {\n name: \"uk_leads_lite\",\n description: \"UK new-incorporation leads by SIC/location/postcode_area (1-7 days), no directors. $0.25 USDC.\",\n price: \"$0.25\",\n schema: {\n sic: z.string().optional(),\n location: z.string().optional(),\n postcode_area: z.string().optional(),\n days: z.union([z.string(), z.number()]).optional(),\n limit: z.union([z.string(), z.number()]).optional(),\n },\n http: (a) => `${ORIGIN}/uk-leads-lite?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_leads\",\n description: \"UK new-incorporation leads with active director names. $1.00 USDC.\",\n price: \"$1.00\",\n schema: {\n sic: z.string().optional(),\n location: z.string().optional(),\n postcode_area: z.string().optional(),\n days: z.union([z.string(), z.number()]).optional(),\n limit: z.union([z.string(), z.number()]).optional(),\n },\n http: (a) => `${ORIGIN}/uk-leads?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_leads_feed\",\n description: \"30-day daily webhook of new UK incorporations matching SIC/location/postcode_area. $25.00/30d USDC.\",\n price: \"$25.00\",\n schema: {\n webhook: z.string().url(),\n sic: z.string().optional(),\n location: z.string().optional(),\n postcode_area: z.string().optional(),\n },\n http: () => `${ORIGIN}/uk-leads-feed`,\n method: \"POST\",\n body: (a) => a,\n },\n {\n name: \"uk_watch\",\n description: \"Watch one UK company 30 days: hourly CH poll → webhook on change. $5.00/30d USDC.\",\n price: \"$5.00\",\n schema: { number: z.string(), webhook: z.string().url() },\n http: () => `${ORIGIN}/uk-watch`,\n method: \"POST\",\n body: (a) => a,\n },\n {\n name: \"kyb_report\",\n description: \"Agent KYB pack: UK/AU/CA registry + EU VAT + optional GLEIF LEI (parents) + website + sanctions + director appointments → trust flag. Screening only. $2.50 USDC.\",\n price: \"$2.50\",\n schema: {\n domain: z.string().optional(),\n number: z.string().optional(),\n name: z.string().optional(),\n vat: z.string().optional(),\n country: z.string().optional(),\n vat_number: z.string().optional(),\n acn: z.string().optional(),\n ca_number: z.string().optional(),\n bn: z.string().optional(),\n lei: z.string().optional(),\n },\n http: (a) => `${ORIGIN}/kyb?${qs(a)}`,\n previewable: true,\n },\n];\n\n// Single-fact EVM tools (/chain/*), generated from the server's route table.\nfor (const r of CHAIN as any[]) {\n TOOLS.push({\n name: r.tool,\n description: r.description.replace(/\\$0\\.00\\d\\.$/, `${r.price} USDC.`),\n price: r.price,\n schema: Object.fromEntries(Object.keys(r.params).map((k) => [k, r.required.includes(k) ? z.string().describe(r.params[k]) : z.string().optional().describe(r.params[k])])),\n http: (a) => `${ORIGIN}${r.path}?${qs(a)}`,\n previewable: true,\n } as ToolDef);\n}\n","[\n {\n \"path\": \"/chain/erc20-balance\",\n \"tool\": \"chain_erc20_balance\",\n \"price\": \"$0.001\",\n \"description\": \"ERC20 token balance for any wallet on Base/Ethereum/Arbitrum/Optimism/Polygon via balanceOf (eth_call). Returns raw + decimal-formatted balance, symbol, decimals, block. Example: {address:\\\"0xd8dA…6045\\\", token:\\\"0x8335…2913\\\", chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"address\": \"Wallet address\",\n \"token\": \"ERC20 contract\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\",\n \"token\"\n ],\n \"example\": {\n \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"token\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/balance\",\n \"tool\": \"chain_balance\",\n \"price\": \"$0.001\",\n \"description\": \"Native coin balance (ETH/POL) of any address via eth_getBalance, optionally at a historical block. Example: {address:\\\"0xd8dA…6045\\\", chain:\\\"ethereum\\\"} → {balance:\\\"…\\\", balance_wei, block}. Use /wallet ($0.003) for native + major tokens in one call. $0.001.\",\n \"params\": {\n \"address\": \"Address\",\n \"chain\": \"EVM chain (default base)\",\n \"block\": \"Block number or tag (default latest)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"chain\": \"ethereum\"\n }\n },\n {\n \"path\": \"/chain/block-number\",\n \"tool\": \"chain_block_number\",\n \"price\": \"$0.001\",\n \"description\": \"Latest block height (chain tip) plus safe/finalized heights and head age in seconds, via eth_blockNumber/eth_getBlockByNumber. Base/Ethereum/Arbitrum/Optimism/Polygon. Example: {chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [],\n \"example\": {\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/nonce\",\n \"tool\": \"chain_nonce\",\n \"price\": \"$0.001\",\n \"description\": \"Next transaction nonce for any address (latest and pending) via eth_getTransactionCount — how many txs it has sent, and whether one is stuck in the mempool. Example: {address:\\\"0xd8dA…6045\\\", chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"address\": \"Address\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/total-supply\",\n \"tool\": \"chain_total_supply\",\n \"price\": \"$0.001\",\n \"description\": \"Total supply of an ERC20 or ERC721 token via totalSupply (eth_call), formatted with decimals and symbol. Example: {token:\\\"0x8335…2913\\\", chain:\\\"base\\\"} → {total_supply, symbol, decimals}. $0.001.\",\n \"params\": {\n \"token\": \"Token contract\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"token\"\n ],\n \"example\": {\n \"token\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/erc20-transfers\",\n \"tool\": \"chain_erc20_transfers\",\n \"price\": \"$0.003\",\n \"description\": \"ERC20 Transfer events for a token and/or wallet via eth_getLogs, decoded (from, to, amount with decimals, tx hash, block). Default last 1000 blocks, max 5000. Example: {token:\\\"0x8335…2913\\\", address:\\\"0x88b1…3ff6\\\", chain:\\\"base\\\"} → newest first. Use it to confirm incoming payments. $0.003.\",\n \"params\": {\n \"token\": \"ERC20 contract (optional if address given)\",\n \"address\": \"Wallet to filter (optional if token given)\",\n \"direction\": \"one of in|out|any\",\n \"blocks\": \"Lookback blocks (default 1000, max 5000)\",\n \"from_block\": \"from_block\",\n \"to_block\": \"to_block\",\n \"limit\": \"Max items (default 50, max 200)\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [],\n \"example\": {\n \"token\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"address\": \"0x88b1c747c33A5868A34057D8C57318E5602b3ff6\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/events\",\n \"tool\": \"chain_events\",\n \"price\": \"$0.003\",\n \"description\": \"Contract event logs via eth_getLogs filtered by contract and topics (topic0 = event signature hash). Raw logs, newest first; default last 1000 blocks, max 5000. Example: {address:\\\"0x8335…2913\\\", topic0:\\\"0xddf2…b3ef\\\", chain:\\\"base\\\", blocks:\\\"50\\\"}. $0.003.\",\n \"params\": {\n \"address\": \"Contract emitting the logs\",\n \"topic0\": \"Event signature hash (0x + 64 hex)\",\n \"topic1\": \"topic1\",\n \"topic2\": \"topic2\",\n \"topic3\": \"topic3\",\n \"blocks\": \"blocks\",\n \"from_block\": \"from_block\",\n \"to_block\": \"to_block\",\n \"limit\": \"limit\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"topic0\": \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\n \"blocks\": \"20\",\n \"limit\": \"5\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/network-info\",\n \"tool\": \"chain_network_info\",\n \"price\": \"$0.001\",\n \"description\": \"EVM network info in one call: chain ID, client version, block height, head age, gas price, base fee, native symbol. Confirms which chain an RPC is on before signing. Example: {chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [],\n \"example\": {\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/receipt\",\n \"tool\": \"chain_receipt\",\n \"price\": \"$0.002\",\n \"description\": \"Transaction receipt via eth_getTransactionReceipt: success/revert status, gas used, effective gas price, fee in native coin, contract created, log count + raw logs. Example: {hash:\\\"0x…\\\", chain:\\\"base\\\"}. Use /tx ($0.003) for decoded transfers + confirmations. $0.002.\",\n \"params\": {\n \"hash\": \"hash\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"hash\"\n ],\n \"example\": {\n \"hash\": \"0x6f0d9bbb400eef11b67d1b9b41a5b9053b6790f254a3e9dea264dd1a8ded6a73\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/code\",\n \"tool\": \"chain_code\",\n \"price\": \"$0.001\",\n \"description\": \"Is this address a contract or a wallet (EOA)? eth_getCode → is_contract, bytecode size and prefix, EIP-7702 delegation detection. Example: {address:\\\"0x8335…2913\\\", chain:\\\"base\\\"}. Use /contract ($0.003) for proxy/owner/token detail. $0.001.\",\n \"params\": {\n \"address\": \"Address\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/call\",\n \"tool\": \"chain_call\",\n \"price\": \"$0.002\",\n \"description\": \"Read-only contract call via eth_call (no transaction sent): pass to + ABI-encoded data, get the raw return hex plus best-effort uint/address/string decodes and revert reason. Example: {to:\\\"0x8335…2913\\\", data:\\\"0x18160ddd\\\", chain:\\\"base\\\"}. $0.002.\",\n \"params\": {\n \"to\": \"Contract\",\n \"data\": \"0x calldata\",\n \"from\": \"Optional caller\",\n \"block\": \"block\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"to\",\n \"data\"\n ],\n \"example\": {\n \"to\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"data\": \"0x18160ddd\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/estimate-gas\",\n \"tool\": \"chain_estimate_gas\",\n \"price\": \"$0.002\",\n \"description\": \"Estimate gas for a transaction before signing (eth_estimateGas) plus current fee → cost in native coin; returns the revert reason if it would fail. Example: {from:\\\"0xd8dA…6045\\\", to:\\\"0x8335…2913\\\", data:\\\"0xa9059cbb…\\\", chain:\\\"base\\\"}. $0.002.\",\n \"params\": {\n \"to\": \"Recipient/contract\",\n \"from\": \"Sender\",\n \"data\": \"data\",\n \"value\": \"Wei (decimal)\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"to\"\n ],\n \"example\": {\n \"from\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"to\": \"0x88b1c747c33A5868A34057D8C57318E5602b3ff6\",\n \"value\": \"1000000000000\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/nft-owner\",\n \"tool\": \"chain_nft_owner\",\n \"price\": \"$0.001\",\n \"description\": \"Current owner of an ERC721 token_id via ownerOf (eth_call), plus collection name/symbol. Example: {contract:\\\"0xBC4C…f13D\\\", token_id:\\\"1\\\", chain:\\\"ethereum\\\"} → {owner}. Use /nft ($0.002) for metadata. $0.001.\",\n \"params\": {\n \"contract\": \"ERC721 contract\",\n \"token_id\": \"token_id\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"contract\",\n \"token_id\"\n ],\n \"example\": {\n \"contract\": \"0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D\",\n \"token_id\": \"1\",\n \"chain\": \"ethereum\"\n }\n },\n {\n \"path\": \"/chain/erc1155-balance\",\n \"tool\": \"chain_erc1155_balance\",\n \"price\": \"$0.001\",\n \"description\": \"ERC1155 balance: how many copies of token_id a wallet holds, via balanceOf(address,uint256) (eth_call). Example: {contract:\\\"0x…\\\", address:\\\"0x…\\\", token_id:\\\"1\\\", chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"contract\": \"ERC1155 contract\",\n \"address\": \"Holder\",\n \"token_id\": \"token_id\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"contract\",\n \"address\",\n \"token_id\"\n ],\n \"example\": {\n \"contract\": \"0x76be3b62873462d2142405439777e971754e8e77\",\n \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"token_id\": \"10229\",\n \"chain\": \"ethereum\"\n }\n },\n {\n \"path\": \"/chain/storage\",\n \"tool\": \"chain_storage\",\n \"price\": \"$0.001\",\n \"description\": \"Read a raw storage slot of any contract via eth_getStorageAt, with uint and address decodes. Example: {address:\\\"0x8335…2913\\\", slot:\\\"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\\\", chain:\\\"base\\\"} (EIP-1967 implementation slot). $0.001.\",\n \"params\": {\n \"address\": \"Contract\",\n \"slot\": \"Slot (decimal or 0x hex)\",\n \"block\": \"block\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\",\n \"slot\"\n ],\n \"example\": {\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"slot\": \"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/proxy\",\n \"tool\": \"chain_proxy\",\n \"price\": \"$0.002\",\n \"description\": \"Detect upgradeable proxies (EIP-1967 transparent/UUPS, beacon, legacy OZ, EIP-1167 minimal clones, EIP-7702) via eth_getStorageAt/eth_getCode: implementation, admin, beacon, and whether the implementation is a live contract. Example: {address:\\\"0x8335…2913\\\", chain:\\\"base\\\"}. $0.002.\",\n \"params\": {\n \"address\": \"Contract\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/chain-id\",\n \"tool\": \"chain_chain_id\",\n \"price\": \"$0.001\",\n \"description\": \"EIP-155 chain ID straight from the RPC (eth_chainId + net_version) — confirm which network you are about to sign on. Example: {chain:\\\"base\\\"} → {chain_id:8453}. $0.001.\",\n \"params\": {\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [],\n \"example\": {\n \"chain\": \"base\"\n }\n }\n]","import { wrapFetchWithPayment, x402Client } from \"@x402/fetch\";\nimport { ExactEvmScheme } from \"@x402/evm/exact/client\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nexport type PaidFetch = typeof fetch;\n\n/** Resolve an EVM private key from common env names. */\nexport function resolvePrivateKey(): `0x${string}` | undefined {\n const raw =\n process.env.AGENTREADER_PRIVATE_KEY ||\n process.env.EVM_PRIVATE_KEY ||\n process.env.PRIVATE_KEY ||\n process.env.X402_PRIVATE_KEY;\n if (!raw) return undefined;\n const key = raw.startsWith(\"0x\") ? raw : `0x${raw}`;\n if (!/^0x[0-9a-fA-F]{64}$/.test(key)) {\n throw new Error(\n \"Invalid AGENTREADER_PRIVATE_KEY / EVM_PRIVATE_KEY (expected 32-byte hex with optional 0x)\",\n );\n }\n return key as `0x${string}`;\n}\n\n/** Build a fetch that auto-settles x402 exact USDC on Base when a key is present. */\nexport function createFetch(): { fetch: PaidFetch; paying: boolean } {\n const key = resolvePrivateKey();\n if (!key) return { fetch: globalThis.fetch.bind(globalThis), paying: false };\n const account = privateKeyToAccount(key);\n const client = new x402Client().register(\"eip155:8453\", new ExactEvmScheme(account));\n return { fetch: wrapFetchWithPayment(globalThis.fetch.bind(globalThis), client), paying: true };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/tools.ts","../src/chain-routes.json","../src/payment.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * @axiomworks/agentreader-mcp\n * Stdio MCP server for Axiom Works AgentReader.\n * Proxies tool calls to https://api.axiomworks.co.uk (same surface as /mcp).\n * Optional AGENTREADER_PRIVATE_KEY / EVM_PRIVATE_KEY enables auto x402 payment (USDC on Base).\n * Without a key, free previews (&preview=1) still work; paid calls return payment requirements.\n */\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { TOOLS, VERSION, ORIGIN, type ToolDef } from \"./tools.js\";\nimport { createFetch } from \"./payment.js\";\n\nfunction b64json(header: string | null) {\n if (!header) return null;\n try {\n return JSON.parse(Buffer.from(header, \"base64\").toString(\"utf8\"));\n } catch {\n return { raw: header.slice(0, 200) };\n }\n}\n\nfunction withPreview(url: string, tool: ToolDef, paying: boolean, args: Record<string, any>): string {\n if (paying || tool.free || tool.method === \"POST\" || !tool.previewable) return url;\n // Explicit preview:false disables free truncated mode\n if (args?.preview === false || args?.preview === \"0\") return url;\n const u = new URL(url);\n if (!u.searchParams.has(\"preview\")) u.searchParams.set(\"preview\", \"1\");\n return u.toString();\n}\n\nasync function callHttp(\n tool: ToolDef,\n args: Record<string, any>,\n fetchFn: typeof fetch,\n paying: boolean,\n) {\n let url = tool.http(args || {});\n url = withPreview(url, tool, paying, args || {});\n const init: RequestInit = {\n method: tool.method || \"GET\",\n headers: {\n accept: \"application/json\",\n \"user-agent\": `axiomworks-agentreader-mcp/${VERSION}`,\n },\n };\n if (tool.method === \"POST\") {\n (init.headers as Record<string, string>)[\"content-type\"] = \"application/json\";\n init.body = JSON.stringify(tool.body ? tool.body(args) : args);\n }\n const res = await fetchFn(url, init);\n const pr = res.headers.get(\"payment-required\") || res.headers.get(\"PAYMENT-REQUIRED\");\n const text = await res.text();\n let body: any;\n try {\n body = JSON.parse(text);\n } catch {\n body = { raw: text.slice(0, 2000) };\n }\n\n if (res.status === 402 || pr) {\n const payment = b64json(pr);\n return {\n content: [\n {\n type: \"text\" as const,\n text: JSON.stringify(\n {\n error: \"payment_required\",\n status: 402,\n message:\n \"This tool is paid via x402 (USDC on Base). Set AGENTREADER_PRIVATE_KEY (or EVM_PRIVATE_KEY) so this MCP server can auto-pay, or retry the HTTP URL with @x402/fetch / @axiomworks/agentreader.\",\n paid_http: url.replace(/([?&])preview=1(&|$)/, \"$1\").replace(/\\?$/, \"\"),\n mcp: `${ORIGIN}/mcp`,\n preview_hint:\n \"Without a key, GET tools are called with preview=1 (free truncated sample, 8/IP/day).\",\n payment_required: payment,\n body,\n },\n null,\n 2,\n ),\n },\n ],\n };\n }\n if (!res.ok) {\n return {\n isError: true,\n content: [\n {\n type: \"text\" as const,\n text: JSON.stringify(\n { error: body?.error || `HTTP ${res.status}`, status: res.status, body },\n null,\n 2,\n ),\n },\n ],\n };\n }\n return {\n content: [{ type: \"text\" as const, text: typeof body === \"string\" ? body : JSON.stringify(body) }],\n };\n}\n\nasync function main() {\n const { fetch: fetchFn, paying } = createFetch();\n const server = new McpServer({\n name: \"agentreader\",\n title: \"Axiom Works AgentReader\",\n version: VERSION,\n });\n\n for (const t of TOOLS) {\n server.tool(t.name, t.description, t.schema, async (args) => {\n try {\n return await callHttp(t, (args as Record<string, any>) || {}, fetchFn, paying);\n } catch (e: any) {\n return {\n isError: true,\n content: [{ type: \"text\" as const, text: String(e?.message || e) }],\n };\n }\n });\n }\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((e) => {\n console.error(e);\n process.exit(1);\n});\n","import { z } from \"zod\";\n\nexport const ORIGIN = process.env.AGENTREADER_ORIGIN || \"https://api.axiomworks.co.uk\";\nexport const VERSION = \"1.16.0\";\nimport CHAIN from \"./chain-routes.json\";\n\nconst CH = z.enum([\"base\", \"ethereum\", \"arbitrum\", \"optimism\", \"polygon\"]).optional();\nconst qs = (a: Record<string, unknown>) =>\n new URLSearchParams(\n Object.entries(a)\n .filter(([, v]) => v != null && v !== \"\")\n .map(([k, v]) => [k, String(v)]),\n ).toString();\n\nexport type ToolDef = {\n name: string;\n description: string;\n price: string;\n schema: Record<string, z.ZodTypeAny>;\n http: (a: Record<string, any>) => string;\n method?: \"GET\" | \"POST\";\n body?: (a: Record<string, any>) => unknown;\n free?: boolean;\n /** When true, unpaid preview mode appends preview=1 */\n previewable?: boolean;\n};\n\nexport const TOOLS: ToolDef[] = [\n {\n name: \"read_url\",\n description:\n \"Use this when you need clean Markdown + metadata from a public URL (not raw HTML). $0.002 USDC on Base via x402.\",\n price: \"$0.002\",\n schema: { url: z.string().url() },\n http: (a) => `${ORIGIN}/read?url=${encodeURIComponent(a.url)}`,\n previewable: true,\n },\n {\n name: \"extract_links\",\n description: \"Use this when you only need de-duplicated absolute links. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { url: z.string().url() },\n http: (a) => `${ORIGIN}/links?url=${encodeURIComponent(a.url)}`,\n previewable: true,\n },\n {\n name: \"check_domain\",\n description: \"Use this when vetting domain health: DNS/TLS/MX/SPF/DMARC + score. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { domain: z.string() },\n http: (a) => `${ORIGIN}/check?domain=${encodeURIComponent(a.domain)}`,\n previewable: true,\n },\n {\n name: \"email_check\",\n description: \"Validate an email address: syntax, MX/A DNS, disposable/free/role flags, provider guess, score+verdict. No SMTP probe. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { email: z.string() },\n http: (a) => `${ORIGIN}/email-check?email=${encodeURIComponent(a.email)}`,\n previewable: true,\n },\n {\n name: \"domain_lookup\",\n description: \"RDAP domain registration lookup: registrar, registered, expires, age_days, status. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { domain: z.string() },\n http: (a) => `${ORIGIN}/domain?domain=${encodeURIComponent(a.domain)}`,\n previewable: true,\n },\n {\n name: \"dns_lookup\",\n description: \"DNS resolve via Cloudflare DoH: A/AAAA/MX/TXT/NS/CNAME (optional type=). $0.001 USDC.\",\n price: \"$0.001\",\n schema: { name: z.string(), type: z.string().optional() },\n http: (a) => {\n const q = new URLSearchParams({ name: a.name });\n if (a.type) q.set(\"type\", a.type);\n return `${ORIGIN}/dns?${q}`;\n },\n previewable: true,\n },\n {\n name: \"url_redirects\",\n description: \"Unwrap URL redirects / short links: final_url + hop chain (SSRF-safe). $0.001 USDC.\",\n price: \"$0.001\",\n schema: { url: z.string() },\n http: (a) => `${ORIGIN}/redirects?url=${encodeURIComponent(a.url)}`,\n previewable: true,\n },\n {\n name: \"page_meta\",\n description: \"Lightweight page metadata: title, description, canonical, Open Graph + Twitter, favicons, JSON-LD types, h1/h2. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { url: z.string() },\n http: (a) => `${ORIGIN}/meta?url=${encodeURIComponent(a.url)}`,\n previewable: true,\n },\n {\n name: \"company_research\",\n description:\n \"Website company research (tech, contacts, DNS, RDAP, news) with sources — not UK Companies House. $0.25 USDC.\",\n price: \"$0.25\",\n schema: { domain: z.string() },\n http: (a) => `${ORIGIN}/company?domain=${encodeURIComponent(a.domain)}`,\n previewable: true,\n },\n {\n name: \"uk_company\",\n description:\n \"Full UK Companies House due diligence (number or name) + red flags. $0.50 USDC. Prefer uk_company_lite for a cheap snapshot.\",\n price: \"$0.50\",\n schema: { number: z.string().optional(), name: z.string().optional() },\n http: (a) =>\n a.number\n ? `${ORIGIN}/uk-company?number=${encodeURIComponent(a.number)}`\n : `${ORIGIN}/uk-company?name=${encodeURIComponent(a.name || \"\")}`,\n previewable: true,\n },\n {\n name: \"uk_officer\",\n description: \"Reverse-search a UK Companies House officer/director name -> their appointments. $0.15 USDC.\",\n price: \"$0.15\",\n schema: { name: z.string(), limit: z.string().optional() },\n http: (a) => `${ORIGIN}/uk-officer?name=${encodeURIComponent(a.name)}${a.limit ? `&limit=${encodeURIComponent(a.limit)}` : \"\"}`,\n },\n {\n name: \"registry_batch\",\n description: \"Batch verify up to 25 UK (Companies House, max 10), Australian (ACN/ABN) and Canadian (number/BN) companies in one call; comma-separated ids. $0.30 USDC.\",\n price: \"$0.30\",\n schema: { uk: z.string().optional(), au: z.string().optional(), ca: z.string().optional() },\n http: (a) => `${ORIGIN}/registry-batch?${new URLSearchParams(Object.entries(a).filter(([, v]) => v) as any)}`,\n },\n {\n name: \"ca_company\",\n description: \"Canadian federal corporation lookup (Corporations Canada, ~697k active) by corporation number or 9-digit Business Number: legal name, governing act, status, filings, registered office, directors. $0.02 USDC.\",\n price: \"$0.02\",\n schema: { number: z.string().optional(), bn: z.string().optional() },\n http: (a) => a.number ? `${ORIGIN}/ca-company?number=${encodeURIComponent(a.number)}` : `${ORIGIN}/ca-company?bn=${encodeURIComponent(a.bn || \"\")}`,\n },\n {\n name: \"au_company\",\n description: \"Australian company lookup (ASIC register, ~4M companies) by ACN or ABN: name, type, status, registration date. $0.02 USDC.\",\n price: \"$0.02\",\n schema: { acn: z.string().optional(), abn: z.string().optional() },\n http: (a) => a.acn ? `${ORIGIN}/au-company?acn=${encodeURIComponent(a.acn)}` : `${ORIGIN}/au-company?abn=${encodeURIComponent(a.abn || \"\")}`,\n },\n {\n name: \"uk_company_lite\",\n description: \"Cheap UK company snapshot: status, compliance, red flags. $0.05 USDC.\",\n price: \"$0.05\",\n schema: { number: z.string().optional(), name: z.string().optional() },\n http: (a) =>\n a.number\n ? `${ORIGIN}/uk-company-lite?number=${encodeURIComponent(a.number)}`\n : `${ORIGIN}/uk-company-lite?name=${encodeURIComponent(a.name || \"\")}`,\n previewable: true,\n },\n {\n name: \"company_full\",\n description: \"Website company research + UK CH pack when detected ($0.65 vs $0.75 separate).\",\n price: \"$0.65\",\n schema: { domain: z.string() },\n http: (a) => `${ORIGIN}/company-full?domain=${encodeURIComponent(a.domain)}`,\n previewable: true,\n },\n {\n name: \"convert_document\",\n description: \"Convert public PDF/DOCX/HTML/text URL to markdown or text. $0.03 USDC.\",\n price: \"$0.03\",\n schema: { url: z.string().url(), format: z.enum([\"markdown\", \"text\"]).optional() },\n http: (a) =>\n `${ORIGIN}/convert?url=${encodeURIComponent(a.url)}&format=${encodeURIComponent(a.format || \"markdown\")}`,\n previewable: true,\n },\n {\n name: \"create_monitor\",\n description: \"30-day hourly web change monitor → webhook. $1.00 USDC. POST body.\",\n price: \"$1.00\",\n schema: {\n url: z.string().url(),\n webhook: z.string().url(),\n selector: z.string().optional(),\n keyword: z.string().optional(),\n },\n http: () => `${ORIGIN}/monitor`,\n method: \"POST\",\n body: (a) => a,\n },\n {\n name: \"pricing\",\n description: \"Free: list Axiom Works AgentReader tools, prices and payment details.\",\n price: \"free\",\n schema: {},\n http: () => `${ORIGIN}/.well-known/x402`,\n free: true,\n },\n {\n name: \"wallet_balances\",\n description: \"EVM wallet balances (native + majors), 5 chains. $0.003 USDC.\",\n price: \"$0.003\",\n schema: { address: z.string(), chain: CH, tokens: z.string().optional() },\n http: (a) => `${ORIGIN}/wallet?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"tx_status\",\n description: \"Did a tx/payment land: status, confirmations, fee, decoded ERC20 transfers. $0.003 USDC.\",\n price: \"$0.003\",\n schema: { hash: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/tx?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"token_check\",\n description: \"ERC20 token risk: owner, proxy, liquidity, flags, score. $0.01 USDC.\",\n price: \"$0.01\",\n schema: { address: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/token-check?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"fx_rates\",\n description: \"ECB FX rates, latest/historical, with conversion. $0.002 USDC.\",\n price: \"$0.002\",\n schema: {\n base: z.string().optional(),\n symbols: z.string().optional(),\n date: z.string().optional(),\n amount: z.string().optional(),\n },\n http: (a) => `${ORIGIN}/fx?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"ens_lookup\",\n description: \"ENS name -> address + records, or reverse. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { name: z.string().optional(), address: z.string().optional() },\n http: (a) => `${ORIGIN}/ens?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"token_metadata\",\n description: \"ERC20 name/symbol/decimals/supply. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { address: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/token?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"token_allowance\",\n description: \"ERC20 allowance owner->spender, unlimited flag. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { token: z.string(), owner: z.string(), spender: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/allowance?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"contract_info\",\n description: \"Contract/proxy/clone/7702/standards/Sourcify name. $0.003 USDC.\",\n price: \"$0.003\",\n schema: { address: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/contract?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"gas_fees\",\n description: \"Current gas fees + USD cost estimates. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { chain: CH },\n http: (a) => `${ORIGIN}/gas?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"block_lookup\",\n description: \"Block by number or timestamp. $0.001 USDC.\",\n price: \"$0.001\",\n schema: { number: z.string().optional(), timestamp: z.string().optional(), chain: CH },\n http: (a) => `${ORIGIN}/block?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"nft_lookup\",\n description: \"NFT owner + metadata. $0.002 USDC.\",\n price: \"$0.002\",\n schema: { contract: z.string(), token_id: z.string(), chain: CH },\n http: (a) => `${ORIGIN}/nft?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"web_search\",\n description:\n \"Open research search: Wikipedia + OpenAlex + arXiv + Crossref merged, deduped, ranked with snippets. $0.003 USDC.\",\n price: \"$0.003\",\n schema: { q: z.string(), sources: z.string().optional(), limit: z.string().optional() },\n http: (a) => `${ORIGIN}/search?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_property_prices\",\n description: \"England & Wales Land Registry sold prices near a postcode + medians. $0.01 USDC.\",\n price: \"$0.01\",\n schema: { postcode: z.string(), radius: z.string().optional() },\n http: (a) => `${ORIGIN}/uk-property?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_area_profile\",\n description: \"UK postcode profile: ONS geography, police crime, FSA hygiene. $0.005 USDC.\",\n price: \"$0.005\",\n schema: { postcode: z.string() },\n http: (a) => `${ORIGIN}/uk-area?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_charity\",\n description:\n \"UK Charity Commission snapshot: status, income, trustees count, activities. $0.05 USDC.\",\n price: \"$0.05\",\n schema: {\n number: z.string().optional(),\n name: z.string().optional(),\n suffix: z.string().optional(),\n },\n http: (a) =>\n a.number\n ? `${ORIGIN}/uk-charity?number=${encodeURIComponent(a.number)}${a.suffix != null ? `&suffix=${encodeURIComponent(a.suffix)}` : \"\"}`\n : `${ORIGIN}/uk-charity?name=${encodeURIComponent(a.name || \"\")}`,\n previewable: true,\n },\n\n {\n name: \"us_sec\",\n description:\n \"US SEC EDGAR company snapshot by ticker or CIK: filings, SIC, addresses. $0.05 USDC.\",\n price: \"$0.05\",\n schema: { ticker: z.string().optional(), cik: z.string().optional() },\n http: (a) =>\n a.ticker\n ? `${ORIGIN}/us-sec?ticker=${encodeURIComponent(a.ticker)}`\n : `${ORIGIN}/us-sec?cik=${encodeURIComponent(a.cik || \"\")}`,\n previewable: true,\n },\n {\n name: \"us_sec_full\",\n description:\n \"US SEC full DD: lite + us-gaap highlights + red-flag heuristics. $0.25 USDC.\",\n price: \"$0.25\",\n schema: { ticker: z.string().optional(), cik: z.string().optional() },\n http: (a) =>\n a.ticker\n ? `${ORIGIN}/us-sec-full?ticker=${encodeURIComponent(a.ticker)}`\n : `${ORIGIN}/us-sec-full?cik=${encodeURIComponent(a.cik || \"\")}`,\n previewable: true,\n },\n {\n name: \"eu_vat\",\n description: \"EU VIES VAT validation: valid, name, address. $0.01 USDC.\",\n price: \"$0.01\",\n schema: {\n vat: z.string().optional(),\n country: z.string().optional(),\n number: z.string().optional(),\n },\n http: (a) =>\n a.vat\n ? `${ORIGIN}/eu-vat?vat=${encodeURIComponent(a.vat)}`\n : `${ORIGIN}/eu-vat?country=${encodeURIComponent(a.country || \"\")}&number=${encodeURIComponent(a.number || \"\")}`,\n previewable: true,\n },\n {\n name: \"lei_lookup\",\n description: \"GLEIF LEI lookup with parents.direct/ultimate + BIC. $0.005 USDC.\",\n price: \"$0.005\",\n schema: {\n lei: z.string().optional(),\n name: z.string().optional(),\n registered_as: z.string().optional(),\n country: z.string().optional(),\n },\n http: (a) => `${ORIGIN}/lei?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"lei_full\",\n description: \"GLEIF name/registered_as search up to 10 matches each with parents. $0.05 USDC.\",\n price: \"$0.05\",\n schema: {\n name: z.string().optional(),\n registered_as: z.string().optional(),\n country: z.string().optional(),\n lei: z.string().optional(),\n },\n http: (a) => `${ORIGIN}/lei-full?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"read_batch\",\n description: \"Batch web read up to 8 URLs as Markdown. $0.015 USDC.\",\n price: \"$0.015\",\n schema: { urls: z.any() },\n http: (a) => `${ORIGIN}/read-batch?urls=${encodeURIComponent(Array.isArray(a.urls) ? a.urls.join(\",\") : String(a.urls || \"\"))}`,\n previewable: true,\n },\n {\n name: \"uk_charity_full\",\n description:\n \"Full UK charity DD: trustees, finances, assets, governance, regulatory + red flags. $0.25 USDC.\",\n price: \"$0.25\",\n schema: {\n number: z.string().optional(),\n name: z.string().optional(),\n suffix: z.string().optional(),\n },\n http: (a) =>\n a.number\n ? `${ORIGIN}/uk-charity-full?number=${encodeURIComponent(a.number)}${a.suffix != null ? `&suffix=${encodeURIComponent(a.suffix)}` : \"\"}`\n : `${ORIGIN}/uk-charity-full?name=${encodeURIComponent(a.name || \"\")}`,\n previewable: true,\n },\n {\n name: \"uk_leads_lite\",\n description: \"UK new-incorporation leads by SIC/location/postcode_area (1-7 days), no directors. $0.25 USDC.\",\n price: \"$0.25\",\n schema: {\n sic: z.string().optional(),\n location: z.string().optional(),\n postcode_area: z.string().optional(),\n days: z.union([z.string(), z.number()]).optional(),\n limit: z.union([z.string(), z.number()]).optional(),\n },\n http: (a) => `${ORIGIN}/uk-leads-lite?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_leads\",\n description: \"UK new-incorporation leads with active director names. $1.00 USDC.\",\n price: \"$1.00\",\n schema: {\n sic: z.string().optional(),\n location: z.string().optional(),\n postcode_area: z.string().optional(),\n days: z.union([z.string(), z.number()]).optional(),\n limit: z.union([z.string(), z.number()]).optional(),\n },\n http: (a) => `${ORIGIN}/uk-leads?${qs(a)}`,\n previewable: true,\n },\n {\n name: \"uk_leads_feed\",\n description: \"30-day daily webhook of new UK incorporations matching SIC/location/postcode_area. $25.00/30d USDC.\",\n price: \"$25.00\",\n schema: {\n webhook: z.string().url(),\n sic: z.string().optional(),\n location: z.string().optional(),\n postcode_area: z.string().optional(),\n },\n http: () => `${ORIGIN}/uk-leads-feed`,\n method: \"POST\",\n body: (a) => a,\n },\n {\n name: \"uk_watch\",\n description: \"Watch one UK company 30 days: hourly CH poll → webhook on change. $5.00/30d USDC.\",\n price: \"$5.00\",\n schema: { number: z.string(), webhook: z.string().url() },\n http: () => `${ORIGIN}/uk-watch`,\n method: \"POST\",\n body: (a) => a,\n },\n {\n name: \"kyb_report\",\n description: \"Agent KYB pack: UK/AU/CA registry + EU VAT + optional GLEIF LEI (parents) + website + sanctions + director appointments → trust flag. Screening only. $2.50 USDC.\",\n price: \"$2.50\",\n schema: {\n domain: z.string().optional(),\n number: z.string().optional(),\n name: z.string().optional(),\n vat: z.string().optional(),\n country: z.string().optional(),\n vat_number: z.string().optional(),\n acn: z.string().optional(),\n ca_number: z.string().optional(),\n bn: z.string().optional(),\n lei: z.string().optional(),\n },\n http: (a) => `${ORIGIN}/kyb?${qs(a)}`,\n previewable: true,\n },\n];\n\n// Single-fact EVM tools (/chain/*), generated from the server's route table.\nfor (const r of CHAIN as any[]) {\n TOOLS.push({\n name: r.tool,\n description: r.description.replace(/\\$0\\.00\\d\\.$/, `${r.price} USDC.`),\n price: r.price,\n schema: Object.fromEntries(Object.keys(r.params).map((k) => [k, r.required.includes(k) ? z.string().describe(r.params[k]) : z.string().optional().describe(r.params[k])])),\n http: (a) => `${ORIGIN}${r.path}?${qs(a)}`,\n previewable: true,\n } as ToolDef);\n}\n","[\n {\n \"path\": \"/chain/erc20-balance\",\n \"tool\": \"chain_erc20_balance\",\n \"price\": \"$0.001\",\n \"description\": \"ERC20 token balance for any wallet on Base/Ethereum/Arbitrum/Optimism/Polygon via balanceOf (eth_call). Returns raw + decimal-formatted balance, symbol, decimals, block. Example: {address:\\\"0xd8dA…6045\\\", token:\\\"0x8335…2913\\\", chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"address\": \"Wallet address\",\n \"token\": \"ERC20 contract\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\",\n \"token\"\n ],\n \"example\": {\n \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"token\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/balance\",\n \"tool\": \"chain_balance\",\n \"price\": \"$0.001\",\n \"description\": \"Native coin balance (ETH/POL) of any address via eth_getBalance, optionally at a historical block. Example: {address:\\\"0xd8dA…6045\\\", chain:\\\"ethereum\\\"} → {balance:\\\"…\\\", balance_wei, block}. Use /wallet ($0.003) for native + major tokens in one call. $0.001.\",\n \"params\": {\n \"address\": \"Address\",\n \"chain\": \"EVM chain (default base)\",\n \"block\": \"Block number or tag (default latest)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"chain\": \"ethereum\"\n }\n },\n {\n \"path\": \"/chain/block-number\",\n \"tool\": \"chain_block_number\",\n \"price\": \"$0.001\",\n \"description\": \"Latest block height (chain tip) plus safe/finalized heights and head age in seconds, via eth_blockNumber/eth_getBlockByNumber. Base/Ethereum/Arbitrum/Optimism/Polygon. Example: {chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [],\n \"example\": {\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/nonce\",\n \"tool\": \"chain_nonce\",\n \"price\": \"$0.001\",\n \"description\": \"Next transaction nonce for any address (latest and pending) via eth_getTransactionCount — how many txs it has sent, and whether one is stuck in the mempool. Example: {address:\\\"0xd8dA…6045\\\", chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"address\": \"Address\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/total-supply\",\n \"tool\": \"chain_total_supply\",\n \"price\": \"$0.001\",\n \"description\": \"Total supply of an ERC20 or ERC721 token via totalSupply (eth_call), formatted with decimals and symbol. Example: {token:\\\"0x8335…2913\\\", chain:\\\"base\\\"} → {total_supply, symbol, decimals}. $0.001.\",\n \"params\": {\n \"token\": \"Token contract\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"token\"\n ],\n \"example\": {\n \"token\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/erc20-transfers\",\n \"tool\": \"chain_erc20_transfers\",\n \"price\": \"$0.003\",\n \"description\": \"ERC20 Transfer events for a token and/or wallet via eth_getLogs, decoded (from, to, amount with decimals, tx hash, block). Default last 1000 blocks, max 5000. Example: {token:\\\"0x8335…2913\\\", address:\\\"0x88b1…3ff6\\\", chain:\\\"base\\\"} → newest first. Use it to confirm incoming payments. $0.003.\",\n \"params\": {\n \"token\": \"ERC20 contract (optional if address given)\",\n \"address\": \"Wallet to filter (optional if token given)\",\n \"direction\": \"one of in|out|any\",\n \"blocks\": \"Lookback blocks (default 1000, max 5000)\",\n \"from_block\": \"from_block\",\n \"to_block\": \"to_block\",\n \"limit\": \"Max items (default 50, max 200)\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [],\n \"example\": {\n \"token\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"address\": \"0x88b1c747c33A5868A34057D8C57318E5602b3ff6\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/events\",\n \"tool\": \"chain_events\",\n \"price\": \"$0.003\",\n \"description\": \"Contract event logs via eth_getLogs filtered by contract and topics (topic0 = event signature hash). Raw logs, newest first; default last 1000 blocks, max 5000. Example: {address:\\\"0x8335…2913\\\", topic0:\\\"0xddf2…b3ef\\\", chain:\\\"base\\\", blocks:\\\"50\\\"}. $0.003.\",\n \"params\": {\n \"address\": \"Contract emitting the logs\",\n \"topic0\": \"Event signature hash (0x + 64 hex)\",\n \"topic1\": \"topic1\",\n \"topic2\": \"topic2\",\n \"topic3\": \"topic3\",\n \"blocks\": \"blocks\",\n \"from_block\": \"from_block\",\n \"to_block\": \"to_block\",\n \"limit\": \"limit\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"topic0\": \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\n \"blocks\": \"20\",\n \"limit\": \"5\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/network-info\",\n \"tool\": \"chain_network_info\",\n \"price\": \"$0.001\",\n \"description\": \"EVM network info in one call: chain ID, client version, block height, head age, gas price, base fee, native symbol. Confirms which chain an RPC is on before signing. Example: {chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [],\n \"example\": {\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/receipt\",\n \"tool\": \"chain_receipt\",\n \"price\": \"$0.002\",\n \"description\": \"Transaction receipt via eth_getTransactionReceipt: success/revert status, gas used, effective gas price, fee in native coin, contract created, log count + raw logs. Example: {hash:\\\"0x…\\\", chain:\\\"base\\\"}. Use /tx ($0.003) for decoded transfers + confirmations. $0.002.\",\n \"params\": {\n \"hash\": \"hash\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"hash\"\n ],\n \"example\": {\n \"hash\": \"0x6f0d9bbb400eef11b67d1b9b41a5b9053b6790f254a3e9dea264dd1a8ded6a73\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/code\",\n \"tool\": \"chain_code\",\n \"price\": \"$0.001\",\n \"description\": \"Is this address a contract or a wallet (EOA)? eth_getCode → is_contract, bytecode size and prefix, EIP-7702 delegation detection. Example: {address:\\\"0x8335…2913\\\", chain:\\\"base\\\"}. Use /contract ($0.003) for proxy/owner/token detail. $0.001.\",\n \"params\": {\n \"address\": \"Address\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/call\",\n \"tool\": \"chain_call\",\n \"price\": \"$0.002\",\n \"description\": \"Read-only contract call via eth_call (no transaction sent): pass to + ABI-encoded data, get the raw return hex plus best-effort uint/address/string decodes and revert reason. Example: {to:\\\"0x8335…2913\\\", data:\\\"0x18160ddd\\\", chain:\\\"base\\\"}. $0.002.\",\n \"params\": {\n \"to\": \"Contract\",\n \"data\": \"0x calldata\",\n \"from\": \"Optional caller\",\n \"block\": \"block\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"to\",\n \"data\"\n ],\n \"example\": {\n \"to\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"data\": \"0x18160ddd\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/estimate-gas\",\n \"tool\": \"chain_estimate_gas\",\n \"price\": \"$0.002\",\n \"description\": \"Estimate gas for a transaction before signing (eth_estimateGas) plus current fee → cost in native coin; returns the revert reason if it would fail. Example: {from:\\\"0xd8dA…6045\\\", to:\\\"0x8335…2913\\\", data:\\\"0xa9059cbb…\\\", chain:\\\"base\\\"}. $0.002.\",\n \"params\": {\n \"to\": \"Recipient/contract\",\n \"from\": \"Sender\",\n \"data\": \"data\",\n \"value\": \"Wei (decimal)\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"to\"\n ],\n \"example\": {\n \"from\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"to\": \"0x88b1c747c33A5868A34057D8C57318E5602b3ff6\",\n \"value\": \"1000000000000\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/nft-owner\",\n \"tool\": \"chain_nft_owner\",\n \"price\": \"$0.001\",\n \"description\": \"Current owner of an ERC721 token_id via ownerOf (eth_call), plus collection name/symbol. Example: {contract:\\\"0xBC4C…f13D\\\", token_id:\\\"1\\\", chain:\\\"ethereum\\\"} → {owner}. Use /nft ($0.002) for metadata. $0.001.\",\n \"params\": {\n \"contract\": \"ERC721 contract\",\n \"token_id\": \"token_id\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"contract\",\n \"token_id\"\n ],\n \"example\": {\n \"contract\": \"0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D\",\n \"token_id\": \"1\",\n \"chain\": \"ethereum\"\n }\n },\n {\n \"path\": \"/chain/erc1155-balance\",\n \"tool\": \"chain_erc1155_balance\",\n \"price\": \"$0.001\",\n \"description\": \"ERC1155 balance: how many copies of token_id a wallet holds, via balanceOf(address,uint256) (eth_call). Example: {contract:\\\"0x…\\\", address:\\\"0x…\\\", token_id:\\\"1\\\", chain:\\\"base\\\"}. $0.001.\",\n \"params\": {\n \"contract\": \"ERC1155 contract\",\n \"address\": \"Holder\",\n \"token_id\": \"token_id\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"contract\",\n \"address\",\n \"token_id\"\n ],\n \"example\": {\n \"contract\": \"0x76be3b62873462d2142405439777e971754e8e77\",\n \"address\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\",\n \"token_id\": \"10229\",\n \"chain\": \"ethereum\"\n }\n },\n {\n \"path\": \"/chain/storage\",\n \"tool\": \"chain_storage\",\n \"price\": \"$0.001\",\n \"description\": \"Read a raw storage slot of any contract via eth_getStorageAt, with uint and address decodes. Example: {address:\\\"0x8335…2913\\\", slot:\\\"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\\\", chain:\\\"base\\\"} (EIP-1967 implementation slot). $0.001.\",\n \"params\": {\n \"address\": \"Contract\",\n \"slot\": \"Slot (decimal or 0x hex)\",\n \"block\": \"block\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\",\n \"slot\"\n ],\n \"example\": {\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"slot\": \"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/proxy\",\n \"tool\": \"chain_proxy\",\n \"price\": \"$0.002\",\n \"description\": \"Detect upgradeable proxies (EIP-1967 transparent/UUPS, beacon, legacy OZ, EIP-1167 minimal clones, EIP-7702) via eth_getStorageAt/eth_getCode: implementation, admin, beacon, and whether the implementation is a live contract. Example: {address:\\\"0x8335…2913\\\", chain:\\\"base\\\"}. $0.002.\",\n \"params\": {\n \"address\": \"Contract\",\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [\n \"address\"\n ],\n \"example\": {\n \"address\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"chain\": \"base\"\n }\n },\n {\n \"path\": \"/chain/chain-id\",\n \"tool\": \"chain_chain_id\",\n \"price\": \"$0.001\",\n \"description\": \"EIP-155 chain ID straight from the RPC (eth_chainId + net_version) — confirm which network you are about to sign on. Example: {chain:\\\"base\\\"} → {chain_id:8453}. $0.001.\",\n \"params\": {\n \"chain\": \"EVM chain (default base)\"\n },\n \"required\": [],\n \"example\": {\n \"chain\": \"base\"\n }\n }\n]","import { wrapFetchWithPayment, x402Client } from \"@x402/fetch\";\nimport { ExactEvmScheme } from \"@x402/evm/exact/client\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nexport type PaidFetch = typeof fetch;\n\n/** Resolve an EVM private key from common env names. */\nexport function resolvePrivateKey(): `0x${string}` | undefined {\n const raw =\n process.env.AGENTREADER_PRIVATE_KEY ||\n process.env.EVM_PRIVATE_KEY ||\n process.env.PRIVATE_KEY ||\n process.env.X402_PRIVATE_KEY;\n if (!raw) return undefined;\n const key = raw.startsWith(\"0x\") ? raw : `0x${raw}`;\n if (!/^0x[0-9a-fA-F]{64}$/.test(key)) {\n throw new Error(\n \"Invalid AGENTREADER_PRIVATE_KEY / EVM_PRIVATE_KEY (expected 32-byte hex with optional 0x)\",\n );\n }\n return key as `0x${string}`;\n}\n\n/** Build a fetch that auto-settles x402 exact USDC on Base when a key is present. */\nexport function createFetch(): { fetch: PaidFetch; paying: boolean } {\n const key = resolvePrivateKey();\n if (!key) return { fetch: globalThis.fetch.bind(globalThis), paying: false };\n const account = privateKeyToAccount(key);\n const client = new x402Client().register(\"eip155:8453\", new ExactEvmScheme(account));\n return { fetch: wrapFetchWithPayment(globalThis.fetch.bind(globalThis), client), paying: true };\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axiomworks/agentreader-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "Axiom Works AgentReader stdio MCP server \u2014 x402-paid tools (web read, UK CH/charity/property, US SEC EDGAR, EU VIES VAT, GLEIF LEI, EVM wallet/tx/token/ENS, FX, search). Auto-pays USDC on Base when AGENTREADER_PRIVATE_KEY is set. Run: npx -y @axiomworks/agentreader-mcp",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"mcpName": "io.github.grokbot1233/agentreader",
|