Skip to main content
Glama

GENESIS ProofRelay MCP Verifier

Build human approval receipt draft

proofrelay.build_human_approval_receipt
Read-onlyIdempotent

Build an unsigned, hash-only human approval receipt draft for authority, policy, and subject evidence. The tool does not create approval authority or certify the approver's identity.

Input Schema

NameRequiredDescriptionDefault
approvalYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / approval / additionalProperties
      Added value: +false
    • addedInput schema / properties / approval / properties / approver_hash / pattern
      Added value: +"^\\s*(?:sha256:)?[0-9a-fA-F]{64}\\s*$"
    • changedInput schema / properties / approval / properties / policy_hash / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^\\s*(?:sha256:)?[0-9a-fA-F]{64}\\s*$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / approval / properties / scope_hash / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^\\s*(?:sha256:)?[0-9a-fA-F]{64}\\s*$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / approval / properties / subject_hash / pattern
      Added value: +"^\\s*(?:sha256:)?[0-9a-fA-F]{64}\\s*$"
  2. Changed6 schema fields changed
    • removedInput schema / $defs
      Removed value: -{
      -  "HumanApprovalReceiptInput": {
      -    "description": "Hash-only human approval receipt draft input.",
      -    "properties": {
      -      "approval_id": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Optional approval id.",
      -        "title": "Approval Id"
      -      },
      -      "approved_at": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Optional ISO-8601 time.",
      -        "title": "Approved At"
      -      },
      -      "approver_hash": {
      -        "description": "SHA-256 hash of approver identity.",
      -        "title": "Approver Hash",
      -        "type": "string"
      -      },
      -      "approver_role": {
      -        "description": "Public-safe approver role.",
      -        "title": "Approver Role",
      -        "type": "string"
      -      },
      -      "decision": {
      -        "description": "Approval decision.",
      -        "enum": [
      -          "approved",
      -          "rejected",
      -          "needs_changes"
      -        ],
      -        "title": "Decision",
      -        "type": "string"
      -      },
      -      "expires_at": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Optional ISO-8601 expiry.",
      -        "title": "Expires At"
      -      },
      -      "non_secret_refs": {
      -        "description": "Non-secret evidence references.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "title": "Non Secret Refs",
      -        "type": "array"
      -      },
      -      "policy_hash": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Optional policy hash.",
      -        "title": "Policy Hash"
      -      },
      -      "reason_codes": {
      -        "description": "Public-safe approval reason codes.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "title": "Reason Codes",
      -        "type": "array"
      -      },
      -      "scope_hash": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Optional scope hash.",
      -        "title": "Scope Hash"
      -      },
      -      "subject_hash": {
      -        "description": "SHA-256 hash of approved subject.",
      -        "title": "Subject Hash",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "approver_role",
      -      "approver_hash",
      -      "decision",
      -      "subject_hash"
      -    ],
      -    "title": "HumanApprovalReceiptInput",
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / approval / $ref
      Removed value: -"#/$defs/HumanApprovalReceiptInput"
    • addedInput schema / properties / approval / properties
      Added value: +{
      +  "approval_id": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "approved_at": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "approver_hash": {
      +    "type": "string"
      +  },
      +  "approver_role": {
      +    "type": "string"
      +  },
      +  "decision": {
      +    "enum": [
      +      "approved",
      +      "rejected",
      +      "needs_changes"
      +    ],
      +    "type": "string"
      +  },
      +  "expires_at": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "non_secret_refs": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "policy_hash": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "reason_codes": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "scope_hash": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "subject_hash": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / approval / required
      Added value: +[
      +  "approver_role",
      +  "approver_hash",
      +  "decision",
      +  "subject_hash"
      +]
    • addedInput schema / properties / approval / type
      Added value: +"object"
    • removedInput schema / title
      Removed value: -"build_human_approval_receiptArguments"
  3. First observed

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so safety is covered structurally. The description adds genuinely new behavioral context beyond that: the output is unsigned and hash-only, and it explicitly disclaims creating authority or certifying identity — important limits for a receipt-building tool that could otherwise be mistaken for an attestation.

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?

Two sentences, zero filler, with the artifact definition front-loaded and the limitation scoping placed after it. Every clause carries information the agent cannot get from the schema or annotations.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the read-only annotations reduce the burden. But for a nested, entirely undocumented parameter object, the description leaves the agent without guidance on required evidence composition or the semantics of the decision value — a meaningful gap for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% across a nested object with roughly eleven properties. The phrase 'hash-only ... for authority, policy, and subject evidence' hints at the three sha256-pattern hash fields, but nothing explains approver_role, the approved/rejected/needs_changes decision enum, expires_at, reason_codes, or non_secret_refs. The description compensates only marginally for a large documentation gap.

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?

States a specific verb+resource ('build an ... approval receipt draft') with meaningful qualifiers — unsigned, hash-only — that tell an agent exactly what artifact is produced. It implicitly distinguishes itself from verify_signed_attestation and generate_paid_tool_receipt by being a draft builder, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

The second sentence gives a useful boundary ('does not create approval authority or certify the approver's identity'), which implies when this is appropriate and when it is not. However, it never names an alternative sibling or states a positive trigger condition for choosing this tool over build_bundle_draft or generate_paid_tool_receipt.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources