{"name":"Coinslot","tagline":"The vending machine for machines.","description":"Micro-APIs that AI agents can pay for autonomously via x402 (USDC per call, no signup) — or humans can buy credits with a card.","x402":{"enabled":true,"network":"base","protocol":"https://x402.org"},"credits":{"enabled":true,"checkout":"https://coinslot.dev/api/checkout"},"mcp":{"endpoint":"https://coinslot.dev/mcp","transport":"streamable-http"},"demo":"append ?demo=1 for a free demo call (inputs capped at 2048 bytes)","tools":[{"slot":"A1","id":"convert","name":"JSON ↔ CSV","description":"Convert an array of JSON objects to CSV (nested keys become dot-path columns) or CSV back to JSON. POST { direction: 'json-to-csv'|'csv-to-json', data }.","method":"POST","url":"https://coinslot.dev/api/convert","priceUsd":0.002,"inputSchema":{"type":"object","required":["direction","data"],"properties":{"direction":{"type":"string","enum":["json-to-csv","csv-to-json"]},"data":{"description":"Array of objects (json-to-csv) or CSV string (csv-to-json)"}}},"outputExample":{"csv":"product,stock.qty,stock.loc,price\r\nwidget,12,A,4.5"},"ui":{"band":"#c25d38","wt":"NET WT · NESTED · BOTH WAYS","sample":{"direction":"json-to-csv","data":[{"product":"widget","stock":{"qty":12,"loc":"A"},"price":4.5},{"product":"sprocket","stock":{"qty":3,"loc":"B"},"price":9.25}]}}},{"slot":"A2","id":"email-verify","name":"Email Verify","description":"Check an email address: RFC syntax, live MX records via DNS-over-HTTPS, and disposable-domain screening. POST { email } or { emails: [...] } (max 20).","method":"POST","url":"https://coinslot.dev/api/email-verify","priceUsd":0.003,"inputSchema":{"type":"object","properties":{"email":{"type":"string","description":"Single address"},"emails":{"type":"array","items":{"type":"string"},"maxItems":20}}},"outputExample":{"email":"hello@anthropic.com","valid_syntax":true,"has_mx":true,"disposable":false,"deliverable_signal":true,"mx_records":[{"priority":10,"host":"mx.example.net"}]},"ui":{"band":"#3a7ca5","wt":"LIVE MX LOOKUP · NO MAIL SENT","sample":{"email":"hello@anthropic.com"}}},{"slot":"A3","id":"html-to-markdown","name":"HTML → Markdown","description":"Convert HTML to clean Markdown: headings, links, images, lists, tables, code blocks, emphasis. Strips scripts, styles, and comments. POST { html } (max 500KB).","method":"POST","url":"https://coinslot.dev/api/html-to-markdown","priceUsd":0.005,"inputSchema":{"type":"object","required":["html"],"properties":{"html":{"type":"string","description":"HTML document or fragment, max 500KB"}}},"outputExample":{"markdown":"# Hi\n\nThis was **HTML** a moment ago.\n\n- now\n- it is\n- markdown"},"ui":{"band":"#6b8e4e","wt":"STRIPS SCRIPTS · KEEPS SOUL","sample":{"html":"<h1>Hi</h1><p>This was <strong>HTML</strong> a moment ago.</p><ul><li>now</li><li>it is</li><li>markdown</li></ul>"}}},{"slot":"B1","id":"json-schema-validate","name":"JSON Schema Validate","description":"Validate a JSON document against a JSON Schema (draft-07 core subset: types, required, enums, ranges, patterns, nesting, anyOf/allOf/oneOf). Returns all violations with paths. POST { schema, data }.","method":"POST","url":"https://coinslot.dev/api/json-schema-validate","priceUsd":0.003,"inputSchema":{"type":"object","required":["schema","data"],"properties":{"schema":{"type":"object","description":"JSON Schema (draft-07 core subset)"},"data":{"description":"Document to validate"}}},"outputExample":{"valid":false,"errors":[{"path":"$","message":"missing required property 'name'"},{"path":"$.age","message":"-1 < minimum 0"}]},"ui":{"band":"#8a5ba5","wt":"EVERY VIOLATION · WITH PATHS","sample":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"age":{"type":"integer","minimum":0}}},"data":{"age":-1}}}},{"slot":"B2","id":"diff","name":"Text Diff","description":"Line-based diff of two texts. Returns unified diff plus structured changes (added/removed/unchanged counts and hunks). POST { a, b, context? } (max 200KB each).","method":"POST","url":"https://coinslot.dev/api/diff","priceUsd":0.002,"inputSchema":{"type":"object","required":["a","b"],"properties":{"a":{"type":"string"},"b":{"type":"string"},"context":{"type":"integer","minimum":0,"maximum":10,"default":3}}},"outputExample":{"identical":false,"added":1,"removed":1,"unchanged":1,"unified":"@@ -1,2 +1,2 @@\n roses are red\n-violets are blue\n+violets are #4a69bd"},"ui":{"band":"#b3903c","wt":"UNIFIED FORMAT · LCS GRADE","sample":{"a":"roses are red\nviolets are blue","b":"roses are red\nviolets are #4a69bd"}}},{"slot":"B3","id":"cron","name":"Cron Decode","description":"Parse a 5-field cron expression: get a plain-English explanation and the next N run times (UTC). POST { expression, count?, from? }.","method":"POST","url":"https://coinslot.dev/api/cron","priceUsd":0.002,"inputSchema":{"type":"object","required":["expression"],"properties":{"expression":{"type":"string","description":"5-field cron or @alias"},"count":{"type":"integer","minimum":1,"maximum":20,"default":5},"from":{"type":"string","description":"ISO date to project from"}}},"outputExample":{"expression":"30 9 * * MON-FRI","explanation":"at 09:30 UTC, on Monday, Tuesday, Wednesday, Thursday, Friday","next_runs_utc":["2026-08-07T09:30:00.000Z"]},"ui":{"band":"#a54e5c","wt":"5 FIELDS · ZERO GUESSING","sample":{"expression":"30 9 * * MON-FRI","count":3}}},{"slot":"C1","id":"qr","name":"QR Code (SVG)","description":"Generate a QR code as standalone SVG. POST { text, ecLevel?: 'L'|'M'|'Q'|'H', margin?: 0-8, dark?, light? } (text max 2KB).","method":"POST","url":"https://coinslot.dev/api/qr","priceUsd":0.005,"inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":2048},"ecLevel":{"type":"string","enum":["L","M","Q","H"],"default":"M"},"margin":{"type":"integer","minimum":0,"maximum":8,"default":4},"dark":{"type":"string","description":"hex color"},"light":{"type":"string","description":"hex color"}}},"outputExample":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 33 33\">…</svg>","modules":25,"ecLevel":"M"},"ui":{"band":"#2f6f6a","wt":"PURE SVG · SCALES FOREVER","sample":{"text":"https://coinslot.dev"}}},{"slot":"C2","id":"feed-to-json","name":"Feed → JSON","description":"Parse an RSS 2.0 or Atom feed into clean JSON: title, items with link/date/summary, HTML stripped. POST { xml } (max 1MB) or { url } to fetch.","method":"POST","url":"https://coinslot.dev/api/feed-to-json","priceUsd":0.004,"inputSchema":{"type":"object","properties":{"xml":{"type":"string","description":"Feed XML, max 1MB"},"url":{"type":"string","description":"Feed URL to fetch instead"}}},"outputExample":{"format":"rss","title":"Demo Feed","itemCount":1,"items":[{"title":"Machines buy things now","link":"https://coinslot.dev","published":"Thu, 06 Aug 2026 09:00:00 GMT","summary":"XML goes in, JSON comes out."}]},"ui":{"band":"#7a5230","wt":"RSS + ATOM · NO XML TEARS","sample":{"xml":"<rss><channel><title>Demo Feed</title><item><title>Machines buy things now</title><link>https://coinslot.dev</link><pubDate>Thu, 06 Aug 2026 09:00:00 GMT</pubDate><description>XML goes in, JSON comes out.</description></item></channel></rss>"}}},{"slot":"C3","id":"extract","name":"Extract Pack","description":"Pull structured data out of raw text: emails, URLs, IPv4/IPv6, phone numbers, dates. Deduplicated with counts. POST { text } (max 500KB).","method":"POST","url":"https://coinslot.dev/api/extract","priceUsd":0.003,"inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","description":"Raw text, max 500KB"}}},"outputExample":{"emails":[{"value":"ada@example.com","count":1}],"urls":[{"value":"https://coinslot.dev/api","count":1}],"ipv4":[{"value":"10.0.0.1","count":1}],"dates":[{"value":"2026-09-01","count":1}],"phones":[{"value":"+1 415 555 0142","count":1}],"totals":{"emails":1,"urls":1,"ips":1,"dates":1,"phones":1}},"ui":{"band":"#4a5f8a","wt":"EMAILS · URLS · IPS · DATES","sample":{"text":"Reach ada@example.com or +1 415 555 0142 before 2026-09-01. Docs: https://coinslot.dev/api — server 10.0.0.1."}}},{"slot":"D1","id":"markdown-to-html","name":"Markdown → HTML","description":"Render Markdown (GitHub-flavored: tables, fenced code, task lists) to clean HTML with raw inline HTML stripped. POST { markdown } (max 500KB).","method":"POST","url":"https://coinslot.dev/api/markdown-to-html","priceUsd":0.003,"inputSchema":{"type":"object","required":["markdown"],"properties":{"markdown":{"type":"string","description":"GitHub-flavored Markdown, max 500KB"}}},"outputExample":{"html":"<h1>Hello</h1>\n<p>This <strong>markdown</strong> becomes HTML.</p>"},"ui":{"band":"#5e7d4f","wt":"GFM · SCRIPT-SAFE OUTPUT","sample":{"markdown":"# Hello\n\nThis **markdown** becomes HTML.\n\n| a | b |\n|---|---|\n| 1 | 2 |"}}},{"slot":"D2","id":"validate-ids","name":"ID Validate Pack","description":"Validate identifiers with real checksum math: credit card (Luhn + brand), IBAN (mod-97), EAN-13/UPC-A, ISBN-10/13, UUID (with version). POST { type, value } or { items: [{type, value}] } (max 50).","method":"POST","url":"https://coinslot.dev/api/validate-ids","priceUsd":0.003,"inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["card","iban","ean","isbn","uuid"]},"value":{"type":"string"},"items":{"type":"array","maxItems":50,"items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}}}}},"outputExample":{"results":[{"type":"card","valid":true,"brand":"visa","last4":"4242"},{"type":"iban","valid":true,"country":"DE","length":22},{"type":"uuid","valid":true,"version":4,"variant":"RFC 4122"}]},"ui":{"band":"#9c6b9e","wt":"LUHN · MOD-97 · CHECK DIGITS","sample":{"items":[{"type":"card","value":"4242 4242 4242 4242"},{"type":"iban","value":"DE89 3704 0044 0532 0130 00"},{"type":"uuid","value":"550e8400-e29b-41d4-a716-446655440000"}]}}},{"slot":"D3","id":"timezone","name":"Timezone Convert","description":"Convert a timestamp between IANA timezones with DST handled correctly. Returns local times, UTC offsets, weekday, and hour-of-day per zone. POST { time?, from?, to } — to is a zone or array (max 20).","method":"POST","url":"https://coinslot.dev/api/timezone","priceUsd":0.002,"inputSchema":{"type":"object","required":["to"],"properties":{"time":{"description":"ISO string, epoch, or 'now'"},"from":{"type":"string","description":"IANA zone the input wall-clock is in"},"to":{"description":"IANA zone or array of zones (max 20)"}}},"outputExample":{"input_utc":"2026-08-06T20:00:00.000Z","epoch_ms":1786046400000,"zones":[{"zone":"Asia/Tokyo","local":"2026-08-07T05:00:00","utc_offset":"+09:00","weekday":"Friday","hour_of_day":5,"is_business_hours":false}]},"ui":{"band":"#46708c","wt":"IANA ZONES · DST-CORRECT","sample":{"time":"2026-08-06T15:00:00","from":"America/Chicago","to":["UTC","Asia/Tokyo","Europe/Berlin"]}}},{"slot":"E1","id":"read-page","name":"Read Page","description":"Fetch a public URL and return its content as clean Markdown plus title and metadata. One call instead of fetch + parse + convert. POST { url, maxBytes? } (default 1MB cap).","method":"POST","url":"https://coinslot.dev/api/read-page","priceUsd":0.005,"inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public http(s) URL"},"maxBytes":{"type":"integer","minimum":1024,"maximum":3000000,"default":1000000}}},"outputExample":{"url":"https://example.com/","title":"Example Domain","description":null,"contentType":"text/html; charset=UTF-8","truncated":false,"markdown":"# Example Domain\n\nThis domain is for use in illustrative examples…"},"ui":{"band":"#356859","wt":"FETCH + CLEAN · ONE CALL","sample":{"url":"https://example.com"}}}]}