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"]
  }
}
FieldPurpose
descriptionWhat the tool does, written for the LLM. This is the primary signal for tool selection.
input_schemaJSON-schema of the arguments. Used to advertise the tool and to hard-validate every call.
output_schemaOptional. Describes the returned payload for query topologies.
exposedOpt-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_confirmationOptional. Ask the user to approve before the run. See confirmation.
llm_formatOptional. 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 #

Where to go next #

© 2025 Orchesty Solutions. All rights reserved.