Tool Details: agent_step

Basic Information

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
Input
PropertyTypeDescription
assistant*anyThe 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.
taskanyA 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*stringAgent reference: a bare name for the caller's agent, g/<id>, /g/<id>, or <ownerDID>/g/<id>
messagesarraySeveral inbox messages, same forms as message.
sessionIdstringOptional 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.
pendingarrayJob results arriving this cycle, as {jobId, status, output}. (goaltree: results arrive as session turns, so none render separately.)
messageanyA 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.
Output

Type: object

Schema: <code>{ &quot;type&quot;: &quot;object&quot;, &quot;description&quot;: &quot;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).&quot; }</code>

MCP Tool Usage Examples

This tool can be called via the MCP (Model Context Protocol) endpoint. Here are examples of how to use it:

JSON-RPC Call Example:

POST to https://venue-test.covia.ai/mcp

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "agent_step",
    "arguments": {
      "input": "your input here"
    }
  }
}
cURL Example:
curl -X POST https://venue-test.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"
      }
    }
  }'
Python Example:
import requests
import json

url = "https://venue-test.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)
JavaScript/Node.js Example:
const fetch = require('node-fetch');

const url = 'https://venue-test.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));

Asset Metadata

{
	"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)."
		}
	}
}

Navigation

Back to adapter details

Back to all adapters

Back to index