protogrid

Search / codes.qrx/mcp

QRX

R2· OAuth, once

Turn a prompt and a link into a branded, print-ready QR code that always scans.

v1.2.4 · active · repository · website · descriptor JSON · versions

An agent can connect after a one-time OAuth consent by a human.Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.
Quality100strong
Trust96of 100
Uptime, 30 days100%
Latency p50880 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "qrx": {
      "type": "http",
      "url": "https://qrx.codes/mcp",
      "headers": {
        "Authorization": "Bearer ${qrx_api_key}"
      }
    }
  }
}
claude mcp add --transport http qrx https://qrx.codes/mcp --header "Authorization: Bearer ${qrx_api_key}"
[mcp_servers.qrx]
url = "https://qrx.codes/mcp"
bearer_token_env_var = "qrx_api_key"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "qrx": {
      "type": "remote",
      "url": "https://qrx.codes/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:qrx_api_key}"
      }
    }
  }
}
{
  "mcpServers": {
    "qrx": {
      "type": "http",
      "url": "https://qrx.codes/mcp",
      "headers": {
        "Authorization": "Bearer ${qrx_api_key}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=qrx&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vcXJ4LmNvZGVzL21jcCIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciAke3FyeF9hcGlfa2V5fSJ9fQ%3D%3D"
}
{
  "servers": {
    "qrx": {
      "type": "http",
      "url": "https://qrx.codes/mcp",
      "headers": {
        "Authorization": "Bearer ${qrx_api_key}"
      }
    }
  }
}
{
  "mcpServers": {
    "qrx": {
      "httpUrl": "https://qrx.codes/mcp",
      "headers": {
        "Authorization": "Bearer ${qrx_api_key}"
      }
    }
  }
}
extensions:
  "qrx":
    enabled: true
    name: "qrx"
    type: streamable_http
    uri: "https://qrx.codes/mcp"
    headers:
      "Authorization": "Bearer ${qrx_api_key}"
    timeout: 300

Placeholders to fill from your own secret store: ${qrx_api_key}. The registry never accepts secret values.

Quality 100 / 100strong

protocoln/a · weight 25
  • n/a
    protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)
authorization100 · weight 15
  • pass
    auth.prmProtected Resource Metadata (RFC 9728) published
  • pass
    auth.as_metadataauthorization server metadata reachable
  • pass
    auth.cimdClient ID Metadata Documents supported
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations7 of 7 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 1,193 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know @qrxcodes/[email protected]

7 tools, about 1,193 tokens to load them all · tool set 5c15609daacc · checked 2026-10-19 10:52 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 96 / 100

provenance85
liveness100
freshness100
hygiene100

+repository +dns-namespace +website +reachable +uptime-100% +updated-10d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

@qrxcodes/[email protected] npmthis version is not known to the dependency resolver

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://qrx.codes/mcp streamable-httpoauth2 AS: https://clerk.qrx.codesyes100%880 ms–2026-10-19
packageregistryversionruntimesecrets
@qrxcodes/mcpnpm1.0.1npxQRX_API_KEY

Tools (7)

change_qr_code_destinationdestructiveUse this when the user wants an existing link QR code to open a different web address. Printed copies follow at once. It only works for link codes, and only if the account’s plan allows changing destinations. Do not use it to make a new code.
generate_qr_codeUse this when the user wants a new QR code that is also a picture: a scannable code painted into art from a description, that opens a link (or joins a Wi-Fi network, if the account’s plan includes Wi-Fi codes). It starts the code and answers at once with its id while the picture is painted, which usually takes under a minute; then call get_qr_code with the id to wait for the image. Do not use it to look at, list or change codes that already exist. Each code counts against the user’s QRX allowance.
get_accountread-onlyUse this when the user asks how many QR codes they can still make today, when the daily count resets, or what their QRX account can do. Do not use it to make or list codes.
get_profileread-onlyUse this when you need to know which QRX account is connected, for example to confirm it with the user. Do not use it for limits; use get_account.
get_qr_coderead-onlyUse this when you have a QR code’s id (from generate_qr_code or list_qr_codes) and need its status or finished image. While the code is still being painted it waits up to `wait` seconds (25 by default) for it to finish before answering, so call it again if it is still processing. Do not use it to make a new code.
list_qr_codesread-onlyUse this when the user asks about QR codes they already have, newest first, a page at a time (pass nextCursor as cursor for the next page). Do not use it to make a code.
list_stylesread-onlyUse this when the user wants to choose a look for a new QR code; pass a style id to generate_qr_code. Do not use it to make a code.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "codes.qrx/mcp",
  "_meta": {
    "io.modelcontextprotocol.registry/publisher-provided": {
      "codes.qrx": {
        "auth": [
          "oauth",
          "api-key"
        ],
        "docs": "https://qrx.codes/developers/mcp",
        "tools": [
          "generate_qr_code",
          "get_qr_code",
          "list_qr_codes",
          "change_qr_code_destination",
          "get_account",
          "get_profile",
          "list_styles"
        ],
        "llmsTxt": "https://qrx.codes/llms.txt"
      }
    }
  },
  "icons": [
    {
      "src": "https://qrx.codes/images/brand/qrx-code-512.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    },
    {
      "src": "https://qrx.codes/images/brand/qrx-mark.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    }
  ],
  "title": "QRX",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://qrx.codes/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "value": "Bearer {qrx_api_key}",
          "isSecret": true,
          "variables": {
            "qrx_api_key": {
              "isSecret": true,
              "description": "QRX API key (starts with qrx_). Create one at https://qrx.codes/developers/keys.",
              "placeholder": "qrx_..."
            }
          },
          "description": "Optional. Connecting needs sign-in or an API key. Clients that support MCP sign-in (OAuth) need no header; otherwise send your QRX API key from https://qrx.codes/developers/keys as a bearer token."
        }
      ]
    }
  ],
  "version": "1.2.4",
  "packages": [
    {
      "version": "1.0.1",
      "transport": {
        "type": "stdio"
      },
      "identifier": "@qrxcodes/mcp",
      "runtimeHint": "npx",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "QRX_API_KEY",
          "format": "string",
          "isSecret": true,
          "description": "Your QRX API key (qrx_…) from https://qrx.codes/developers/keys. Needed to use the tools; without it the server starts and lists them.",
          "placeholder": "qrx_..."
        }
      ]
    }
  ],
  "repository": {
    "id": "1410735001",
    "url": "https://github.com/qrxcodes/qrx-mcp",
    "source": "github"
  },
  "websiteUrl": "https://qrx.codes/developers",
  "description": "Turn a prompt and a link into a branded, print-ready QR code that always scans."
}