Skip to main content
Glama
ProofHoldings

@proof-holdings/mcp-server

Official

render_auth_link

Render an authorization or verification deep link as a clickable link and scannable QR code in a fenced code block, letting users open or scan to complete login or verification.

Instructions

Render an authorization or verification URL as a clickable link followed by a scannable QR code inside a fenced code block. This is a local computation tool — no HTTP request is made.

Agent usage: pass a LINK field from an earlier response — deep_link (create_session, create_chat_id_discovery always; start_login, create_account, start_2fa, start_2fa_for_action on telegram/whatsapp ONLY, where on sms and email that field is empty or absent altogether and this tool rejects it either way), challenge.deep_link (create_verification, messenger channels only), or telegram_deep_link / whatsapp_deep_link.

Do NOT pass qr_text to this tool: that field is a QR code already rendered as text, and this tool takes a link. When a response gives you qr_text and no link, print it verbatim inside a fenced code block instead — its rows only scan while they stay adjacent, so a blank line or wrapped row destroys the code.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe link to render — e.g. a deep_link response field. Never a qr_text value: that is the link already rendered as QR art.
labelNoOptional label to display above the link (e.g. "Verify your phone number")

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv1.1.0

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses this is a local computation with no HTTP request, clarifies that `qr_text` is rejected, and warns that QR text rows stop scanning if separated by blank lines or wrapping. These are behavioral details an agent needs to use the tool safely and correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main purpose and key safety constraint ('no HTTP request') are front-loaded, and the longer agent-usage paragraph is dense rather than padded: every sentence earns its place by preventing a real misuse. The nested details are complex but justified by the need to route the correct link field from many sibling tools.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description still explains what the agent will produce: a clickable link plus QR code inside a fenced code block. It also covers the edge case where only `qr_text` is available, which is essential for correct behavior in this domain. The description is complete for a simple local render tool with tricky input-source rules.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already covers the parameters 100%, the description adds high-value meaning for `url` by mapping it to concrete upstream fields and by explicitly excluding `qr_text`. It also clarifies the optional `label` role implicitly through the schema example; the description's source-field guidance goes well beyond the schema's generic 'e.g. a deep_link response field.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Render an authorization or verification URL as a clickable link followed by a scannable QR code inside a fenced code block.' It also distinguishes this local formatting tool from network or fetch tools by stating 'no HTTP request is made.' This is enough to tell it apart from sibling verification/render tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Agent usage' section explicitly tells the agent which link fields to pass from which earlier tools and channels, and even names the exact fields (`deep_link`, `challenge.deep_link`, `telegram_deep_link` / `whatsapp_deep_link`). It gives a clear when-not: 'Do NOT pass `qr_text` to this tool,' with an explicit alternative of printing `qr_text` verbatim in a fenced code block.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ProofHoldings/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server