# Agent Tools > Small pay-per-call utilities for AI agents. Payment is x402 (HTTP 402), USDC on Base (eip155:8453). No accounts or API keys: call an endpoint, receive a 402 with payment requirements, pay, retry with the PAYMENT-SIGNATURE header. ## Endpoints ### email_check GET https://agents.crowdspark.me/v1/email/check ($0.001 USDC) Email validation for signup forms, lead lists and CRM cleanup: checks syntax, MX mail servers, disposable or temporary domains, role addresses (info@, sales@) and free providers. Returns a deliverable_guess. No SMTP probe, no data stored. Example input: {"email":"jane@acme.com"} Example output: {"email":"jane@acme.com","valid_syntax":true,"domain":"acme.com","mx_records":["10 mx1.acme.com."],"has_mail_server":true,"disposable":false,"role_account":false,"free_provider":false,"deliverable_guess":"likely"} ### email_check_full GET https://agents.crowdspark.me/v1/email/full ($0.004 USDC) One call email risk check: everything in email_check plus sender domain health (domain age, registrar, SPF, DMARC, website reachable) and a 0-100 risk score with accept/review/reject verdict. Use for fraud screening, lead qualification and signup gating. Example input: {"email":"jane@acme.com"} Example output: {"email":"jane@acme.com","has_mail_server":true,"disposable":false,"domain_health":{"registrar":"GoDaddy.com, LLC","age_days":4021,"spf":"v=spf1 include:_spf.google.com ~all","dmarc":"v=DMARC1; p=reject","website_reachable":true},"risk_score":0,"risk_reasons":[],"verdict":"accept"} ### pdf_to_text GET https://agents.crowdspark.me/v1/pdf/text ($0.006 USDC) PDF to text or markdown for RAG, summarizing, search indexing and reading reports, papers, contracts and invoices. Give a PDF URL (max 20 MB); returns text per page. format=text or markdown. Not stored. Example input: {"url":"https://pdfobject.com/pdf/sample.pdf","format":"markdown"} Example output: {"pages":1,"format":"markdown","characters":2859,"text":"## Page 1\n\nSample PDF\nThis is a simple PDF file..."} ### pdf_to_text_upload POST https://agents.crowdspark.me/v1/pdf/text/upload ($0.006 USDC) PDF to text from uploaded bytes. POST the raw PDF as the body (content-type application/pdf); multipart 'file' or JSON {"base64"} also work. Real PDF only (starts with %PDF), max 20 MB, with a text layer. Optional ?format=text|markdown. Bad files get HTTP 400 with a hint and are not charged. Sample: https://agents.crowdspark.me/samples/sample.pdf Not password-protected. For scans use image_ocr_upload. Returns {pages, format, characters, text}. Errors return {error, code, hint, charged:false}. Example input: {} Example output: {"pages":1,"format":"text","characters":69,"text":"INVOICE\nInvoice #: INV-1042\nDate: 2026-10-01\nTotal: $1,250.00"} ### document_extract GET https://agents.crowdspark.me/v1/document/extract ($0.012 USDC) One call document parsing for invoices, receipts, statements, forms and scanned pages: PDF or image URL in, full text plus extracted fields out (dates, money amounts, totals/tax/amount due, invoice or order numbers, key: value pairs, emails, phones, URLs, simple tables). Images and scans use OCR. Example input: {"url":"https://pdfobject.com/pdf/sample.pdf"} Example output: {"kind":"pdf","pages":1,"characters":1840,"text":"INVOICE\nInvoice #: INV-1042\nDate: 2026-10-01\nTotal: $1,250.00","fields":{"dates":["2026-10-01"],"amounts":["$1,250.00"],"totals":[{"label":"total","value":"$1,250.00"}],"identifiers":["Invoice #: INV-1042"],"key_values":{"Invoice":"INV-1042","Date":"2026-10-01"},"emails":[],"phones":[],"urls":[],"tables":[]}} ### document_extract_upload POST https://agents.crowdspark.me/v1/document/extract/upload ($0.012 USDC) Document parsing from uploaded bytes. POST a raw PDF (max 20 MB, text layer) or PNG/JPEG/WebP image (max 10 MB, OCR) as the body with its content-type; multipart 'file' or JSON {"base64"} also work. Returns text plus dates, amounts, totals, IDs and tables. Bad files get HTTP 400 with a hint and are not charged. Samples: https://agents.crowdspark.me/samples/sample.pdf Image sample: https://agents.crowdspark.me/samples/sample.png. Errors return {error, code, hint, charged:false}. Example input: {} Example output: {"kind":"image","pages":null,"text":"TOTAL $12.40","fields":{"amounts":["$12.40"],"totals":[{"label":"total","value":"$12.40"}]}} ### domain_lookup GET https://agents.crowdspark.me/v1/domain/lookup ($0.003 USDC) Domain intelligence for due diligence, phishing checks and lead research: registrar, creation and expiry dates (RDAP/WHOIS), A/AAAA/MX/NS/TXT records, SPF, DMARC and HTTPS reachability in one call. Example input: {"domain":"example.com"} Example output: {"domain":"example.com","registered":true,"registrar":"RESERVED-Internet Assigned Numbers Authority","created":"1995-08-14T04:00:00Z","expires":"2027-08-13T04:00:00Z","dns":{"a":["93.184.215.14"],"mx":[],"ns":["a.iana-servers.net."]},"email_security":{"spf":"v=spf1 -all","dmarc":null},"https":{"reachable":true,"status":200}} ### image_ocr GET https://agents.crowdspark.me/v1/ocr ($0.005 USDC) OCR: read all text from a screenshot, photo, receipt, sign, scanned page or chart image at a URL (PNG/JPEG, max 10 MB). Keeps line breaks. Example input: {"url":"https://placehold.co/600x200/png?text=Hello+Agent+Tools"} Example output: {"text":"Hello Agent Tools"} ### image_ocr_upload POST https://agents.crowdspark.me/v1/ocr/upload ($0.005 USDC) OCR from uploaded bytes. POST the raw image as the body with its content-type (image/png, image/jpeg or image/webp); multipart 'file' or JSON {"base64"} also work. Real PNG, JPEG or WebP only, max 10 MB. Returns {text}. Bad files get HTTP 400 with a hint and are not charged. Sample: https://agents.crowdspark.me/samples/sample.png Errors return {error, code, hint, charged:false}. Example input: {} Example output: {"text":"RECEIPT Cafe Nova\nOrder #: 4821\nTOTAL $12.40"} ### file_convert POST https://agents.crowdspark.me/v1/convert ($0.003 USDC) Format conversion for data pipelines and publishing: CSV to JSON, JSON to CSV, HTML to markdown, markdown to HTML, HTML to plain text. JSON body {from, to, input}. Example input: {"from":"csv","to":"json","input":"name,qty\nwidget,2"} Example output: {"output":[{"name":"widget","qty":"2"}]} ### web_to_markdown GET https://agents.crowdspark.me/v1/web/markdown ($0.0015 USDC) Read a web page as clean LLM-ready markdown (main content, no nav or scripts) for research, RAG and summarization. Respects robots.txt. Example input: {"url":"https://example.com"} Example output: {"url":"https://example.com/","status":200,"title":"Example Domain","characters":156,"markdown":"This domain is for use in documentation examples..."} ### web_read_full GET https://agents.crowdspark.me/v1/web/read ($0.004 USDC) One call page reader: clean markdown plus page metadata (title, description, Open Graph, canonical, favicon), outbound links, word count and extracted dates, prices, emails and phones. Use for research agents, price checks and lead enrichment from public pages. Example input: {"url":"https://example.com"} Example output: {"url":"https://example.com/","title":"Example Domain","markdown":"...","meta":{"description":null,"og_image":null,"canonical":null},"links":["https://iana.org/domains/example"],"word_count":25,"fields":{"dates":[],"amounts":[],"emails":[],"phones":[]}} ### url_metadata GET https://agents.crowdspark.me/v1/web/meta ($0.001 USDC) Link preview and unfurl data: title, description, Open Graph image, site name, canonical URL, favicon and final URL after redirects. Example input: {"url":"https://github.com"} Example output: {"url":"https://github.com/","final_url":"https://github.com/","status":200,"title":"GitHub","description":"Join the world's most widely adopted...","og_image":"https://github.githubassets.com/images/modules/site/social-cards/campaign-social.png","site_name":"GitHub"} ### timezone_convert GET https://agents.crowdspark.me/v1/time/convert ($0.001 USDC) Timezone conversion for scheduling meetings and deadlines across IANA zones, with DST-correct UTC offsets. time=ISO local time or 'now'. Example input: {"time":"2026-10-22T12:00:00","from":"America/New_York","to":"Asia/Tokyo"} Example output: {"utc":"2026-10-22T16:00:00.000Z","from":{"timezone":"America/New_York","local":"2026-10-22T12:00:00","utc_offset":"-04:00"},"to":{"timezone":"Asia/Tokyo","local":"2026-10-23T01:00:00","utc_offset":"+09:00"}} ### business_days GET https://agents.crowdspark.me/v1/time/business-days ($0.001 USDC) Business day calculator for SLAs, invoice due dates, shipping and legal deadlines: counts working days between two dates, skipping weekends and national public holidays (ISO country code). Example input: {"start":"2026-12-01","end":"2026-12-31","country":"US"} Example output: {"start":"2026-12-01","end":"2026-12-31","country":"US","business_days":22,"holidays_excluded":1,"inclusive":true} ### public_holidays GET https://agents.crowdspark.me/v1/time/holidays ($0.001 USDC) Public holiday calendar for 100+ countries by year, for scheduling, payroll and delivery planning. Example input: {"country":"US","year":"2027"} Example output: {"year":2027,"country":"US","holidays":[{"date":"2027-01-01","name":"New Year's Day","local_name":"New Year's Day","global":true}]} ### fx_rates GET https://agents.crowdspark.me/v1/fx/rates ($0.001 USDC) Currency exchange rates (European Central Bank reference rates) for price conversion, invoicing and travel budgets. Latest or historical by date. Example input: {"base":"USD","symbols":"EUR,JPY"} Example output: {"source":"European Central Bank via Frankfurter","base":"USD","date":"2026-10-22","rates":{"EUR":0.89246,"JPY":157.05}} ### ip_lookup GET https://agents.crowdspark.me/v1/ip/lookup ($0.003 USDC) IP address lookup for security triage, log analysis and fraud checks: owning network, allocation range, registry country (RDAP) and reverse DNS. Example input: {"ip":"1.1.1.1"} Example output: {"ip":"1.1.1.1","network":"APNIC-LABS","range":"1.1.1.0 - 1.1.1.255","country":"AU","type":"ASSIGNED PORTABLE","reverse_dns":["one.one.one.one."]} ### token_info GET https://agents.crowdspark.me/v1/chain/token ($0.002 USDC) Token contract inspector for Base, Ethereum, Optimism, Arbitrum and Polygon: is it a contract, ERC20/ERC721/ERC1155 detection, name, symbol, decimals, total supply (raw and formatted), owner, and upgradeable-proxy check (EIP-1967, beacon, EIP-1167 clone, legacy zeppelinos) with implementation and admin addresses. Read live from public RPC. Use before quoting, swapping, listing or paying with a token. Example input: {"address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","chain":"base"} Example output: {"chain":"base","chain_id":8453,"address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","is_contract":true,"standard":"ERC20","name":"USD Coin","symbol":"USDC","decimals":6,"total_supply":"4299464528.64453","owner":"0x3ABd6f64A422225E61E435baE41db12096106df7","proxy":{"is_proxy":true,"type":"zeppelinos (legacy unstructured storage)","implementation":"0x2Ce6311ddAE708829bc0784C967b7d77D19FD779","admin":"0x4fc7850364958d97B4d3f5A08f79db2493f8cA44"}} ### gas_estimate GET https://agents.crowdspark.me/v1/chain/gas ($0.002 USDC) Gas estimate and fee quote for Base, Ethereum, Optimism, Arbitrum and Polygon: eth_estimateGas for your transaction (to, from, value, data) or a plain transfer if no 'to', current base fee, slow/standard/fast priority tips from recent blocks, max fee suggestions, L1 data fee on OP-stack chains and total cost in native coin and USD (Chainlink price). Reports reverts instead of failing. Use before signing or to budget agent transactions. Example input: {"chain":"base","to":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","from":"0x0dEA0030A17BF886543a757c55924710258c2eec","data":"0x70a082310000000000000000000000000dea0030a17bf886543a757c55924710258c2eec"} Example output: {"chain":"base","chain_id":8453,"block":53115830,"native":"ETH","gas_units":"45415","method":"eth_estimateGas","reverted":false,"base_fee_gwei":"0.005","l1_data_fee_native":"0.000000000857537839","native_usd":2320.97,"fees":[{"tier":"slow","max_priority_fee_gwei":"0.00011","max_fee_per_gas_gwei":"0.01011","est_cost_native":"0.000000232928187839","est_cost_usd":0.000541},{"tier":"standard","est_cost_usd":0.00065},{"tier":"fast","est_cost_usd":0.00211}]} ### x402_endpoint_check GET https://agents.crowdspark.me/v1/x402/check ($0.005 USDC) x402 readiness check for any paid API URL: probes it without paying and reports whether it returns a valid 402, where the requirements are (header or body, v1 or v2), network, asset, price in USD, payTo (with EIP-55 checksum check), EIP-712 token domain, timeout, resource URL and Bazaar discovery. Returns ready or needs_fixes with a 0-100 score and a list of specific issues. Use before listing an endpoint or paying it. Never pays. Example input: {"url":"https://agents.crowdspark.me/v1/fx/rates"} Example output: {"url":"https://api.example.com/v1/data","probe":{"method":"GET","status":402,"redirects":0,"ms":312},"x402_detected":true,"ready":true,"score":100,"verdict":"ready","version":2,"delivered_via":"PAYMENT-REQUIRED header","accepts":[{"scheme":"exact","network":"eip155:8453","asset_symbol":"USDC","amount_atomic":"1000","price_usd":0.001,"pay_to":"0x0dEA0030A17BF886543a757c55924710258c2eec","max_timeout_seconds":300}],"discovery":{"bazaar":true},"issues":[]} ### x402_seller_audit GET https://agents.crowdspark.me/v1/x402/audit ($0.01 USDC) Will my paid API get listed? Audits any x402 endpoint URL: runs the readiness check, flags the 500 character description limit, then checks the Coinbase Bazaar listing, OpenAPI x-payment-info, 402 Index entry, favicon, llms.txt and /.well-known/x402. Returns a 0-100 score, verdict and an ordered fix list. Never sends a payment. Score = 60% payment readiness + 40% discoverability. x402scan has no public lookup API, so it is reported as not checked. Example input: {"url":"https://agents.crowdspark.me/v1/fx/rates"} Example output: {"url":"https://api.example.com/v1/data","score":82,"verdict":"ready_but_hard_to_find","readiness":{"score":100,"verdict":"ready","price_usd":0.001,"description_length":180},"listing":{"score":35,"coinbase_bazaar":{"listed":false},"openapi":{"found":true,"path_documented":true}},"fixes":[{"severity":"warn","code":"not_in_bazaar","fix":"Make one paid call through the Coinbase facilitator..."}],"fix_count":1} ### email_check_batch POST https://agents.crowdspark.me/v1/email/check/batch ($0.006 USDC) Batch email validation for list cleaning: up to 10 addresses per call, 40% cheaper than 10 single calls. JSON body {emails:[...]}. Each item gets syntax, MX, disposable, role and free-provider checks and a deliverable_guess. Bad items return per-item errors, not a failed call. Example input: {"emails":["jane@acme.com","bob@mailinator.com"]} Example output: {"count":2,"succeeded":2,"failed":0,"results":[{"input":"jane@acme.com","ok":true,"result":{"deliverable_guess":"likely"}},{"input":"bob@mailinator.com","ok":true,"result":{"disposable":true,"deliverable_guess":"risky"}}]} ### ip_lookup_batch POST https://agents.crowdspark.me/v1/ip/lookup/batch ($0.012 USDC) Batch IP lookup for log analysis and fraud review: up to 10 IPv4 or IPv6 addresses per call, 40% cheaper than singles. JSON body {ips:[...]}. Each item returns the owning network, range, country (RDAP) and reverse DNS. Bad items return per-item errors. Example input: {"ips":["1.1.1.1","8.8.8.8"]} Example output: {"count":2,"succeeded":2,"failed":0,"results":[{"input":"1.1.1.1","ok":true,"result":{"network":"APNIC-LABS","country":"AU"}},{"input":"8.8.8.8","ok":true,"result":{"network":"GOGL","country":"US"}}]} ### domain_lookup_batch POST https://agents.crowdspark.me/v1/domain/lookup/batch ($0.012 USDC) Batch domain intelligence for due diligence and lead lists: up to 10 domains per call, 60% cheaper than singles. JSON body {domains:[...]}. Each item returns registrar, dates, DNS, SPF, DMARC and HTTPS reachability. Bad items return per-item errors. Example input: {"domains":["example.com","github.com"]} Example output: {"count":2,"succeeded":2,"failed":0,"results":[{"input":"example.com","ok":true,"result":{"registered":true,"registrar":"RESERVED-Internet Assigned Numbers Authority"}}]} ### url_dossier GET https://agents.crowdspark.me/v1/bundle/url-dossier ($0.007 USDC) One call dossier on a web page and its host: clean markdown, page metadata, outbound links and extracted fields, plus domain intelligence (registrar, age, DNS, SPF, DMARC) and IP network lookup for the host, with a short trust summary. Replaces three calls. Example input: {"url":"https://example.com"} Example output: {"url":"https://example.com/","host":"example.com","page":{"title":"Example Domain","word_count":25},"domain":{"registered":true,"registrar":"RESERVED-Internet Assigned Numbers Authority"},"ip":{"network":"EDGECAST","country":"US"},"summary":{"domain_age_days":11000,"has_spf":true,"https_reachable":true}} ### invoice_intake GET https://agents.crowdspark.me/v1/bundle/invoice-intake ($0.012 USDC) Invoice intake for AP agents: PDF or image URL in, one decision-ready JSON out. Extracts text, number, total, dates and vendor contact, then runs an email risk check and domain lookup on the vendor and returns accept, review or reject with reasons. Heuristic triage, not bank verification. Example input: {"url":"https://agents.crowdspark.me/samples/sample.pdf"} Example output: {"invoice":{"number":"INV-1042","total":"$1,250.00","vendor_email":"billing@acme.com","vendor_domain":"acme.com"},"vendor_checks":{"email":{"verdict":"accept","risk_score":0},"domain":{"registered":true,"age_days":4021}},"verdict":"accept","reasons":[]} ### invoice_intake_upload POST https://agents.crowdspark.me/v1/bundle/invoice-intake/upload ($0.012 USDC) Invoice intake from uploaded bytes. POST a raw PDF (max 20 MB, text layer) or PNG/JPEG/WebP (max 10 MB) with its content-type; multipart 'file' or JSON {"base64"} also work. Returns extracted fields, vendor email and domain checks and an accept, review or reject verdict. Bad files get HTTP 400 and are not charged. Samples: https://agents.crowdspark.me/samples/sample.pdf and /samples/sample.png. Errors return {error, code, hint, charged:false}. Example input: {} Example output: {"invoice":{"number":"INV-1042","total":"$1,250.00","vendor_domain":"acme.com"},"verdict":"review","reasons":["no vendor email or website found to verify"]} ### token_preflight GET https://agents.crowdspark.me/v1/bundle/token-preflight ($0.004 USDC) Token preflight for agents about to swap, list or pay with a token on Base, Ethereum, Optimism, Arbitrum or Polygon: contract and standard check, name, symbol, supply, proxy and owner flags, a 0-100 structural risk score with reasons, plus a simulated ERC20 transfer gas cost in USD. Not a honeypot audit. Example input: {"address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","chain":"base"} Example output: {"token":{"chain":"base","symbol":"USDC","standard":"ERC20","decimals":6},"risk":{"score":30,"level":"medium","reasons":["upgradeable or proxy contract (zeppelinos (legacy unstructured storage))","has an owner address"]},"transfer_gas":{"gas_units":"45415","fees":[{"tier":"standard","est_cost_usd":0.00065}]}} ### ens_resolve GET https://agents.crowdspark.me/v1/chain/ens ($0.002 USDC) ENS lookup: name to address (with avatar) or address to primary name, with forward verification. Read live from Ethereum mainnet. Use name=vitalik.eth or address=0x... Use before sending funds to a human readable name. Example input: {"name":"vitalik.eth"} Example output: {"name":"vitalik.eth","address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","resolved":true,"avatar":null} ### wallet_balance GET https://agents.crowdspark.me/v1/chain/balance ($0.002 USDC) Wallet balance on Base, Ethereum, Optimism, Arbitrum or Polygon: native coin balance with USD value (Chainlink) plus up to 10 ERC20 token balances with symbol and decimals. Pass tokens=0xA,0xB. Read live from public RPC. Use before funding, swapping or paying from a wallet. Example input: {"address":"0x0dEA0030A17BF886543a757c55924710258c2eec","chain":"base","tokens":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"} Example output: {"chain":"base","address":"0x0dEA0030A17BF886543a757c55924710258c2eec","native":{"symbol":"ETH","balance":"0.0012","usd":2.78},"tokens":[{"token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","symbol":"USDC","balance":"1.5"}]} ### tx_decode GET https://agents.crowdspark.me/v1/chain/tx ($0.003 USDC) Transaction decoder for Base, Ethereum, Optimism, Arbitrum and Polygon: status, from, to, value, gas used, fee in native coin and USD, method name and arguments for common ERC20 calls, ERC20 transfers with symbols and amounts, and approvals. Use to confirm a payment landed or explain what a transaction did. Example input: {"hash":"0x5514f248a7cab6a23403bfc1e5da4c61e5d81b2527f3687b73453d3f7d7eeedb","chain":"base"} Example output: {"chain":"base","hash":"0x5514...","status":"success","from":"0x652a...","to":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","method":{"name":"transfer"},"token_transfers":[{"symbol":"USDC","amount":"0.003"}],"fee_usd":0.0004} ## Other - Catalog JSON: https://agents.crowdspark.me/v1/tools - MCP (streamable HTTP, JSON-RPC): https://agents.crowdspark.me/mcp - Sourced x402 and agent payments facts: https://crowdspark.me Files and pages are processed in memory and not stored. Failed calls (bad input or upstream error) return JSON {error, code, hint, charged:false} and are not charged. - Upload endpoints take the file as the raw request body (content-type application/pdf or image/png, image/jpeg, image/webp), or multipart/form-data with a file field, or JSON {"base64":"..."}. - Sample files to try: https://agents.crowdspark.me/samples/sample.pdf and https://agents.crowdspark.me/samples/sample.png