| Tool Name: | hitl_request |
| Asset Name: | HITL Request |
| Description: | Ask a human for decisions, approvals or information. Delivers a durable request into the target user's h/ inbox. From a sessioned agent tool call it returns the durable request id immediately with INPUT_REQUIRED; the answer, rejection or expiry later arrives as a verified message in the same session and wakes the agent. External callers receive the standard Job, which stays INPUT_REQUIRED until the human answers (Job COMPLETE), rejects, or the request expires (Job FAILED). Asks are typed: text, approval, choice, or checkboxes. Approval asks and options may offer capability grants ({with, can, exp?}) issued only when the human makes that choice and explicitly echoes the grant. Omit user to ask your own owner. Set timeout (seconds) for time-sensitive asks. |
| Adapter: | hitl |
| Asset Hash: | 0x0e63562411a33a8b720228040303cb5f4eafcca9ff561a05c52d120b34e7bccb |
| Property | Type | Description |
|---|---|---|
timeout | integer | Seconds until the request expires (Job FAILED, record status 'expired'). Omit for no expiry. |
description | string | Markdown context for the decision — the human sees only this record, not your conversation, so include everything needed to decide. |
asks* | array | One or more asks. Each: {id, type: text|approval|choice|checkboxes, prompt, required?, comment?, options? (choice/checkboxes: [{id, label, description?, grants?}]), grants? (approval only)}. |
title* | string | Short human-readable summary of what is being asked. |
user | string | Target responder DID. Omit to ask the calling user (an agent asking its owner). Cross-user delivery requires a hitl/request delegation from the target. |
Type: object
Schema: <code>{ "type": "object", "description": "Sessioned agent receipt: {id, status: 'INPUT_REQUIRED', title}; the eventual outcome is delivered to that session. External Job completion: {id, outcome: 'answer', answers: {askId: answer}, comments?, comment?, grants?, token?}." }</code>
This tool can be called via the MCP (Model Context Protocol) endpoint. Here are examples of how to use it:
POST to https://venue-3.covia.ai/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hitl_request",
"arguments": {
"input": "your input here"
}
}
}curl -X POST https://venue-3.covia.ai/mcp \\
-H "Content-Type: application/json" \\
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hitl_request",
"arguments": {
"input": "your input here"
}
}
}'import requests
import json
url = "https://venue-3.covia.ai/mcp"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hitl_request",
"arguments": {
"input": "your input here"
}
}
}
response = requests.post(url, json=payload)
result = response.json()
print(result)const fetch = require('node-fetch');
const url = 'https://venue-3.covia.ai/mcp';
const payload = {
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'hitl_request',
arguments: {
input: 'your input here'
}
}
};
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data));{
"name": "HITL Request",
"description": "Ask a human for decisions, approvals or information. Delivers a durable request into the target user's h/ inbox. From a sessioned agent tool call it returns the durable request id immediately with INPUT_REQUIRED; the answer, rejection or expiry later arrives as a verified message in the same session and wakes the agent. External callers receive the standard Job, which stays INPUT_REQUIRED until the human answers (Job COMPLETE), rejects, or the request expires (Job FAILED). Asks are typed: text, approval, choice, or checkboxes. Approval asks and options may offer capability grants ({with, can, exp?}) issued only when the human makes that choice and explicitly echoes the grant. Omit user to ask your own owner. Set timeout (seconds) for time-sensitive asks.",
"creator": "Covia",
"operation": {
"adapter": "hitl:request",
"internal": false,
"toolName": "hitl_request",
"input": {
"type": "object",
"properties": {
"user": { "type": "string", "description": "Target responder DID. Omit to ask the calling user (an agent asking its owner). Cross-user delivery requires a hitl/request delegation from the target." },
"title": { "type": "string", "description": "Short human-readable summary of what is being asked." },
"description": { "type": "string", "description": "Markdown context for the decision — the human sees only this record, not your conversation, so include everything needed to decide." },
"asks": {
"type": "array",
"description": "One or more asks. Each: {id, type: text|approval|choice|checkboxes, prompt, required?, comment?, options? (choice/checkboxes: [{id, label, description?, grants?}]), grants? (approval only)}.",
"items": { "type": "object" }
},
"timeout": { "type": "integer", "description": "Seconds until the request expires (Job FAILED, record status 'expired'). Omit for no expiry." }
},
"required": ["title", "asks"]
},
"output": {
"type": "object",
"description": "Sessioned agent receipt: {id, status: 'INPUT_REQUIRED', title}; the eventual outcome is delivered to that session. External Job completion: {id, outcome: 'answer', answers: {askId: answer}, comments?, comment?, grants?, token?}."
}
}
}