← Docs · Markdown · Agent register · Home

QR

QR and barcode toolkit for agents: encode text to staging PNG, decode from URL/base64, plus vCard, Wi-Fi, and EPC (SEPA) payment QR payloads. Encode/decode run off the event loop so web and other MCP tools stay responsive.

Service id: qr
Version: 0.1.0
Status: available

Authentication

MCP endpoint: https://mcp.glc-rag.hu/mcp (streamable HTTP)

Agents (recommended): self-register with account_type=agent to get an auto-approved token — see https://mcp.glc-rag.hu/guide/agent.

Or register as a human on the public site (all listed services are auto-approved), wait for system-admin approval, then create a token.

Authorization: Bearer mcp_...

Cursor mcp.json example:

{
  "mcpServers": {
    "qr": {
      "url": "https://mcp.glc-rag.hu/mcp",
      "headers": {
        "Authorization": "Bearer mcp_YOUR_TOKEN"
      }
    }
  }
}

Tools

qr_create

Encode text/URL into a QR PNG published to staging.

Input schema:

{
  "type": "object",
  "properties": {
    "data": {
      "type": "string"
    },
    "error_correction": {
      "type": "string",
      "enum": [
        "L",
        "M",
        "Q",
        "H"
      ],
      "default": "M"
    },
    "box_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "default": 8
    },
    "border": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20,
      "default": 4
    },
    "fill": {
      "type": "string",
      "default": "#000000"
    },
    "back": {
      "type": "string",
      "default": "#ffffff"
    },
    "return_base64": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}

Examples:

{
  "data": "https://mcp.glc-rag.hu"
}

qr_read

Decode QR codes from an image (URL or base64).

Input schema:

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public/staging image URL"
    },
    "content_base64": {
      "type": "string",
      "description": "Small image base64"
    }
  },
  "additionalProperties": false
}

Examples:

{
  "url": "https://mcp.glc-rag.hu/staging/EXAMPLE"
}

barcode_create

Encode 1D barcode (code128/ean13/ean8/upc/isbn13/itf) to staging PNG.

Input schema:

{
  "type": "object",
  "properties": {
    "data": {
      "type": "string"
    },
    "symbology": {
      "type": "string",
      "enum": [
        "code128",
        "ean13",
        "ean8",
        "upc",
        "isbn13",
        "itf"
      ],
      "default": "code128"
    },
    "write_text": {
      "type": "boolean",
      "default": true
    },
    "return_base64": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}

Examples:

{
  "data": "MCP-12345",
  "symbology": "code128"
}

barcode_read

Decode 1D/QR barcodes from an image.

Input schema:

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public/staging image URL"
    },
    "content_base64": {
      "type": "string",
      "description": "Small image base64"
    },
    "types_filter": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional zbar types: EAN13, CODE128, QRCODE, \u2026"
    }
  },
  "additionalProperties": false
}

Examples:

{
  "url": "https://mcp.glc-rag.hu/staging/EXAMPLE"
}

vcard_qr_create

Build a vCard 3.0 and encode it as a QR PNG.

Input schema:

{
  "type": "object",
  "properties": {
    "full_name": {
      "type": "string"
    },
    "org": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "address": {
      "type": "object",
      "properties": {
        "street": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "postal": {
          "type": "string"
        },
        "country": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "error_correction": {
      "type": "string",
      "enum": [
        "L",
        "M",
        "Q",
        "H"
      ],
      "default": "M"
    },
    "box_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "default": 8
    },
    "border": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20,
      "default": 4
    },
    "fill": {
      "type": "string",
      "default": "#000000"
    },
    "back": {
      "type": "string",
      "default": "#ffffff"
    },
    "return_base64": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "full_name"
  ],
  "additionalProperties": false
}

Examples:

{
  "full_name": "Kiss Anna",
  "email": "anna@example.com"
}

wifi_qr_create

Build a WIFI: QR for network join (does not connect).

Input schema:

{
  "type": "object",
  "properties": {
    "ssid": {
      "type": "string"
    },
    "password": {
      "type": "string"
    },
    "security": {
      "type": "string",
      "enum": [
        "WPA",
        "WEP",
        "nopass"
      ],
      "default": "WPA"
    },
    "hidden": {
      "type": "boolean",
      "default": false
    },
    "error_correction": {
      "type": "string",
      "enum": [
        "L",
        "M",
        "Q",
        "H"
      ],
      "default": "M"
    },
    "box_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "default": 8
    },
    "border": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20,
      "default": 4
    },
    "fill": {
      "type": "string",
      "default": "#000000"
    },
    "back": {
      "type": "string",
      "default": "#ffffff"
    },
    "return_base64": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "ssid"
  ],
  "additionalProperties": false
}

Examples:

{
  "ssid": "Guest",
  "password": "secret",
  "security": "WPA"
}

payment_qr_create

Build an EPC/SCT payment QR (EUR). Does not initiate a transfer.

Input schema:

{
  "type": "object",
  "properties": {
    "profile": {
      "type": "string",
      "enum": [
        "epc"
      ],
      "default": "epc"
    },
    "iban": {
      "type": "string"
    },
    "name": {
      "type": "string",
      "description": "Beneficiary name"
    },
    "amount": {
      "type": "string",
      "description": "e.g. 12.34"
    },
    "currency": {
      "type": "string",
      "default": "EUR"
    },
    "remittance": {
      "type": "string"
    },
    "purpose": {
      "type": "string"
    },
    "bic": {
      "type": "string"
    },
    "error_correction": {
      "type": "string",
      "enum": [
        "L",
        "M",
        "Q",
        "H"
      ],
      "default": "M"
    },
    "box_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "default": 8
    },
    "border": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20,
      "default": 4
    },
    "fill": {
      "type": "string",
      "default": "#000000"
    },
    "back": {
      "type": "string",
      "default": "#ffffff"
    },
    "return_base64": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "iban",
    "name"
  ],
  "additionalProperties": false
}

Examples:

{
  "profile": "epc",
  "iban": "DE89370400440532013000",
  "name": "Acme GmbH",
  "amount": "10.00",
  "remittance": "Invoice 42"
}

qr_status

QR service health and limits.

Input schema:

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Examples:

{}

Usage notes

Create: qr_create / barcode_create / vcard_qr_create / wifi_qr_create / payment_qr_create → staging url. Read: upload image to staging then qr_read or barcode_read. payment_qr_create only builds EPC QR text — it does not send money. Credits apply per successful call; qr_status is free.

Errors / limits

Invalid data/symbology, oversize input, missing libzbar, or busy semaphore → {error, is_error}. Empty decode → count=0 (still billed).

Agent discovery