Skip to main content
Glama
Phygital-Key

phygital-key-mcp

Official

request_approval

Requests a person's passkey or hardware-key approval for one exact action, returning an id and approve_url. Nothing is approved until the person signs; call get_approval to get the decision.

Instructions

Ask a person to approve one exact action with their passkey, fingerprint or hardware key. Returns an id and approve_url, not the decision: then call get_approval. For many similar actions, use request_standing_approval. Nothing is approved until the person signs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
audYesWho will act on the yes, e.g. "https://deploy.example.com". The approval only works there.
levelYesHow strong the proof must be: "medium" (touch) or "high" (fingerprint, face or PIN).
requestYesThe exact request: {"type": "<lowercase name>", "params": {...}}. Use strings or integers, never floats. No secrets: the person sees it, and anyone holding the approval can read it.
agent_keyNoOptional: your own P-256 public key (SubjectPublicKeyInfo DER, base64url). The approval is then bound to it: when you act, also send a proof signed with that key (header Phygital-Proof). A copy of the approval is useless to anyone else.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare this is a non-readonly, non-idempotent, non-destructive, closed-world operation. The description adds context annotations cannot convey: that the call returns an id and approve_url rather than the decision, and that no approval exists until the human signs. It stops short of covering auth/permission requirements or retry/expiry behavior, so a 4 rather than 5.

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?

Four short sentences, front-loaded with the core action, then return shape, then sibling routing, then the security invariant. Every sentence carries distinct, non-redundant information with zero filler.

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?

With no output schema, the description correctly supplies the return contract (id and approve_url, not the decision) and the async completion path via get_approval. Combined with 100% schema coverage, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (request, aud, level, agent_key) are already documented in the schema, including the medium/high level meanings and the no-secrets warning. The description adds no parameter syntax or format detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource with precise scope: "Ask a person to approve one exact action" via passkey/fingerprint/hardware key. It explicitly distinguishes itself from two siblings (get_approval and request_standing_approval), so an agent can route correctly without opening any schema.

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?

Gives explicit follow-up routing ("then call get_approval") and an explicit alternative with its selecting condition ("For many similar actions, use request_standing_approval"). It also states the precondition that nothing is approved until the person signs, leaving nothing to inference.

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