@axiomworks/agentreader 1.6.1 → 1.7.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.d.ts CHANGED
@@ -144,6 +144,19 @@ declare class AgentReaderClient {
144
144
  name?: string;
145
145
  suffix?: string;
146
146
  }, opts?: RequestOpts): Promise<any>;
147
+ usSec(input: {
148
+ ticker?: string;
149
+ cik?: string;
150
+ }, opts?: RequestOpts): Promise<any>;
151
+ usSecFull(input: {
152
+ ticker?: string;
153
+ cik?: string;
154
+ }, opts?: RequestOpts): Promise<any>;
155
+ euVat(input: {
156
+ vat?: string;
157
+ country?: string;
158
+ number?: string;
159
+ }, opts?: RequestOpts): Promise<any>;
147
160
  }
148
161
  /** Create a typed AgentReader client. Pass privateKey (or set AGENTREADER_PRIVATE_KEY) to auto-pay. */
149
162
  declare function createClient(opts?: ClientOptions): AgentReaderClient;
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
3
3
  import { ExactEvmScheme } from "@x402/evm/exact/client";
4
4
  import { privateKeyToAccount } from "viem/accounts";
5
5
  var DEFAULT_ORIGIN = "https://api.axiomworks.co.uk";
6
- var VERSION = "1.6.1";
6
+ var VERSION = "1.7.0";
7
7
  function normalizeKey(raw) {
8
8
  if (!raw) return void 0;
9
9
  const key = raw.startsWith("0x") ? raw : `0x${raw}`;
@@ -195,6 +195,15 @@ var AgentReaderClient = class {
195
195
  ukCharityFull(input, opts) {
196
196
  return this.get("/uk-charity-full", input, opts);
197
197
  }
198
+ usSec(input, opts) {
199
+ return this.get("/us-sec", input, opts);
200
+ }
201
+ usSecFull(input, opts) {
202
+ return this.get("/us-sec-full", input, opts);
203
+ }
204
+ euVat(input, opts) {
205
+ return this.get("/eu-vat", input, opts);
206
+ }
198
207
  };
199
208
  function createClient(opts = {}) {
200
209
  return new AgentReaderClient(opts);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client.ts"],"sourcesContent":["import { wrapFetchWithPayment, x402Client } from \"@x402/fetch\";\nimport { ExactEvmScheme } from \"@x402/evm/exact/client\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport type { Chain, ClientOptions, RequestOpts } from \"./types.js\";\n\nconst DEFAULT_ORIGIN = \"https://api.axiomworks.co.uk\";\nconst VERSION = \"1.6.1\";\n\nfunction normalizeKey(raw?: string): `0x${string}` | undefined {\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(\"privateKey must be a 32-byte hex string (optional 0x prefix)\");\n }\n return key as `0x${string}`;\n}\n\nfunction qs(params: Record<string, unknown>): string {\n const sp = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v == null || v === \"\") continue;\n sp.set(k, String(v));\n }\n return sp.toString();\n}\n\nexport class PaymentRequiredError extends Error {\n readonly status = 402;\n readonly paymentRequired: unknown;\n readonly body: unknown;\n readonly url: string;\n constructor(url: string, paymentRequired: unknown, body: unknown) {\n super(\"Payment required (x402). Pass privateKey to createClient or fund/retry with @x402/fetch.\");\n this.name = \"PaymentRequiredError\";\n this.url = url;\n this.paymentRequired = paymentRequired;\n this.body = body;\n }\n}\n\nexport class AgentReaderClient {\n readonly origin: string;\n readonly paying: boolean;\n private readonly fetchFn: typeof fetch;\n private readonly defaultPreview: boolean;\n private readonly ua: string;\n\n constructor(opts: ClientOptions = {}) {\n this.origin = (opts.origin || DEFAULT_ORIGIN).replace(/\\/$/, \"\");\n const key = normalizeKey(\n opts.privateKey ||\n process.env.AGENTREADER_PRIVATE_KEY ||\n process.env.EVM_PRIVATE_KEY ||\n process.env.PRIVATE_KEY,\n );\n this.paying = !!key;\n this.defaultPreview = opts.preview ?? !this.paying;\n this.ua = opts.userAgent || `axiomworks-agentreader-sdk/${VERSION}`;\n if (key) {\n const account = privateKeyToAccount(key);\n const client = new x402Client().register(\"eip155:8453\", new ExactEvmScheme(account));\n const base = opts.fetch || globalThis.fetch.bind(globalThis);\n this.fetchFn = wrapFetchWithPayment(base, client);\n } else {\n this.fetchFn = opts.fetch || globalThis.fetch.bind(globalThis);\n }\n }\n\n private async request(\n path: string,\n init: RequestInit & { previewable?: boolean } = {},\n opts: RequestOpts = {},\n ): Promise<any> {\n const url = new URL(path.startsWith(\"http\") ? path : `${this.origin}${path}`);\n if (opts.query) {\n for (const [k, v] of Object.entries(opts.query)) {\n if (v == null || v === \"\") continue;\n url.searchParams.set(k, String(v));\n }\n }\n const wantPreview =\n opts.preview === true ||\n (opts.preview !== false && this.defaultPreview && init.method !== \"POST\" && init.previewable !== false);\n if (wantPreview && !url.searchParams.has(\"preview\")) {\n url.searchParams.set(\"preview\", \"1\");\n }\n const res = await this.fetchFn(url.toString(), {\n ...init,\n headers: {\n accept: \"application/json\",\n \"user-agent\": this.ua,\n ...(init.headers || {}),\n },\n });\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, 4000) };\n }\n if (res.status === 402 || pr) {\n let payment: unknown = null;\n if (pr) {\n try {\n payment = JSON.parse(Buffer.from(pr, \"base64\").toString(\"utf8\"));\n } catch {\n payment = { raw: pr.slice(0, 200) };\n }\n }\n throw new PaymentRequiredError(url.toString(), payment ?? body, body);\n }\n if (!res.ok) {\n const err: any = new Error(body?.error || `HTTP ${res.status}`);\n err.status = res.status;\n err.body = body;\n throw err;\n }\n return body;\n }\n\n private get(path: string, query?: Record<string, unknown>, opts?: RequestOpts) {\n const q = qs({ ...(query || {}), ...(opts?.query || {}) });\n return this.request(`${path}${q ? `?${q}` : \"\"}`, { method: \"GET\" }, opts);\n }\n\n /** Free: x402 catalog / prices */\n pricing(opts?: RequestOpts) {\n return this.request(`${this.origin}/.well-known/x402`, { method: \"GET\", previewable: false }, { ...opts, preview: false });\n }\n\n readUrl(input: { url: string }, opts?: RequestOpts) {\n return this.get(\"/read\", input, opts);\n }\n extractLinks(input: { url: string }, opts?: RequestOpts) {\n return this.get(\"/links\", input, opts);\n }\n checkDomain(input: { domain: string }, opts?: RequestOpts) {\n return this.get(\"/check\", input, opts);\n }\n companyResearch(input: { domain: string }, opts?: RequestOpts) {\n return this.get(\"/company\", input, opts);\n }\n ukCompany(input: { number?: string; name?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-company\", input, opts);\n }\n ukCompanyLite(input: { number?: string; name?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-company-lite\", input, opts);\n }\n companyFull(input: { domain: string }, opts?: RequestOpts) {\n return this.get(\"/company-full\", input, opts);\n }\n convertDocument(input: { url: string; format?: \"markdown\" | \"text\" }, opts?: RequestOpts) {\n return this.get(\"/convert\", { format: \"markdown\", ...input }, opts);\n }\n createMonitor(\n input: { url: string; webhook: string; selector?: string; keyword?: string },\n opts?: RequestOpts,\n ) {\n return this.request(\n `${this.origin}/monitor`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(input),\n previewable: false,\n },\n { ...opts, preview: false },\n );\n }\n walletBalances(input: { address: string; chain?: Chain; tokens?: string }, opts?: RequestOpts) {\n return this.get(\"/wallet\", input, opts);\n }\n txStatus(input: { hash: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/tx\", input, opts);\n }\n tokenCheck(input: { address: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/token-check\", input, opts);\n }\n fxRates(\n input: { base?: string; symbols?: string; date?: string; amount?: string } = {},\n opts?: RequestOpts,\n ) {\n return this.get(\"/fx\", input, opts);\n }\n ensLookup(input: { name?: string; address?: string }, opts?: RequestOpts) {\n return this.get(\"/ens\", input, opts);\n }\n tokenMetadata(input: { address: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/token\", input, opts);\n }\n tokenAllowance(\n input: { token: string; owner: string; spender: string; chain?: Chain },\n opts?: RequestOpts,\n ) {\n return this.get(\"/allowance\", input, opts);\n }\n contractInfo(input: { address: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/contract\", input, opts);\n }\n gasFees(input: { chain?: Chain } = {}, opts?: RequestOpts) {\n return this.get(\"/gas\", input, opts);\n }\n blockLookup(input: { number?: string; timestamp?: string; chain?: Chain } = {}, opts?: RequestOpts) {\n return this.get(\"/block\", input, opts);\n }\n nftLookup(input: { contract: string; token_id: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/nft\", input, opts);\n }\n webSearch(input: { q: string; sources?: string; limit?: string | number }, opts?: RequestOpts) {\n return this.get(\"/search\", input, opts);\n }\n ukPropertyPrices(input: { postcode: string; radius?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-property\", input, opts);\n }\n ukAreaProfile(input: { postcode: string }, opts?: RequestOpts) {\n return this.get(\"/uk-area\", input, opts);\n }\n ukCharity(input: { number?: string; name?: string; suffix?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-charity\", input, opts);\n }\n ukCharityFull(input: { number?: string; name?: string; suffix?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-charity-full\", input, opts);\n }\n}\n\n/** Create a typed AgentReader client. Pass privateKey (or set AGENTREADER_PRIVATE_KEY) to auto-pay. */\nexport function createClient(opts: ClientOptions = {}): AgentReaderClient {\n return new AgentReaderClient(opts);\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/client.ts"],"sourcesContent":["import { wrapFetchWithPayment, x402Client } from \"@x402/fetch\";\nimport { ExactEvmScheme } from \"@x402/evm/exact/client\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport type { Chain, ClientOptions, RequestOpts } from \"./types.js\";\n\nconst DEFAULT_ORIGIN = \"https://api.axiomworks.co.uk\";\nconst VERSION = \"1.7.0\";\n\nfunction normalizeKey(raw?: string): `0x${string}` | undefined {\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(\"privateKey must be a 32-byte hex string (optional 0x prefix)\");\n }\n return key as `0x${string}`;\n}\n\nfunction qs(params: Record<string, unknown>): string {\n const sp = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v == null || v === \"\") continue;\n sp.set(k, String(v));\n }\n return sp.toString();\n}\n\nexport class PaymentRequiredError extends Error {\n readonly status = 402;\n readonly paymentRequired: unknown;\n readonly body: unknown;\n readonly url: string;\n constructor(url: string, paymentRequired: unknown, body: unknown) {\n super(\"Payment required (x402). Pass privateKey to createClient or fund/retry with @x402/fetch.\");\n this.name = \"PaymentRequiredError\";\n this.url = url;\n this.paymentRequired = paymentRequired;\n this.body = body;\n }\n}\n\nexport class AgentReaderClient {\n readonly origin: string;\n readonly paying: boolean;\n private readonly fetchFn: typeof fetch;\n private readonly defaultPreview: boolean;\n private readonly ua: string;\n\n constructor(opts: ClientOptions = {}) {\n this.origin = (opts.origin || DEFAULT_ORIGIN).replace(/\\/$/, \"\");\n const key = normalizeKey(\n opts.privateKey ||\n process.env.AGENTREADER_PRIVATE_KEY ||\n process.env.EVM_PRIVATE_KEY ||\n process.env.PRIVATE_KEY,\n );\n this.paying = !!key;\n this.defaultPreview = opts.preview ?? !this.paying;\n this.ua = opts.userAgent || `axiomworks-agentreader-sdk/${VERSION}`;\n if (key) {\n const account = privateKeyToAccount(key);\n const client = new x402Client().register(\"eip155:8453\", new ExactEvmScheme(account));\n const base = opts.fetch || globalThis.fetch.bind(globalThis);\n this.fetchFn = wrapFetchWithPayment(base, client);\n } else {\n this.fetchFn = opts.fetch || globalThis.fetch.bind(globalThis);\n }\n }\n\n private async request(\n path: string,\n init: RequestInit & { previewable?: boolean } = {},\n opts: RequestOpts = {},\n ): Promise<any> {\n const url = new URL(path.startsWith(\"http\") ? path : `${this.origin}${path}`);\n if (opts.query) {\n for (const [k, v] of Object.entries(opts.query)) {\n if (v == null || v === \"\") continue;\n url.searchParams.set(k, String(v));\n }\n }\n const wantPreview =\n opts.preview === true ||\n (opts.preview !== false && this.defaultPreview && init.method !== \"POST\" && init.previewable !== false);\n if (wantPreview && !url.searchParams.has(\"preview\")) {\n url.searchParams.set(\"preview\", \"1\");\n }\n const res = await this.fetchFn(url.toString(), {\n ...init,\n headers: {\n accept: \"application/json\",\n \"user-agent\": this.ua,\n ...(init.headers || {}),\n },\n });\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, 4000) };\n }\n if (res.status === 402 || pr) {\n let payment: unknown = null;\n if (pr) {\n try {\n payment = JSON.parse(Buffer.from(pr, \"base64\").toString(\"utf8\"));\n } catch {\n payment = { raw: pr.slice(0, 200) };\n }\n }\n throw new PaymentRequiredError(url.toString(), payment ?? body, body);\n }\n if (!res.ok) {\n const err: any = new Error(body?.error || `HTTP ${res.status}`);\n err.status = res.status;\n err.body = body;\n throw err;\n }\n return body;\n }\n\n private get(path: string, query?: Record<string, unknown>, opts?: RequestOpts) {\n const q = qs({ ...(query || {}), ...(opts?.query || {}) });\n return this.request(`${path}${q ? `?${q}` : \"\"}`, { method: \"GET\" }, opts);\n }\n\n /** Free: x402 catalog / prices */\n pricing(opts?: RequestOpts) {\n return this.request(`${this.origin}/.well-known/x402`, { method: \"GET\", previewable: false }, { ...opts, preview: false });\n }\n\n readUrl(input: { url: string }, opts?: RequestOpts) {\n return this.get(\"/read\", input, opts);\n }\n extractLinks(input: { url: string }, opts?: RequestOpts) {\n return this.get(\"/links\", input, opts);\n }\n checkDomain(input: { domain: string }, opts?: RequestOpts) {\n return this.get(\"/check\", input, opts);\n }\n companyResearch(input: { domain: string }, opts?: RequestOpts) {\n return this.get(\"/company\", input, opts);\n }\n ukCompany(input: { number?: string; name?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-company\", input, opts);\n }\n ukCompanyLite(input: { number?: string; name?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-company-lite\", input, opts);\n }\n companyFull(input: { domain: string }, opts?: RequestOpts) {\n return this.get(\"/company-full\", input, opts);\n }\n convertDocument(input: { url: string; format?: \"markdown\" | \"text\" }, opts?: RequestOpts) {\n return this.get(\"/convert\", { format: \"markdown\", ...input }, opts);\n }\n createMonitor(\n input: { url: string; webhook: string; selector?: string; keyword?: string },\n opts?: RequestOpts,\n ) {\n return this.request(\n `${this.origin}/monitor`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(input),\n previewable: false,\n },\n { ...opts, preview: false },\n );\n }\n walletBalances(input: { address: string; chain?: Chain; tokens?: string }, opts?: RequestOpts) {\n return this.get(\"/wallet\", input, opts);\n }\n txStatus(input: { hash: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/tx\", input, opts);\n }\n tokenCheck(input: { address: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/token-check\", input, opts);\n }\n fxRates(\n input: { base?: string; symbols?: string; date?: string; amount?: string } = {},\n opts?: RequestOpts,\n ) {\n return this.get(\"/fx\", input, opts);\n }\n ensLookup(input: { name?: string; address?: string }, opts?: RequestOpts) {\n return this.get(\"/ens\", input, opts);\n }\n tokenMetadata(input: { address: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/token\", input, opts);\n }\n tokenAllowance(\n input: { token: string; owner: string; spender: string; chain?: Chain },\n opts?: RequestOpts,\n ) {\n return this.get(\"/allowance\", input, opts);\n }\n contractInfo(input: { address: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/contract\", input, opts);\n }\n gasFees(input: { chain?: Chain } = {}, opts?: RequestOpts) {\n return this.get(\"/gas\", input, opts);\n }\n blockLookup(input: { number?: string; timestamp?: string; chain?: Chain } = {}, opts?: RequestOpts) {\n return this.get(\"/block\", input, opts);\n }\n nftLookup(input: { contract: string; token_id: string; chain?: Chain }, opts?: RequestOpts) {\n return this.get(\"/nft\", input, opts);\n }\n webSearch(input: { q: string; sources?: string; limit?: string | number }, opts?: RequestOpts) {\n return this.get(\"/search\", input, opts);\n }\n ukPropertyPrices(input: { postcode: string; radius?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-property\", input, opts);\n }\n ukAreaProfile(input: { postcode: string }, opts?: RequestOpts) {\n return this.get(\"/uk-area\", input, opts);\n }\n ukCharity(input: { number?: string; name?: string; suffix?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-charity\", input, opts);\n }\n ukCharityFull(input: { number?: string; name?: string; suffix?: string }, opts?: RequestOpts) {\n return this.get(\"/uk-charity-full\", input, opts);\n }\n usSec(input: { ticker?: string; cik?: string }, opts?: RequestOpts) {\n return this.get(\"/us-sec\", input, opts);\n }\n usSecFull(input: { ticker?: string; cik?: string }, opts?: RequestOpts) {\n return this.get(\"/us-sec-full\", input, opts);\n }\n euVat(input: { vat?: string; country?: string; number?: string }, opts?: RequestOpts) {\n return this.get(\"/eu-vat\", input, opts);\n }\n}\n\n/** Create a typed AgentReader client. Pass privateKey (or set AGENTREADER_PRIVATE_KEY) to auto-pay. */\nexport function createClient(opts: ClientOptions = {}): AgentReaderClient {\n return new AgentReaderClient(opts);\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@axiomworks/agentreader",
3
- "version": "1.6.1",
4
- "description": "Axiom Works AgentReader typed JS/TS SDK \u2014 createClient({ privateKey }) with one method per tool, auto x402 USDC payment on Base, free preview mode. Web read, UK company/charity/property, EVM, FX, search.",
3
+ "version": "1.7.0",
4
+ "description": "Axiom Works AgentReader typed JS/TS SDK \u2014 createClient({ privateKey }) with one method per tool, auto x402 USDC payment on Base, free preview mode. Web read, UK company/charity/property, US SEC, EU VAT, EVM, FX, search.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",