Manifest and run

Fetch the manifest #

curl https://your-instance.example.com/mcp/manifest.json \
  -H "X-Auth: <AGENT_API_KEY>"

The response is a list of tools the caller may use. Each topology tool looks like this:

{
  "id": "topology:weather-report",
  "title": "weather-report",
  "description": "Returns tomorrow's weather report for a city.",
  "kind": "query",
  "input_schema": {
    "type": "object",
    "properties": { "city": { "type": "string" } },
    "required": ["city"]
  },
  "output_schema": { "type": "object" },
  "requires_confirmation": true,
  "llm_format": false
}
FieldMeaning
idThe tool id, always topology:{name}.
descriptionNatural-language selection signal for the LLM.
kindquery (returns data via a response node) or command (fire-and-forget).
input_schemaJSON-schema the arguments are validated against.
output_schemaPresent when the manifest declares one.
requires_confirmationPresent and true when the run must be confirmed first.
llm_formatPresent and true when the assistant may reformat the output.

Run a tool #

curl -X POST https://your-instance.example.com/mcp/run \
  -H "X-Auth: <AGENT_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "topology:weather-report",
    "args": { "city": "Brno" }
  }'

The tool accepts both the canonical topology:{name} id and a bare {name}, since LLMs frequently drop the prefix.

Argument validation #

Before the topology starts, Pulse coerces lossless scalar values to the declared types (for example "20" to an integer when the schema asks for one) and then hard-validates the arguments against input_schema. An invalid call is rejected and never reaches the topology. Never trust the model: the schema is the contract.

Run response #

{
  "topology": "weather-report",
  "kind": "query",
  "correlation_id": "6f1c...",
  "request_id": "",
  "started": true,
  "status": "pending"
}
kindstatusMeaning
commandstarted / failedFire-and-forget. The process was dispatched.
querypendingThe process is running; its payload arrives via the response node.

A tool that is not in the caller's manifest resolves to an unknown tool and is never run, even if the name is guessed exactly. The error does not reveal whether another group's topology exists.

Where to go next #

© 2025 Orchesty Solutions. All rights reserved.