{"service":"Gardenpatch Tools","version":"v1","description":"Paid, stateless utilities. A tool reaches no recipient and stores nothing; most are pure functions of their input, and a tool marked fetches_url reads one public page you name through an SSRF guard. One endpoint, one job, one payment.","call_shape":"POST /api/v1/tools/{slug}/call","payment":{"protocol":"x402","enabled":true,"network":"eip155:8453","testnet":false,"note":"Unpaid requests receive HTTP 402 with payment requirements. Pay and retry with a PAYMENT-SIGNATURE header (x402 v2; the v1 X-PAYMENT header is not read). A request refused with 400 or above is never charged."},"tools":[{"id":"qr_code","slug":"qr-code","name":"QR code","price":"$0.01","summary":"Turn text or a link into a QR code, returned inline as SVG or PNG.","fetches_url":false,"endpoint":"https://gardenpatch.xyz/api/v1/tools/qr-code/call","request_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"string","minLength":1,"maxLength":2048},"format":{"default":"svg","type":"string","enum":["svg","png"]},"size":{"default":256,"type":"integer","minimum":64,"maximum":1024},"error_correction":{"default":"M","type":"string","enum":["L","M","Q","H"]},"margin":{"default":2,"type":"integer","minimum":0,"maximum":16}},"required":["data"],"additionalProperties":false},"example":{"data":"https://gardenpatch.xyz","format":"svg"}},{"id":"timezone_convert","slug":"timezone-convert","name":"Time zone conversion","price":"$0.01","summary":"Convert one moment into up to 20 IANA time zones, with offsets, and DST gaps refused rather than guessed.","fetches_url":false,"endpoint":"https://gardenpatch.xyz/api/v1/tools/timezone-convert/call","request_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"time":{"type":"string","minLength":1,"maxLength":40},"from_zone":{"type":"string","minLength":1,"maxLength":64},"to_zones":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}},"required":["time","to_zones"],"additionalProperties":false},"example":{"time":"2026-11-03T09:30","from_zone":"America/Los_Angeles","to_zones":["America/Sao_Paulo","Europe/London","Asia/Tokyo"]}},{"id":"markdown_to_html","slug":"markdown-to-html","name":"Markdown to HTML","price":"$0.01","summary":"Render Markdown (GitHub-flavored) to safe HTML: raw HTML is escaped and only http, https, mailto and relative links survive.","fetches_url":false,"endpoint":"https://gardenpatch.xyz/api/v1/tools/markdown-to-html/call","request_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"markdown":{"type":"string","maxLength":12000},"gfm":{"default":true,"type":"boolean"}},"required":["markdown"],"additionalProperties":false},"example":{"markdown":"# Hello\n\nA [link](https://gardenpatch.xyz) and **bold**."}},{"id":"calendar_ics","slug":"calendar-ics","name":"Calendar invite (.ics)","price":"$0.01","summary":"Build an RFC 5545 calendar event file (.ics) any calendar app imports. Nothing is sent and no calendar is written.","fetches_url":false,"endpoint":"https://gardenpatch.xyz/api/v1/tools/calendar-ics/call","request_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"end":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"duration_minutes":{"type":"integer","minimum":1,"maximum":10080},"description":{"type":"string","maxLength":2000},"location":{"type":"string","maxLength":200},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["title","start"],"additionalProperties":false},"example":{"title":"Kickoff call","start":"2026-11-03T17:30:00Z","duration_minutes":30,"location":"Zoom"}},{"id":"site_signals","slug":"site-signals","name":"Website growth signals","price":"$0.02","summary":"Read one public website and return the observable growth signals: title and meta, CTAs, forms, chat and analytics tools, tech stack, structured data, blog freshness from the sitemap, robots. Facts only, never scores.","fetches_url":true,"endpoint":"https://gardenpatch.xyz/api/v1/tools/site-signals/call","request_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048}},"required":["url"],"additionalProperties":false},"example":{"url":"https://gardenpatch.xyz"}}],"tags":["qr code","qr","generate qr code","barcode","qr svg","qr png","link to qr","time zone","timezone conversion","convert time","utc offset","dst","iana","world clock","markdown","markdown to html","render markdown","md to html","gfm","sanitize html","calendar","ics","calendar invite","icalendar","schedule event","add to calendar","meeting invite","website audit","seo audit","site analysis","tech stack detection","analytics detection","marketing audit","competitor research","website signals","lead research"],"docs":"/docs/tools"}