> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tai42.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Expose a private tool set

> Publish a scoped sub-MCP server.

Expose a private, scoped set of tools as a sub-MCP server.

A sub-MCP app publishes a named subset of a server's tools under its own slug — a second MCP endpoint carrying only the tools you list. Point a client at the slug and it sees just that set, not the whole server. Use it to scope a client to a private tool set.

## Register a sub-MCP app

Name the slug to mount under and the tools to expose with the repeatable `--tool`.

```bash theme={null}
tai sub-mcp register billing --tool invoice --tool refund
```

The app mounts under its slug and re-presents only the named tools. Registering the same slug again reloads it with the new tool set.

## Inspect and remove

<Steps>
  <Step title="List the registered apps">
    List the sub-MCP apps and the tools each exposes.

    ```bash theme={null}
    tai sub-mcp list
    ```
  </Step>

  <Step title="Point a client at the slug">
    An MCP client connects to the sub-MCP endpoint the same way it connects to the main server — over the published transport, at the slug's path. See [MCP clients](/integrations/mcp-clients).
  </Step>

  <Step title="Unregister an app">
    ```bash theme={null}
    tai sub-mcp delete billing
    ```
  </Step>
</Steps>

<Note>
  A sub-MCP app is a projection, not a copy. It exposes the same live tools under a narrower surface — a tool removed from the main server disappears from every sub-MCP app that listed it.
</Note>

## See also

* [Private tool sets](/concepts/private-tool-sets) — the sub-MCP model.
* [MCP clients](/integrations/mcp-clients) — connect a client to the slug.
* [Access control](/concepts/access-control) — gate the sub-MCP endpoint behind a scope.
* [CLI reference](/reference/cli) — the full `tai sub-mcp` surface.
