{"serverId":"mcp-registry/dev.coinslot/coinslot","tools":[{"name":"convert","fixed":{"name":"convert","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 }. Price: $0.002/call with credits key; free demo without (2KB input cap).","inputSchema":{"type":"object","required":["direction","data"],"properties":{"data":{"description":"Array of objects (json-to-csv) or CSV string (csv-to-json)","type":"string"},"direction":{"enum":["json-to-csv","csv-to-json"],"type":"string"}}},"annotations":{"readOnlyHint":true},"title":"JSON ↔ CSV"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: data. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":137,"tokensAfter":141},{"name":"json_schema_validate","fixed":{"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 }. Price: $0.003/call with credits key; free demo without (2KB input cap).","inputSchema":{"type":"object","required":["schema","data"],"properties":{"data":{"description":"Document to validate","type":"string"},"schema":{"type":"object","description":"JSON Schema (draft-07 core subset)"}}},"annotations":{"readOnlyHint":true},"title":"JSON Schema Validate"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: data. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":149},{"name":"read_page","fixed":{"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). Price: $0.005/call with credits key; free demo without (2KB input cap).","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public http(s) URL"},"maxBytes":{"type":"integer","default":1000000,"maximum":3000000,"minimum":1024}}},"annotations":{"readOnlyHint":true},"title":"Read Page"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"timezone","fixed":{"name":"timezone","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). Price: $0.002/call with credits key; free demo without (2KB input cap).","inputSchema":{"type":"object","required":["to"],"properties":{"to":{"description":"IANA zone or array of zones (max 20)","type":"string"},"from":{"type":"string","description":"IANA zone the input wall-clock is in"},"time":{"description":"ISO string, epoch, or 'now'","type":"string"}}},"annotations":{"readOnlyHint":true},"title":"Timezone Convert"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: to, time. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":157,"tokensAfter":166},{"name":"validate_ids","fixed":{"name":"validate_ids","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). Price: $0.003/call with credits key; free demo without (2KB input cap).","inputSchema":{"type":"object","properties":{"type":{"enum":["card","iban","ean","isbn","uuid"],"type":"string"},"items":{"type":"array","items":{"type":"object","required":["type","value"],"properties":{"type":{"type":"string"},"value":{"type":"string"}}},"maxItems":50},"value":{"type":"string"}}},"annotations":{"readOnlyHint":true},"title":"ID Validate Pack"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":169,"tokensAfter":169}],"toolsChanged":5,"tokensSaved":0,"todo":[{"tool":"convert","params":["direction"]},{"tool":"cron","params":["count"]},{"tool":"diff","params":["a","b","context"]},{"tool":"email_verify","params":["emails"]},{"tool":"qr","params":["text","margin","ecLevel"]},{"tool":"read_page","params":["maxBytes"]},{"tool":"validate_ids","params":["type","items","value"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}