{"serverId":"mcp-registry/io.github.neoshrek/qrverloz-mcp","tools":[{"name":"create_qr_code","fixed":{"name":"create_qr_code","description":"Create a new QR code. Authenticated users (API key required) get a permanent short URL that can be retargeted at any time without reprinting the physical QR image — limits are set by the account plan. Anonymous users receive a one-time data URI image that is not stored and cannot be updated. On success the result is a pre-formatted markdown table — display it exactly as received, do not reformat or summarise.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["title","target_url"],"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"description":"A human-readable label for the QR code"},"target_url":{"type":"string","format":"uri","description":"Destination URL — must start with https:// or http://"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":227,"tokensAfter":227},{"name":"delete_qr_code","fixed":{"name":"delete_qr_code","description":"Permanently delete a QR code and its scan history. This action cannot be undone. To prevent accidental or injected deletions, you MUST supply confirm_title — the exact title of the code as returned by get_qr_code or list_qr_codes. If the title does not match the stored record, the deletion is refused. Always call get_qr_code or list_qr_codes first to retrieve the exact title before calling this tool. Requires authentication.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["confirm_title"],"properties":{"qr_code_id":{"type":"string","description":"Internal UUID from create_qr_code or list_qr_codes"},"short_code":{"type":"string","description":"Short code from the redirect URL (e.g. \"abc123\")"},"confirm_title":{"type":"string","minLength":1,"description":"The exact title of the QR code to delete — must match the stored title character-for-character. This prevents blind or injected deletions."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":277,"tokensAfter":277},{"name":"get_account_info","fixed":{"name":"get_account_info","description":"Get your account details: current plan, QR code usage, and which features are available. Use this before create_qr_code to check remaining capacity, or to confirm which features are active on your plan. Requires authentication.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"get_qr_code","fixed":{"name":"get_qr_code","description":"Look up a single QR code by its internal ID or short code. Returns a pre-formatted markdown table with fields: Title, ID, Short Code, Short URL, Destination, Status, Created, QR Code Link. Display the table exactly as received — do not reformat or summarise. Requires authentication.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"qr_code_id":{"type":"string","description":"Internal UUID from create_qr_code or list_qr_codes"},"short_code":{"type":"string","description":"Short code from the redirect URL (e.g. \"abc123\")"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":172,"tokensAfter":172},{"name":"get_qr_scans","fixed":{"name":"get_qr_scans","description":"Get the total lifetime scan count for a QR code. Returns a pre-formatted markdown table with fields: Title, ID, Short Code, Short URL, Destination, Status, Created, QR Code Link, Total Scans. Display the table exactly as received — do not reformat or summarise. Requires authentication.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["qr_code_id"],"properties":{"qr_code_id":{"type":"string","description":"Internal UUID of the QR code"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":147,"tokensAfter":147},{"name":"list_qr_codes","fixed":{"name":"list_qr_codes","description":"List all QR codes in your account. Returns one pre-formatted markdown table per QR code with fields: Title, ID, Short Code, Short URL, Destination, Status, Created, QR Code Link. Display each table exactly as received — do not reformat or summarise. Requires authentication.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"integer","maximum":9007199254740991,"minimum":1,"description":"Page number (default: 1)"},"limit":{"type":"integer","maximum":20,"minimum":1,"description":"Items per page, max 20 (default: 20)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174},{"name":"update_qr_target","fixed":{"name":"update_qr_target","description":"Change the destination URL of a QR code without touching the printed image. Print once, redirect anywhere — forever. Accepts either the internal qr_code_id or the short_code from the redirect URL. On success the result is a pre-formatted markdown table — display it exactly as received, do not reformat or summarise. Requires authentication.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["target_url"],"properties":{"qr_code_id":{"type":"string","description":"Internal UUID from create_qr_code or list_qr_codes"},"short_code":{"type":"string","description":"Short code from the redirect URL (e.g. \"abc123\")"},"target_url":{"type":"string","format":"uri","description":"New destination URL — must start with https:// or http://"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230}],"toolsChanged":7,"tokensSaved":0,"todo":[],"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."}