# Tool servers

Your work already lives in other systems. Connect a tool server that speaks MCP, and every tool it lists becomes one your workflows can declare and call, recorded like every other step.

Connection: Tool server → Tools: Its tools → Declare: Operations → Step: A step calls it

A connection is added once for the organization. Each workflow still declares which of its tools it uses, and each step which of those it may call.

## A connection

| Field | What it holds |
| --- | --- |
| Name | A label. It prefixes the names the server’s tools reach the model under. |
| Address | Where the server is reached: the endpoint it is posted to over HTTP, or a launch profile the deployment runs over standard input and output. |
| Transport | Http or Stdio. |
| Credential | A reference to a secret held by the deployment. The secret is resolved at each call and never written into a run’s record. |
| Refresh interval | How often the server’s tool list is read again. |

Each connection has a stable id, so renaming it does not break the workflows that use it. A connection belongs to one organization, or to every organization where Momor shares it.

> **Adding a connection**
> There is no settings screen or endpoint for adding a connection yet. [Talk to us](/contact/) to connect a server to your organization.

## Its tools

- **Listed.** Each tool the server lists registers under the connection, with the server’s name, description and input schema.
- **Named apart.** A tool reaches the model as <connection name>_<tool name>, so two servers offering a tool with the same name stay two tools.
- **Kept.** A refresh that fails keeps the last list that succeeded, so a server that is briefly out of reach keeps its tools.

## Declaring its tools in a workflow

```yaml
Operations:
  - Tool: IssueRefund
    Locator: mcp://4b1e9a52-0f3c-4d2a-9e61-2a7f5c3d8b10/issue_refund
  - Tool: Billing
    Locator: mcp://4b1e9a52-0f3c-4d2a-9e61-2a7f5c3d8b10/*
```

A locator ending in `*` binds every tool that matches, under one name. The upload is refused if a locator matches no registered tool.

## What a server can’t do

- **Ask the person.** If a server asks for input during a call, it is answered only from values configured on the connection, and declined otherwise. A workflow that needs a person’s answer raises its own wait.
- **Run a model.** A server’s request for a model completion is refused.
- **Go around the record.** Its calls run under the workflow’s rules: declared, checked against the tool’s schema, and recorded with their input and result.

## Momor’s own tools

Tools that ship with Momor are declared the same way, under `embedded://momor.ai/services/tools/`, such as `searchWeb`, `fetchPage`, `getWeather` and `calculate`. `Locator: "*"` binds every registered tool, which is how Search’s Intent workflow offers the model all of them.
