Skip to main content
Most nodes pass data along a workflow. Some instead offer a capability that other nodes call on demand, like turning text into a vector. A service connector is that arrangement. One node offers, another calls, and they are joined by a service edge on the Canvas rather than a data edge.

Two channels, and they never cross

A node has two ways of being triggered, and it is worth keeping them apart. A service call returns to its caller and fires no output connectors. Nothing leaks from one channel into the other. A node can have both. A node that only ever answers other nodes has no inputs and no outputs at all.

Offering a service

Declare the connector in interface.yaml, with isService: true and the methods you offer.
interface.yaml
Then write the methods in api/service.yaml, keyed by name.
api/service.yaml
Three things to notice. params is what the caller passed. A method reads its arguments there, the way a call reads settings from config. returns says what the caller gets back. It is returns rather than an events table, because a service call hands back one value and emits nothing. A method’s calls are a list, the same shape as api/run.yaml. A method needing two requests is the same idea as a node needing two. Every method name in service.yaml must appear in the connector’s methods list, and lint checks that they agree.

Consuming a service

Declare the same serviceType with isService: false. The node now accepts a service edge from any node that provides it.
interface.yaml
On the Canvas, drag from the provider’s service handle to the consumer’s serviceConsumer handle. Whether anything is wired is a run-time fact, and templates read it through the services root. That is how a node adapts to what it was actually given.
Nothing wired should still work. Degrade to the simple path rather than failing.

Service types

There are two. mcp is the larger of the two and has its own page: MCP Services. A provider may also carry instructions, which tell an Agent how to use its tools well together. That is strategy, and it is separate from the description of each method.

When it goes wrong


Next: MCP Services