| Tool Name: | agent_step |
| Asset Name: | Agent Step |
| Description: | Step an agent's harness through one iteration without calling the model. Describe the call as for agent:context and supply the reply the model would give — text, tool calls, or both. The tool calls are dispatched exactly as a live cycle dispatches them (same routes, same capability checks, same authority — so the tools' own side effects are real), their results are rendered, and the prompt the next inference would receive is returned with what the iteration would have appended to the conversation. The agent itself is untouched: nothing persists to its session, timeline or tasks; complete_task/fail_task (llmagent) and complete/fail (goaltree) are validated as live but reported as the terminal outcome instead of resolving anything. subgoal (goaltree) is not run — it would start a child frame and call the model. |
| Adapter: | agent |
| Asset Hash: | 0x6cebe75639ef3e716610664845eaa5f2d40ad5619d8e23138c014bae95e457bd |
| Property | Type | Description |
|---|---|---|
assistant* | any | The model reply to step through: a string (text only), or {content?, toolCalls?: [{id?, name, arguments?}]}. Text that spells a control tool (e.g. complete_task {"result": ...}) is recognised exactly as the live loop recognises it. |
task | any | A task input. llmagent renders it as the outstanding task the agent must complete or fail, with the task tools offered; goaltree renders it as the goal. |
agentId* | string | Agent reference: a bare name for the caller's agent, g/<id>, /g/<id>, or <ownerDID>/g/<id> |
messages | array | Several inbox messages, same forms as message. |
sessionId | string | Optional session id (hex, with or without a 0x prefix): the session's conversation — prior turns, tool-failure diagnostics — renders exactly as a live transition on that session would see it. |
pending | array | Job results arriving this cycle, as {jobId, status, output}. (goaltree: results arrive as session turns, so none render separately.) |
message | any | A hypothetical inbox message for this call: a string, or an envelope {message, caller?}. Renders as the current input, with venue attribution when the caller is not the agent's own principal. |
Type: object
Schema: <code>{ "type": "object", "description": "assistant (the reply as it would be recorded), turns (what the iteration appends to the conversation), calls [{id, name, arguments, result, isError?, ms}], terminal? {status: complete | failed, value}, done, response? (when the cycle ends here), next? (the following prompt, as agent:context reports it)." }</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-1.covia.ai/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "agent_step",
"arguments": {
"input": "your input here"
}
}
}curl -X POST https://venue-1.covia.ai/mcp \\
-H "Content-Type: application/json" \\
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "agent_step",
"arguments": {
"input": "your input here"
}
}
}'import requests
import json
url = "https://venue-1.covia.ai/mcp"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "agent_step",
"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-1.covia.ai/mcp';
const payload = {
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'agent_step',
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": "Agent Step",
"description": "Step an agent's harness through one iteration without calling the model. Describe the call as for agent:context and supply the reply the model would give — text, tool calls, or both. The tool calls are dispatched exactly as a live cycle dispatches them (same routes, same capability checks, same authority — so the tools' own side effects are real), their results are rendered, and the prompt the next inference would receive is returned with what the iteration would have appended to the conversation. The agent itself is untouched: nothing persists to its session, timeline or tasks; complete_task/fail_task (llmagent) and complete/fail (goaltree) are validated as live but reported as the terminal outcome instead of resolving anything. subgoal (goaltree) is not run — it would start a child frame and call the model.",
"dateCreated": "2026-08-21T00:00:00Z",
"operation": {
"adapter": "agent:step",
"internal": false,
"toolName": "agent_step",
"input": {
"type": "object",
"properties": {
"agentId": {
"type": "string",
"description": "Agent reference: a bare name for the caller's agent, g/<id>, /g/<id>, or <ownerDID>/g/<id>"
},
"assistant": {
"description": "The model reply to step through: a string (text only), or {content?, toolCalls?: [{id?, name, arguments?}]}. Text that spells a control tool (e.g. complete_task {\"result\": ...}) is recognised exactly as the live loop recognises it."
},
"message": {
"description": "A hypothetical inbox message for this call: a string, or an envelope {message, caller?}. Renders as the current input, with venue attribution when the caller is not the agent's own principal."
},
"messages": {
"type": "array",
"description": "Several inbox messages, same forms as message."
},
"pending": {
"type": "array",
"description": "Job results arriving this cycle, as {jobId, status, output}. (goaltree: results arrive as session turns, so none render separately.)"
},
"task": {
"description": "A task input. llmagent renders it as the outstanding task the agent must complete or fail, with the task tools offered; goaltree renders it as the goal."
},
"sessionId": {
"type": "string",
"description": "Optional session id (hex, with or without a 0x prefix): the session's conversation — prior turns, tool-failure diagnostics — renders exactly as a live transition on that session would see it."
}
},
"required": [
"agentId",
"assistant"
]
},
"output": {
"type": "object",
"description": "assistant (the reply as it would be recorded), turns (what the iteration appends to the conversation), calls [{id, name, arguments, result, isError?, ms}], terminal? {status: complete | failed, value}, done, response? (when the cycle ends here), next? (the following prompt, as agent:context reports it)."
}
}
}