# Notify through a connected service tool

Use **MCP tool notify (filtered)** to deliver selected records to a tool offered by a connected service. The starter loads records, applies a JSONPath predicate, and invokes the selected tool once for each match.

## Configure the filter and destination

| Parameter | What to enter |
| --- | --- |
| `workflow_name` | A nonempty workflow name. |
| `data_source_id` | The source whose records should be considered. |
| `limit` | Records to load: 1–5,000, default 200. |
| `filter_path` | Field to test; default `$.priority`. |
| `filter_op` | `eq`, `ne`, `contains`, `exists`, or `in`; default `eq`. |
| `filter_value` | Comparison value; default `high`, ignored by `exists`. |
| `integration_id` | The saved connected-service identity offering the tool. |
| `tool_name` | Exact tool name; default `post_message`. |

The default tool name is only a starting value. Confirm that the chosen service actually offers it and that the current tool definition is approved and available.

## Run a safe example

1. Prepare sample records with both matching and nonmatching priorities.
2. Select the template and enter the source and connected-service settings.
3. Inspect `load → filter_high → dispatch` after creation.
4. Review the tool's expected arguments and the record shape passed to it.
5. Validate and inspect the filtering behavior.
6. Start a controlled Manual run and check the external service.

The filter removes individual nonmatching records. It is different from a whole-step condition. If no records match, dispatch receives no useful work. The loader is nonbatched, so the configured limit bounds this selection.

## Understand delivery guarantees

Dispatch uses concurrency 2 and preserves input order in its output even when responses arrive in a different order. It supplies an idempotency key based on run and record sequence. The gateway or receiving tool must support deduplication for that key to prevent repeated effects.

A new run can notify the same record again. Retrying after a partial failure also needs care when the destination does not honor idempotency. Check external results before repeating a change-producing tool call.

Tool execution is an external effect; ordinary workflow testing does not replace the service's own permissions or approval rules.

See [Filter](/docs/steps/filter), [Write to MCP tool](/docs/steps/write-to-mcp), and [service-tool administration](/docs/administration/service-tools).

## Prepared job settings

The starter is enabled and uses a Manual trigger. These settings are supplied by the recipe; review them in the editor before adapting the process. `${…}` values below refer to the corresponding template parameter or run variable.

| Setting | Prepared value |
| --- | --- |
| `load.config.data_source_id` | `"${data_source_id}"` |
| `load.config.limit` | `"${limit}"` |
| `filter_high.config.path` | `"${filter_path}"` |
| `filter_high.config.op` | `"${filter_op}"` |
| `filter_high.config.value` | `"${filter_value}"` |
| `dispatch.config.integration_id` | `"${integration_id}"` |
| `dispatch.config.tool_name` | `"${tool_name}"` |
| `dispatch.config.concurrency` | `2` |
| `dispatch.config.idempotency_key_template` | `"mcp-notify:${run_id}:${record_seq}"` |
