Getting started with Pulse
A topology becomes a Pulse tool the moment it carries a non-empty MCP description and is marked as exposed. This page walks through the description, then shows the tool it produces.
Describe the topology #
Pulse is description-first: the LLM picks a tool by its natural-language description, then fills arguments validated against input_schema. You author this as the topology's mcp_description.
{
"description": "Returns tomorrow's weather report for a city. Use when the user asks about the forecast.",
"exposed": true,
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City to report on, e.g. \"Brno\"."
},
"degrees_unit": {
"type": "string",
"enum": ["c", "f"],
"description": "Temperature unit. Defaults to Celsius."
}
},
"required": ["city"]
}
}
| Field | Purpose |
|---|---|
description | What the tool does, written for the LLM. This is the primary signal for tool selection. |
input_schema | JSON-schema of the arguments. Used to advertise the tool and to hard-validate every call. |
output_schema | Optional. Describes the returned payload for query topologies. |
exposed | Opt-in flag. A topology is offered as a tool only when exposed: true. A missing or false flag keeps the manifest authored but hidden, even if a description is filled in. |
requires_confirmation | Optional. Ask the user to approve before the run. See confirmation. |
llm_format | Optional. Let the assistant reformat the output. Off by default. See output handling. |
You do not set the tool id or its kind. The tool id is derived from the topology name (topology:{name}), and kind is derived from the topology itself: a topology with a response node is a query (it returns data), otherwise it is a command (fire-and-forget).
What Pulse advertises #
From the description above, Pulse adds this tool to the manifest of every user whose group may run the topology:
{
"id": "topology:weather-report",
"title": "weather-report",
"description": "Returns tomorrow's weather report for a city. Use when the user asks about the forecast.",
"kind": "query",
"input_schema": { "type": "object", "properties": { "city": { "type": "string" } }, "required": ["city"] }
}
Run it #
- From an agent, over the MCP API: see Manifest and run.
- From your team, in the Pulse chat: see For your team.
Where to go next #
- Scoping with groups: control which topologies a caller can run.
- Async and the response node: return data from a
querytopology.