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

@proof-holdings/mcp-server

Official

get_hitl

Read-only

Retrieve a HITL config by ID to check its channels, timeout, and status before routing approvals. Use it to confirm human-in-the-loop settings for an action.

Instructions

Get a HITL config by ID. Returns the config including channels, timeout, and status.

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
idYesHITL config ID

Output Schema

NameRequiredDescriptionDefault
idYesMongoDB ObjectId
nameNo
statusYesStatus of a HITL configuration
keypairYesEncryption keypair metadata (null if not configured)
user_idYesOwner user ID (useful for SDK encryption AAD)
channelsYes
circle_idNoBacking Circle for a circle-backed Approvals config (null for channel-list configs)
created_atYes
profile_idNo
updated_atYes
environmentYes
timeout_secondsYes

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": "HITL configuration with messaging channels and timeout",
      +  "properties": {
      +    "channels": {
      +      "items": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "config": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "chat_id": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "chat_id"
      +                ],
      +                "type": "object"
      +              },
      +              "type": {
      +                "const": "telegram",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type",
      +              "config"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "config": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "bsuid": {
      +                    "type": "string"
      +                  },
      +                  "phone_number": {
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": {
      +                "const": "whatsapp",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "type",
      +              "config"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    },
      +    "circle_id": {
      +      "description": "Backing Circle for a circle-backed Approvals config (null for channel-list configs)",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "created_at": {
      +      "type": "string"
      +    },
      +    "environment": {
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "MongoDB ObjectId",
      +      "type": "string"
      +    },
      +    "keypair": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "has_backup_wrapper": {
      +              "type": "boolean"
      +            },
      +            "has_encrypted_private_key": {
      +              "type": "boolean"
      +            },
      +            "has_wrapped_dek": {
      +              "type": "boolean"
      +            },
      +            "kid": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kid",
      +            "has_encrypted_private_key",
      +            "has_wrapped_dek",
      +            "has_backup_wrapper"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Encryption keypair metadata (null if not configured)"
      +    },
      +    "name": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "profile_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "Status of a HITL configuration",
      +      "type": "string"
      +    },
      +    "timeout_seconds": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "updated_at": {
      +      "type": "string"
      +    },
      +    "user_id": {
      +      "description": "Owner user ID (useful for SDK encryption AAD)",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "user_id",
      +    "channels",
      +    "timeout_seconds",
      +    "status",
      +    "keypair",
      +    "environment",
      +    "created_at",
      +    "updated_at"
      +  ],
      +  "type": "object"
      +}
  2. First observedv1.1.0

TDQS

A3.9/5.0
Behavior4/5

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

readOnlyHint=true is consistent with a "Get" operation. Beyond annotations, the description contributes the meaningful non-obvious fact that authentication cannot be established via start_login, which prevents a likely agent failure loop. The return-field summary is largely redundant given a dedicated output schema exists.

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

Conciseness4/5

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

Two tight blocks: purpose and return fields first, then the access caveat. Every sentence is functional, though the "start_login does NOT open this tool" line is phrased defensively and could be folded into a single prerequisite sentence.

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 one-parameter read tool with a full output schema, the description covers what an agent needs: what it fetches, what comes back, and the auth prerequisite. Only the source of a valid HITL config ID (presumably list_hitls) is left implicit.

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 coverage is 100% for the single required `id` parameter, so the schema already carries the meaning. The description only echoes the by-ID semantics without adding format hints or where to obtain the ID. Baseline 3 applies.

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?

"Get a HITL config by ID" gives a specific verb and resource, and the second sentence previews the returned fields (channels, timeout, status). It does not distinguish itself from close siblings such as list_hitls, get_hitl_keys, or get_circle, so an agent must infer that this is the by-ID lookup.

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?

The ACCESS clause gives clear operational context: a Proof account with PROOF_API_KEY configured is required, and start_login will not unlock it. It stops short of explicit routing guidance, e.g., use list_hitls first to discover an ID, or when to prefer update_hitl instead.

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