---
title: "Refresh Tunnel Tools Route"
method: POST
path: "/tunnel/refresh"
---

# Refresh Tunnel Tools Route

`POST /tunnel/refresh`

## Request

- Base URL: `https://usemeridian.us` (the document declares no server; this is the origin it was published from)
- URL: `https://usemeridian.us/tunnel/refresh`
- Auth: none declared

Force a synchronous tunnel-tool re-aggregation and return the manifest.

The explicit refresh operation the dashboard (Settings → Tunnel Plugins
status card) and any HTTP-capable connector can call instead of guessing
at a TTL: it atomically invalidates the routing cache, re-fetches every
healthy slot's tools, and returns the resulting
:func:`tunnel_manifest_snapshot` — the same shape surfaced by
``GET /tunnel/status/{tenant_id}`` and the MCP ``tools/list`` ``_meta``
block, so a caller can diff ``manifest_hash`` against what it last saw.

No tunnel connected is not an error here — it returns a snapshot with
``has_active_tunnel: false`` and a null ``manifest_hash`` (nothing to
aggregate), same as any other read of tunnel state.

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/usemeridian/apis/meridian.md) · [All operations](https://skmtc.dev/usemeridian/apis/meridian/llms.txt) · [OpenAPI document](https://skmtc.dev/usemeridian/apis/meridian/revisions/f37a894bd374?raw)
