{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://qr.aytekin-armutcu.de/mcp/schema.json","title":"QR Code Magic — MCP tool input schemas","description":"JSON Schema for every tool exposed by the public MCP server at /mcp. Call the tools via JSON-RPC (method `tools/call`).","server":{"name":"qr-code-magic","endpoint":"https://qr.aytekin-armutcu.de/mcp","transport":"streamable-http","auth":"none (public)","docs":"https://qr.aytekin-armutcu.de/mcp-docs"},"limits":{"toolCallsPerMinute":60,"renderCallsPerMinute":20,"imageRequestsPerMinutePerIp":30,"windowSeconds":60,"maxInputChars":8000},"tools":[{"name":"list_qr_types","title":"List QR code types","description":"List all supported QR code types with their required fields, plus the supported social media platforms.","annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"rateLimitPerMinute":60,"inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"build_qr_payload","title":"Build QR code payload","description":"Build the encoded text for a QR code from a type and its fields (e.g. url, wifi, vcard, sepa, whatsapp, social) and validate the input. Returns the payload string plus any errors or warnings.","annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"rateLimitPerMinute":60,"inputSchema":{"additionalProperties":false,"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string","enum":["url","whatsapp","social","text","wifi","vcard","email","phone","sms","sepa","event","geo"],"description":"QR code type, e.g. 'url', 'wifi', 'whatsapp', 'social'."},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Field values for the type, e.g. { url: 'https://example.com' } or { platform: 'instagram', handle: 'name' }. Use list_qr_types for required fields."}},"required":["type","fields"]}},{"name":"whatsapp_link","title":"Build WhatsApp chat link","description":"Turn a phone number (international format, e.g. +49170...) and an optional first message into a wa.me chat link ready to encode as a QR code.","annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"rateLimitPerMinute":60,"inputSchema":{"additionalProperties":false,"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"number":{"type":"string","minLength":1,"description":"Phone number in international format, e.g. +4917012345678."},"message":{"description":"Optional prefilled chat message.","type":"string"}},"required":["number"]}},{"name":"social_profile_url","title":"Build social profile URL","description":"Build the public profile URL for a social platform from a username or a pasted profile link, ready to encode as a QR code.","annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"rateLimitPerMinute":60,"inputSchema":{"additionalProperties":false,"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"platform":{"type":"string","enum":["instagram","facebook","tiktok","x","linkedin","youtube","snapchat","pinterest","threads","telegram"],"description":"Platform id, e.g. 'instagram', 'tiktok', 'linkedin'."},"handle":{"type":"string","minLength":1,"description":"Username or a full profile link; @ and URLs are cleaned up."}},"required":["platform","handle"]}},{"name":"render_qr_image","title":"Render QR code image","description":"Render a QR code as a PNG (base64 image) or a real vector SVG. Pass either `payload` (ready-made text) or `type` + `fields` (built and validated like build_qr_payload). Also returns a direct download URL.","annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"rateLimitPerMinute":20,"inputSchema":{"additionalProperties":false,"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"payload":{"description":"Ready-made QR content. Alternative to type + fields.","type":"string","maxLength":2000},"type":{"description":"QR type when the payload should be built.","type":"string","enum":["url","whatsapp","social","text","wifi","vcard","email","phone","sms","sepa","event","geo"]},"fields":{"description":"Field values for the given type, e.g. { url: 'https://example.com' }.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"format":{"default":"png","description":"Output format.","type":"string","enum":["png","svg"]},"size":{"default":512,"description":"Edge length in pixels (PNG) or nominal size (SVG).","type":"integer","minimum":64,"maximum":2048},"margin":{"default":2,"description":"Quiet zone in modules.","type":"integer","minimum":0,"maximum":16},"dark":{"description":"Foreground color, e.g. #0b1220.","type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"light":{"description":"Background color, e.g. #ffffff.","type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"ecc":{"default":"M","description":"Error correction level.","type":"string","enum":["L","M","Q","H"]}}}}]}