---
title: "Refresh a remote MCP connection’s tools"
method: POST
path: "/connection/{id}/refresh-tools"
tags: ["Connections"]
---

# Refresh a remote MCP connection’s tools

`POST /connection/{id}/refresh-tools`

## Request

- Base URL: `https://api.elaichi.ai`
- URL: `https://api.elaichi.ai/connection/{id}/refresh-tools`
- Auth: HTTP bearer

Lists the tools the remote MCP server shows THIS connection (with its own credential) again, now, and applies the result to the connector’s registry; a tool new to it is usable at once. A remote MCP connection also refreshes when it becomes active and once a day; this is the on-demand one. No body. Same mutation bar as reconnect (`can_manage`); render controls on the connection’s `can_refresh_tools`, which is present only on a remote MCP connection. Rate limited to one per connection per minute: `429` with `Retry-After`. The `200` carries the diff as tool NAMES (`summary.added`, `changed`, `removed`, `tier_changed`, and `tier_changes` with each tier's direction), never definitions. `403` `connector_not_shared` when the connector's owner stopped sharing it; `409`: `not_remote_mcp`, `not_refreshable` (not active or not bound), `needs_reauth` (the server rejected the credential; the connection is moved to `needs_reauth`), or `tools_refresh_failed` (the message is safe to show and is also on the row as `tools_refresh_error`).

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string

## Response `200`

OK

- object
  - `listed` integer, required: Tools this connection lists now.
  - `summary` object, required
    - `added` string[], required: Names new to the connector’s registry.
    - `changed` string[], required: Names whose definition changed.
    - `removed` string[], required: Names this connection stopped listing.
    - `tier_changed` string[], required: Names whose tier on this connection's own definition changed, in either direction.
    - `tier_changes` object[], required: The `tier_changed` tools with the direction each moved (`from` this connection's previous definition's tier, `to` its new one's).
      - `name` string, required
      - `from` 'read' | 'write' | 'destructive', required
      - `to` 'read' | 'write' | 'destructive', required
  - `tools_refreshed_at` string, date-time, nullable, required
  - `tools_refresh_error` string, nullable, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `429`: Rate limited

---

[API](https://skmtc.dev/elaichi/apis/elaichi-api.md) · [All operations](https://skmtc.dev/elaichi/apis/elaichi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/elaichi/apis/elaichi-api/revisions/b22cfb7b6d15?raw)
