Skip to main content
Glama
@proof-holdings/mcp-server

@proof-holdings/mcp-server

Official

get_confirmation_approval_link

Retrieve the owner approval link for a pending human-in-the-loop confirmation so the config owner can approve or deny it; call again to show the same link until it expires.

Instructions

Get the approval link of the HITL config owner: it is decided with the config's own key, so it is for the owner to approve or deny the confirmation themselves. An approver cannot use it — an approver's link goes only to their own channel, and "Send again" (POST /api/v1/confirmations/{id}/resend, which no tool calls yet) is what sends it there again. Every call returns the same owner link until "Send again" reaches the owner; "Send again" replaces it, and the next call returns a new one. Calling this tool again cancels nothing, so it is safe to call again to show the link again. The link expires when the confirmation does. Only works for pending confirmations.

ACCESS: needs a Proof account. Set PROOF_API_KEY and restart this server, then call this tool again. start_login does NOT open this tool.

Input Schema

NameRequiredDescriptionDefault
idYesConfirmation ID

Output Schema

NameRequiredDescriptionDefault
approval_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.7.2
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "description": "Regenerated approval link for a pending confirmation",
      +  "properties": {
      +    "approval_url": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "approval_url"
      +  ],
      +  "type": "object"
      +}
  2. First observedv1.1.0

TDQS

A3.6/5.0
Behavior3/5

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

The description adds substantial behavior beyond the annotations: repeat calls are non-cancelling and safe, the same link is returned until 'Send again' replaces it, and the link expires when the confirmation does. However, it never explains why readOnlyHint=false despite describing the tool as cancel-nothing and safe to re-call, leaving a gap between the structured safety profile and the prose. It also front-loads an auth/setup requirement (PROOF_API_KEY, restart, start_login does not unlock it), which is valuable but is operational rather than behavioral detail.

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

Conciseness3/5

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

The key point is front-loaded, but the middle is convoluted: the 'Send again' endpoint is described twice with a parenthetical about no tool calling it, and 'Calling this tool again cancels nothing, so it is safe to call again to show the link again' repeats itself. Several clauses could be compressed without losing meaning.

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

Completeness4/5

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

For a single-parameter tool with an output schema, the description covers the operationally important facts: pending-only scope, link lifetime, idempotent re-calls, and the credential prerequisite. What is missing is the link between the confirmation id and the HITL config owner, but the essentials an agent needs to call it correctly are present.

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?

There is one parameter with 100% schema description coverage ('Confirmation ID'), so the schema already carries the semantics and baseline 3 applies. The description does nothing to disambiguate whether the id refers to a confirmation or a HITL config, which is exactly the confusion its own first sentence invites.

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

Purpose4/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: it returns the approval link belonging to the HITL config owner, and it explicitly scopes it as owner-only (an approver cannot use it). That distinguishes it from the resend behavior and from the approver path. It is slightly muddled by switching between 'HITL config owner' and 'confirmation' without stating the relationship, so it stops short of a clean 5.

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

Usage Guidelines4/5

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

It gives a clear usage condition (only works for pending confirmations) and an exclusion (approvers cannot use it — their link goes to their own channel, via the resend endpoint no tool currently calls). It does not compare against near siblings such as get_confirmation or wait_for_confirmation, so the when-to-use framing is clear but not exhaustive.

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

Deploy Server

Other Tools