# OmniRoute MCP Server Documentation (ਪੰਜਾਬੀ) 🌐 **Languages:** 🇺🇸 [English](../../../../frameworks/MCP-SERVER.md) · 🇪🇹 [am](../../../am/docs/frameworks/MCP-SERVER.md) · 🇸🇦 [ar](../../../ar/docs/frameworks/MCP-SERVER.md) · 🇦🇿 [az](../../../az/docs/frameworks/MCP-SERVER.md) · 🇧🇬 [bg](../../../bg/docs/frameworks/MCP-SERVER.md) · 🇧🇩 [bn](../../../bn/docs/frameworks/MCP-SERVER.md) · 🇧🇦 [bs](../../../bs/docs/frameworks/MCP-SERVER.md) · 🇨🇿 [cs](../../../cs/docs/frameworks/MCP-SERVER.md) · 🇩🇰 [da](../../../da/docs/frameworks/MCP-SERVER.md) · 🇩🇪 [de](../../../de/docs/frameworks/MCP-SERVER.md) · 🇬🇷 [el](../../../el/docs/frameworks/MCP-SERVER.md) · 🇪🇸 [es](../../../es/docs/frameworks/MCP-SERVER.md) · 🇪🇪 [et](../../../et/docs/frameworks/MCP-SERVER.md) · 🇮🇷 [fa](../../../fa/docs/frameworks/MCP-SERVER.md) · 🇫🇮 [fi](../../../fi/docs/frameworks/MCP-SERVER.md) · 🇫🇷 [fr](../../../fr/docs/frameworks/MCP-SERVER.md) · 🇮🇪 [ga](../../../ga/docs/frameworks/MCP-SERVER.md) · 🇮🇳 [gu](../../../gu/docs/frameworks/MCP-SERVER.md) · 🇳🇬 [ha](../../../ha/docs/frameworks/MCP-SERVER.md) · 🇮🇱 [he](../../../he/docs/frameworks/MCP-SERVER.md) · 🇮🇳 [hi](../../../hi/docs/frameworks/MCP-SERVER.md) · 🇭🇷 [hr](../../../hr/docs/frameworks/MCP-SERVER.md) · 🇭🇺 [hu](../../../hu/docs/frameworks/MCP-SERVER.md) · 🇦🇲 [hy](../../../hy/docs/frameworks/MCP-SERVER.md) · 🇮🇩 [id](../../../id/docs/frameworks/MCP-SERVER.md) · 🇳🇬 [ig](../../../ig/docs/frameworks/MCP-SERVER.md) · 🇮🇹 [it](../../../it/docs/frameworks/MCP-SERVER.md) · 🇯🇵 [ja](../../../ja/docs/frameworks/MCP-SERVER.md) · 🇬🇪 [ka](../../../ka/docs/frameworks/MCP-SERVER.md) · 🇰🇭 [km](../../../km/docs/frameworks/MCP-SERVER.md) · 🇮🇳 [kn](../../../kn/docs/frameworks/MCP-SERVER.md) · 🇰🇷 [ko](../../../ko/docs/frameworks/MCP-SERVER.md) · 🇱🇹 [lt](../../../lt/docs/frameworks/MCP-SERVER.md) · 🇱🇻 [lv](../../../lv/docs/frameworks/MCP-SERVER.md) · 🇮🇳 [ml](../../../ml/docs/frameworks/MCP-SERVER.md) · 🇮🇳 [mr](../../../mr/docs/frameworks/MCP-SERVER.md) · 🇲🇾 [ms](../../../ms/docs/frameworks/MCP-SERVER.md) · 🇲🇹 [mt](../../../mt/docs/frameworks/MCP-SERVER.md) · 🇲🇲 [my](../../../my/docs/frameworks/MCP-SERVER.md) · 🇳🇵 [ne](../../../ne/docs/frameworks/MCP-SERVER.md) · 🇳🇱 [nl](../../../nl/docs/frameworks/MCP-SERVER.md) · 🇳🇴 [no](../../../no/docs/frameworks/MCP-SERVER.md) · 🇮🇳 [or](../../../or/docs/frameworks/MCP-SERVER.md) · 🇵🇭 [phi](../../../phi/docs/frameworks/MCP-SERVER.md) · 🇵🇱 [pl](../../../pl/docs/frameworks/MCP-SERVER.md) · 🇵🇹 [pt](../../../pt/docs/frameworks/MCP-SERVER.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/frameworks/MCP-SERVER.md) · 🇷🇴 [ro](../../../ro/docs/frameworks/MCP-SERVER.md) · 🇷🇺 [ru](../../../ru/docs/frameworks/MCP-SERVER.md) · 🇱🇰 [si](../../../si/docs/frameworks/MCP-SERVER.md) · 🇸🇰 [sk](../../../sk/docs/frameworks/MCP-SERVER.md) · 🇸🇮 [sl](../../../sl/docs/frameworks/MCP-SERVER.md) · 🇷🇸 [sr](../../../sr/docs/frameworks/MCP-SERVER.md) · 🇸🇪 [sv](../../../sv/docs/frameworks/MCP-SERVER.md) · 🇰🇪 [sw](../../../sw/docs/frameworks/MCP-SERVER.md) · 🇮🇳 [ta](../../../ta/docs/frameworks/MCP-SERVER.md) · 🇮🇳 [te](../../../te/docs/frameworks/MCP-SERVER.md) · 🇹🇭 [th](../../../th/docs/frameworks/MCP-SERVER.md) · 🇹🇷 [tr](../../../tr/docs/frameworks/MCP-SERVER.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/frameworks/MCP-SERVER.md) · 🇵🇰 [ur](../../../ur/docs/frameworks/MCP-SERVER.md) · 🇺🇿 [uz](../../../uz/docs/frameworks/MCP-SERVER.md) · 🇻🇳 [vi](../../../vi/docs/frameworks/MCP-SERVER.md) · 🇳🇬 [yo](../../../yo/docs/frameworks/MCP-SERVER.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/frameworks/MCP-SERVER.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/frameworks/MCP-SERVER.md) --- > ਰਾਊਟਿੰਗ, ਕੈਸ਼, ਕੰਪ੍ਰੈਸ਼ਨ, ਮੈਮੋਰੀ, ਸਕਿਲਾਂ, ਪ੍ਰੌਕਸੀ, ਪੂਲ, Radar ਅਤੇ ਸੰਦਰਭ ਸਰੋਤ ਕਾਰਵਾਈਆਂ ਵਿੱਚ 110 ਟੂਲਾਂ ਵਾਲਾ Model Context Protocol ਸਰਵਰ। > > ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ: `open-sse/mcp-server/server.ts`, `countUniqueMcpTools()` ਨਾਲ **110 ਵਿਲੱਖਣ ਟੂਲਾਂ** ਦੀ ਗਿਣਤੀ ਕਰਦਾ ਹੈ: 45 ਕੈਨੋਨਿਕਲ ਪਰਿਭਾਸ਼ਾਵਾਂ (ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਛੇ CCR ਲਾਈਫਸਾਈਕਲ ਟੂਲ, agent-skills ਤਿਕੜੀ, `omniroute_radar_catalog`, ਅਤੇ `omniroute_x_search` ਸ਼ਾਮਲ ਹਨ), ਨਾਲ ਹੀ ਮੈਮੋਰੀ (3), ਸਕਿਲਾਂ (4), GitHub ਸਕਿਲਾਂ (3), ਪੂਲ (6), ਗੇਮੀਫਿਕੇਸ਼ਨ (8), ਪਲੱਗਇਨ (8), Notion (6), Obsidian (22), ਲੋਕਲ ਕਾਰਪਸ (3), ਅਤੇ ਸਿਰਫ਼ RTK ਲਈ ਦੋ ਕੰਪ੍ਰੈਸ਼ਨ ਟੂਲ। ## ਇੰਸਟਾਲੇਸ਼ਨ OmniRoute MCP ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ ਸ਼ਾਮਲ ਹੈ। ਇਸਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸ਼ੁਰੂ ਕਰੋ: ```bash omniroute --mcp ``` ਜਾਂ open-sse ਟ੍ਰਾਂਸਪੋਰਟ ਰਾਹੀਂ: ```bash # HTTP ਸਟ੍ਰੀਮਯੋਗ ਟ੍ਰਾਂਸਪੋਰਟ (ਪੋਰਟ 20130) omniroute --dev # MCP /mcp ਐਂਡਪੌਇੰਟ 'ਤੇ ਆਪਣੇ ਆਪ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ``` HTTP ਟ੍ਰਾਂਸਪੋਰਟ (`sse` / `streamable-http`, ਜੋ ਡੈਸ਼ਬੋਰਡ ਸਰਵਰ ਦੁਆਰਾ ਉਸੇ ਪ੍ਰੋਸੈੱਸ ਵਿੱਚ ਸਰਵ ਕੀਤੇ ਜਾਂਦੇ ਹਨ) ਮੂਲ ਰੂਪ ਵਿੱਚ ਬੰਦ ਹੁੰਦੇ ਹਨ ਅਤੇ ਪਹਿਲਾਂ ਸਿਰਫ਼ `/dashboard/mcp` ਪੰਨੇ ਤੋਂ ਹੀ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕੀਤੇ ਜਾ ਸਕਦੇ ਸਨ। v3.8.51 ਤੋਂ CLI ਵਿੱਚ ਵੀ ਬਰਾਬਰ ਦੀ ਕਾਰਜਸ਼ੀਲਤਾ ਹੈ: ```bash omniroute mcp status # ਸਮਰੱਥ/ਔਨਲਾਈਨ, ਟ੍ਰਾਂਸਪੋਰਟ, ਟੂਲਾਂ ਦੀ ਗਿਣਤੀ omniroute mcp enable [--transport stdio|sse|streamable-http] omniroute mcp disable omniroute mcp restart # ਸਰਗਰਮ sse/streamable-http ਸੈਸ਼ਨਾਂ ਨੂੰ ਰੀਸੈੱਟ ਕਰਦਾ ਹੈ ``` `mcp enable`/`mcp disable`, `/api/settings` ਰਾਹੀਂ ਉਸੇ `mcpEnabled` (ਅਤੇ ਵਿਕਲਪਿਕ ਤੌਰ 'ਤੇ `mcpTransport`) ਸੈਟਿੰਗ ਨੂੰ PATCH ਕਰਦੇ ਹਨ ਜਿਸਨੂੰ ਡੈਸ਼ਬੋਰਡ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰਦਾ ਹੈ। `mcp restart`, `POST /api/mcp/restart` ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ: ਇਹ ਸਰਗਰਮ `sse`/`streamable-http` ਸੈਸ਼ਨਾਂ ਨੂੰ ਬੰਦ ਕਰ ਦਿੰਦਾ ਹੈ ਤਾਂ ਜੋ ਅਗਲੀ ਬੇਨਤੀ ਸਾਫ਼ ਢੰਗ ਨਾਲ ਮੁੜ ਸ਼ੁਰੂ ਹੋਵੇ, MCP ਅਸਮਰੱਥ ਹੋਣ 'ਤੇ `409`, ਅਤੇ `stdio` ਟ੍ਰਾਂਸਪੋਰਟ ਲਈ `501` ਵਾਪਸ ਕਰਦਾ ਹੈ (stdio ਕਲਾਇੰਟ ਆਪਣੇ ਸਬਪ੍ਰੋਸੈੱਸ ਦੇ ਖੁਦ ਮਾਲਕ ਹੁੰਦੇ ਹਨ — ਮੁੜ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਉਸੇ ਪ੍ਰੋਸੈੱਸ ਵਿੱਚ ਕੋਈ ਹੈਂਡਲ ਉਪਲਬਧ ਨਹੀਂ ਹੁੰਦਾ)। ## ਟ੍ਰਾਂਸਪੋਰਟ MCP ਸਰਵਰ ਤਿੰਨ ਟ੍ਰਾਂਸਪੋਰਟ ਉਪਲਬਧ ਕਰਦਾ ਹੈ, ਜਿਨ੍ਹਾਂ ਸਭ ਦਾ ਆਧਾਰ ਇੱਕੋ `createMcpServer()` ਫੈਕਟਰੀ ਹੈ: | ਟ੍ਰਾਂਸਪੋਰਟ | ਕਿੱਥੇ | ਕਦੋਂ ਵਰਤਣਾ ਹੈ | | :---------------- | :------------------------------------------ | :----------------------------------------------------------------- | | `stdio` | `open-sse/mcp-server/server.ts` | IDE ਏਕੀਕਰਨਾਂ ਲਈ (Claude Desktop, Cursor ਆਦਿ) | | `sse` | `POST/GET /api/mcp/sse` via `httpTransport` | ਉਹਨਾਂ ਬ੍ਰਾਊਜ਼ਰ/ਏਜੰਟ ਕਲਾਇੰਟਾਂ ਲਈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਇਵੈਂਟ ਸਟ੍ਰੀਮ ਦੀ ਲੋੜ ਹੈ | | `streamable-http` | `POST/GET/DELETE /api/mcp/stream` | ਬਹੁ-ਸੈਸ਼ਨ HTTP ਕਲਾਇੰਟਾਂ ਲਈ (`mcp-session-id` ਹੈਡਰ) | ਸਰਗਰਮ HTTP ਟ੍ਰਾਂਸਪੋਰਟ (`sse` ਜਾਂ `streamable-http`) ਦੀ ਚੋਣ `mcpTransport` ਸੈਟਿੰਗ ਦੁਆਰਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਟ੍ਰਾਂਸਪੋਰਟ ਬਦਲਣ ਨਾਲ ਦੂਜੇ ਟ੍ਰਾਂਸਪੋਰਟ ਉੱਤੇ ਮੌਜੂਦਾ ਸੈਸ਼ਨ ਬੰਦ ਹੋ ਜਾਂਦੇ ਹਨ। ### ਰਿਮੋਟ ਪਹੁੰਚ (manage-ਸਕੋਪ ਬਾਈਪਾਸ) `/api/mcp/*`, LOCAL_ONLY ਪੱਧਰ (`src/server/authz/routeGuard.ts`) ਵਿੱਚ ਹੈ—ਮੂਲ ਰੂਪ ਵਿੱਚ ਸਿਰਫ਼ ਲੂਪਬੈਕ ਹੋਸਟ (`localhost`, `127.0.0.1`, `::1`) ਹੀ ਇਸ ਤੱਕ ਪਹੁੰਚ ਸਕਦੇ ਹਨ। v3.8.2 ਤੋਂ, ਗੈਰ-ਲੂਪਬੈਕ ਕਲਾਇੰਟ ਕਨੈਕਟ ਕਰ ਸਕਦੇ ਹਨ ਜੇ ਉਹ ਅਜਿਹਾ `Authorization: Bearer ` ਪੇਸ਼ ਕਰਨ ਜਿਸ ਦੀ ਕੁੰਜੀ ਕੋਲ `manage` ਸਕੋਪ ਹੋਵੇ। ਕਿਸੇ ਟਨਲ, ਰਿਵਰਸ ਪ੍ਰਾਕਸੀ ਜਾਂ ਪਬਲਿਕ ਹੋਸਟਨੇਮ ਰਾਹੀਂ ਰਿਮੋਟ MCP ਸਰਵਰ ਤੱਕ ਪਹੁੰਚਣ ਦਾ ਇਹੀ ਇਕਲੌਤਾ ਤਰੀਕਾ ਹੈ। ```bash # manage ਸਕੋਪ ਦਿਓ: ਡੈਸ਼ਬੋਰਡ ਦਾ API Keys ਸਫ਼ਾ ਖੋਲ੍ਹੋ ਅਤੇ ਕੁੰਜੀ ਉੱਤੇ # "Management Access" ਨੂੰ ਟੌਗਲ ਕਰੋ, ਜਾਂ ਬਣਾਉਂਦੇ ਸਮੇਂ POST scopes:["manage"] ਕਰੋ। # ਫਿਰ ਕਿਸੇ ਰਿਮੋਟ MCP ਕਲਾਇੰਟ ਤੋਂ ਕਨੈਕਟ ਕਰੋ: curl -i \ -H "Host: your-public-host.example" \ -H "Authorization: Bearer sk-…" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-client","version":"0"}}}' \ https://your-public-host.example/api/mcp/stream ``` ਕੋਈ ਗੈਰ-`manage` ਕੁੰਜੀ (ਜਾਂ Bearer ਨਾ ਹੋਣਾ) `403 LOCAL_ONLY` ਵਾਪਸ ਕਰਦੀ ਹੈ। ਨਾਲ ਵਾਲੇ ਪ੍ਰੀਫਿਕਸ `/api/cli-tools/runtime/*` ਨੂੰ ਜਾਣ-ਬੁੱਝ ਕੇ ਬਾਈਪਾਸਯੋਗ ਨਹੀਂ ਬਣਾਇਆ ਗਿਆ—[Route Guard ਪੱਧਰ—Manage-ਸਕੋਪ ਛੋਟ](../security/ROUTE_GUARD_TIERS.md#manage-scope-carve-out) ਵੇਖੋ। ## IDE ਸੰਰਚਨਾ Claude Desktop, Cursor, Cline ਅਤੇ ਅਨੁਕੂਲ MCP ਕਲਾਇੰਟ ਸੈਟਅੱਪ ਲਈ [MCP ਕਲਾਇੰਟ ਸੰਰਚਨਾ](../guides/SETUP_GUIDE.md#mcp-client-configuration) ਵੇਖੋ। --- ## ਜ਼ਰੂਰੀ ਟੂਲ (14) — ਪੜਾਅ 1 | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :------------------------------ | :-------------------- | :--------------------------------------------------------------------------------------------------------------------------- | | `omniroute_get_health` | `read:health` | ਅੱਪਟਾਈਮ, ਮੈਮੋਰੀ, ਸਰਕਿਟ ਬ੍ਰੇਕਰ, ਦਰ ਸੀਮਾਵਾਂ, ਕੈਸ਼ ਅੰਕੜੇ | | `omniroute_list_combos` | `read:combos` | ਰਣਨੀਤੀਆਂ ਸਮੇਤ ਸਾਰੇ ਸੰਰਚਿਤ ਕੌਂਬੋ (ਵਿਕਲਪਿਕ ਮੈਟ੍ਰਿਕਸ) | | `omniroute_get_combo_metrics` | `read:combos` | ਕਿਸੇ ਖ਼ਾਸ ਕੌਂਬੋ ਲਈ ਕਾਰਗੁਜ਼ਾਰੀ ਮੈਟ੍ਰਿਕਸ | | `omniroute_switch_combo` | `write:combos` | ਕਿਸੇ ਕੌਂਬੋ ਨੂੰ ਸਰਗਰਮ ਜਾਂ ਅਕਿਰਿਆਸ਼ੀਲ ਕਰੋ | | `omniroute_create_combo` | `write:combos` | ਮੌਜੂਦਾ ਕੌਂਬੋ API ਰਾਹੀਂ ਇੱਕ ਪ੍ਰਮਾਣਿਤ ਕੌਂਬੋ ਬਣਾਓ | | `omniroute_check_quota` | `read:quota` | ਵਰਤਿਆ ਗਿਆ/ਕੁੱਲ ਕੋਟਾ, ਬਾਕੀ ਪ੍ਰਤੀਸ਼ਤ, ਰੀਸੈੱਟ ਸਮਾਂ, ਟੋਕਨ ਦੀ ਸਥਿਤੀ | | `omniroute_route_request` | `execute:completions` | OmniRoute ਰੂਟਿੰਗ ਰਾਹੀਂ ਚੈਟ ਪੂਰਤੀ ਬੇਨਤੀ ਭੇਜੋ | | `omniroute_cost_report` | `read:usage` | ਮਿਆਦ ਅਨੁਸਾਰ ਲਾਗਤ ਰਿਪੋਰਟ (ਸੈਸ਼ਨ/ਦਿਨ/ਹਫ਼ਤਾ/ਮਹੀਨਾ) | | `omniroute_list_models_catalog` | `read:models` | ਸਮਰੱਥਾਵਾਂ, ਸਥਿਤੀ ਅਤੇ ਕੀਮਤਾਂ ਸਮੇਤ ਪੂਰਾ ਮਾਡਲ ਕੈਟਾਲਾਗ | | `omniroute_radar_catalog` | `read:radar` | ਸਥਾਨਕ ਹਸਤਾਖਰਿਤ Radar ਕੈਟਾਲਾਗ; ਵਿਕਲਪਿਕ ਪ੍ਰਦਾਤਾ/ਪਰਿਵਾਰ ਫਿਲਟਰ | | `omniroute_tool_search` | `read:tools` | ਰਜਿਸਟਰ ਕੀਤੇ MCP ਕੈਟਾਲਾਗ ਵਿੱਚੋਂ ਟੂਲ ਖੋਜੋ | | `omniroute_web_search` | `execute:search` | ਸੰਰਚਿਤ ਖੋਜ ਪ੍ਰਦਾਤਾਵਾਂ ਰਾਹੀਂ ਵੈੱਬ ਖੋਜ। X/Twitter ਨਹੀਂ। | | `omniroute_x_search` | `execute:search` | xAI/SuperGrok ਰਾਹੀਂ X ਉੱਤੇ ਖੋਜ ਕਰੋ, ਜਾਂ Xquik API ਨਤੀਜਿਆਂ ਲਈ `xquik-search` ਚੁਣੋ। ਚੁਣੇ ਹੋਏ ਬੈਕਐਂਡ ਲਈ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਲੋੜੀਂਦੇ ਹਨ। | | `omniroute_web_fetch` | `execute:search` | ਸੰਰਚਿਤ ਫੈਚ ਪ੍ਰਦਾਤਾਵਾਂ ਰਾਹੀਂ ਵੈੱਬ ਸਮੱਗਰੀ ਪ੍ਰਾਪਤ ਕਰੋ | ## ਉੱਨਤ ਟੂਲ (11) — ਪੜਾਅ 2 | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :--------------------------------- | :----------------------------------- | :------------------------------------------------------------------------------------------ | | `omniroute_simulate_route` | `read:health`, `read:combos` | ਫਾਲਬੈਕ ਟ੍ਰੀ ਨਾਲ ਡ੍ਰਾਈ-ਰਨ ਰੂਟਿੰਗ ਸਿਮੂਲੇਸ਼ਨ | | `omniroute_set_budget_guard` | `write:budget` | ਡਿਗ੍ਰੇਡ/ਬਲਾਕ/ਅਲਰਟ ਕਾਰਵਾਈ ਵਾਲਾ ਸੈਸ਼ਨ ਬਜਟ | | `omniroute_set_routing_strategy` | `write:combos` | ਰਨਟਾਈਮ ਦੌਰਾਨ ਕੰਬੋ ਰਣਨੀਤੀ ਅੱਪਡੇਟ ਕਰੋ (ਤਰਜੀਹ/ਭਾਰਿਤ/ਆਟੋ/ਆਦਿ) | | `omniroute_set_resilience_profile` | `write:resilience` | `aggressive` / `balanced` / `conservative` ਲਚਕੀਲੇਪਣ ਪ੍ਰੀਸੈੱਟ ਲਾਗੂ ਕਰੋ | | `omniroute_test_combo` | `execute:completions`, `read:combos` | ਅਸਲ ਅੱਪਸਟ੍ਰੀਮ ਕਾਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੰਬੋ ਵਿੱਚ ਹਰੇਕ ਪ੍ਰਦਾਤਾ ਦਾ ਲਾਈਵ ਟੈਸਟ | | `omniroute_get_provider_metrics` | `read:health` | p50/p95/p99 ਲੇਟੈਂਸੀ ਅਤੇ ਸਰਕਿਟ ਬ੍ਰੇਕਰ ਸਥਿਤੀ ਸਮੇਤ ਪ੍ਰਤੀ-ਪ੍ਰਦਾਤਾ ਮੈਟ੍ਰਿਕਸ | | `omniroute_best_combo_for_task` | `read:combos`, `read:health` | ਬਜਟ/ਲੇਟੈਂਸੀ ਸੀਮਾਵਾਂ ਦੇ ਨਾਲ ਕਾਰਜ ਦੀ ਕਿਸਮ ਅਨੁਸਾਰ ਕੰਬੋ ਦੀ ਸਿਫ਼ਾਰਸ਼ | | `omniroute_explain_route` | `read:health`, `read:usage` | ਸਮਝਾਓ ਕਿ ਬੇਨਤੀ ਕਿਸੇ ਪ੍ਰਦਾਤਾ ਵੱਲ ਕਿਉਂ ਰੂਟ ਕੀਤੀ ਗਈ ਸੀ (ਸਕੋਰਿੰਗ ਕਾਰਕ + ਫਾਲਬੈਕ) | | `omniroute_get_session_snapshot` | `read:usage` | ਪੂਰਾ ਸੈਸ਼ਨ ਸਨੈਪਸ਼ਾਟ: ਲਾਗਤ, ਟੋਕਨ, ਪ੍ਰਮੁੱਖ ਮਾਡਲ/ਪ੍ਰਦਾਤਾ, ਤਰੁੱਟੀਆਂ, ਬਜਟ ਗਾਰਡ | | `omniroute_db_health_check` | `read:health`, `write:resilience` | ਟੁੱਟੇ ਕੰਬੋ ਹਵਾਲਿਆਂ/ਅਨਾਥ ਕਤਾਰਾਂ ਵਰਗੇ ਡੇਟਾਬੇਸ ਡ੍ਰਿਫਟ ਦੀ ਜਾਂਚ (ਅਤੇ ਵਿਕਲਪਿਕ ਤੌਰ 'ਤੇ ਆਟੋ-ਮੁਰੰਮਤ) | | `omniroute_sync_pricing` | `pricing:write` | ਬਾਹਰੀ ਸਰੋਤਾਂ (LiteLLM) ਤੋਂ ਕੀਮਤ ਡੇਟਾ ਸਿੰਕ ਕਰੋ; `dryRun` ਸਮਰਥਿਤ ਹੈ | ## ਕੈਸ਼ ਟੂਲ (2) | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :---------------------- | :------------ | :------------------------------------------------------ | | `omniroute_cache_stats` | `read:cache` | ਸਿਮੈਂਟਿਕ ਕੈਸ਼, ਪ੍ਰੌਂਪਟ-ਕੈਸ਼ ਅਤੇ ਆਈਡੈਂਪੋਟੈਂਸੀ ਅੰਕੜੇ | | `omniroute_cache_flush` | `write:cache` | ਕੈਸ਼ ਨੂੰ ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਜਾਂ ਸਿਗਨੇਚਰ/ਮਾਡਲ ਅਨੁਸਾਰ ਫਲੱਸ਼ ਕਰੋ | ## ਕੰਪ੍ਰੈਸ਼ਨ ਟੂਲ (13) | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :---------------------------------- | :------------------ | :------------------------------------------------------------------------------------------------------------- | | `omniroute_compression_status` | `read:compression` | ਕੰਪ੍ਰੈਸ਼ਨ ਸੈਟਿੰਗਾਂ, ਵਿਸ਼ਲੇਸ਼ਣ ਸੰਖੇਪ ਅਤੇ ਕੈਸ਼-ਅਵੇਅਰ ਅੰਕੜੇ (`analytics.mcpDescriptionCompression` ਮੈਟਾਡੇਟਾ ਸਮੇਤ) | | `omniroute_compression_configure` | `write:compression` | ਕੰਪ੍ਰੈਸ਼ਨ ਮੋਡ, ਥ੍ਰੈਸ਼ਹੋਲਡ, ਟੀਚਾ ਅਨੁਪਾਤ, ਸਿਸਟਮ-ਪ੍ਰੌਂਪਟ ਸੰਭਾਲ ਅਤੇ MCP ਵੇਰਵਾ ਕੰਪ੍ਰੈਸ਼ਨ ਟੌਗਲ ਕੌਂਫਿਗਰ ਕਰੋ | | `omniroute_set_compression_engine` | `write:compression` | ਸਰਗਰਮ ਇੰਜਣ (off/caveman/rtk/stacked) ਅਤੇ Caveman/RTK ਤੀਬਰਤਾ ਚੁਣੋ | | `omniroute_list_compression_combos` | `read:compression` | ਨਾਮਿਤ ਕੰਪ੍ਰੈਸ਼ਨ ਕੰਬੋ ਅਤੇ ਉਨ੍ਹਾਂ ਦੀਆਂ ਇੰਜਣ ਪਾਈਪਲਾਈਨਾਂ ਦੀ ਸੂਚੀ ਦਿਖਾਓ | | `omniroute_compression_combo_stats` | `read:compression` | ਕੰਪ੍ਰੈਸ਼ਨ ਕੰਬੋ ਅਤੇ ਇੰਜਣ ਅਨੁਸਾਰ ਸਮੂਹਬੱਧ ਵਿਸ਼ਲੇਸ਼ਣ | | `omniroute_ccr_store` | `write:compression` | ਸੀਮਿਤ ਇਨ-ਮੈਮੋਰੀ CCR ਸਟੋਰ ਵਿੱਚ ਕਾਲਰ-ਅਲੱਗ ਕੀਤੀ ਸਮੱਗਰੀ ਸਟੋਰ ਕਰੋ ਅਤੇ ਮਾਰਕਰ ਦੇ ਨਾਲ `ccr://` ਹਵਾਲਾ ਵਾਪਸ ਕਰੋ | | `omniroute_ccr_retrieve` | `read:compression` | CCR ਸਮੱਗਰੀ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਜਾਂ ਹੈੱਡ, ਟੇਲ, ਲਾਈਨਾਂ, grep ਅਤੇ ਅੰਕੜਾ ਮੋਡਾਂ ਨਾਲ ਪ੍ਰਾਪਤ ਕਰੋ | | `omniroute_ccr_inspect` | `read:compression` | ਸਮੱਗਰੀ ਵਾਪਸ ਕੀਤੇ ਬਿਨਾਂ ਕਾਲਰ ਦੀ ਮਲਕੀਅਤ ਵਾਲੇ CCR ਮੈਟਾਡੇਟਾ ਦੀ ਜਾਂਚ ਕਰੋ | | `omniroute_ccr_list` | `read:compression` | ਕਾਲਰ ਦੀ ਮਲਕੀਅਤ ਵਾਲੇ CCR ਬਲਾਕਾਂ ਲਈ ਪੰਨਾਬੱਧ ਮੈਟਾਡੇਟਾ ਦੀ ਸੂਚੀ ਦਿਖਾਓ | | `omniroute_ccr_delete` | `write:compression` | ਕਾਲਰ ਦੀ ਮਲਕੀਅਤ ਵਾਲਾ CCR ਬਲਾਕ ਮਿਟਾਓ | | `omniroute_ccr_stats` | `read:compression` | ਕਾਲਰ-ਸਕੋਪਡ ਮੈਮੋਰੀ ਵਰਤੋਂ, ਜੀਵਨ-ਚੱਕਰ ਕਾਊਂਟਰ ਅਤੇ ਸਟੋਰ ਸੀਮਾਵਾਂ ਦੀ ਰਿਪੋਰਟ ਕਰੋ | | `omniroute_rtk_discover` | `read:compression` | ਆਪਟ-ਇਨ RTK ਆਉਟਪੁੱਟ ਨਮੂਨਿਆਂ ਵਿੱਚ ਦੁਹਰਾਉਂਦੇ ਸ਼ੋਰ ਦੀ ਖੋਜ ਕਰੋ | | `omniroute_rtk_learn` | `read:compression` | ਆਪਟ-ਇਨ ਨਮੂਨਿਆਂ ਤੋਂ ਸਮੀਖਿਆਯੋਗ RTK ਫਿਲਟਰ ਡਰਾਫਟ ਤਿਆਰ ਕਰੋ | CCR ਐਂਟਰੀਆਂ ਸਿਰਫ਼ ਇਨ-ਮੈਮੋਰੀ ਹਨ ਅਤੇ ਰੀਸਟਾਰਟ ਹੋਣ 'ਤੇ ਗਾਇਬ ਹੋ ਜਾਂਦੀਆਂ ਹਨ। ਹਰੇਕ ਬਲਾਕ 2 MiB ਤੱਕ, ਹਰੇਕ ਪ੍ਰਿੰਸੀਪਲ 16 MiB ਤੱਕ ਅਤੇ ਗਲੋਬਲ ਸਟੋਰ 64 MiB ਤੱਕ ਸੀਮਿਤ ਹੈ। ਐਂਟਰੀਆਂ ਲਈ ਡਿਫੌਲਟ TTL 24 ਘੰਟੇ ਹੈ (ਵੱਧ ਤੋਂ ਵੱਧ ਸੱਤ ਦਿਨ)। ਪੂਰੀ MCP ਪ੍ਰਾਪਤੀ 256 KiB ਤੱਕ ਸੀਮਿਤ ਹੈ; ਵੱਡੇ ਬਲਾਕ ਰੇਂਜਡ ਅਤੇ grep ਮੋਡਾਂ ਰਾਹੀਂ ਉਪਲਬਧ ਰਹਿੰਦੇ ਹਨ। ਸਟੋਰੇਜ, ਪ੍ਰਾਪਤੀ, ਸੂਚੀਕਰਨ, ਜਾਂਚ, ਮਿਟਾਉਣਾ ਅਤੇ ਅੰਕੜੇ ਪ੍ਰਮਾਣਿਤ API-ਕੁੰਜੀ ਪ੍ਰਿੰਸੀਪਲ ਅਨੁਸਾਰ ਅਲੱਗ ਰੱਖੇ ਜਾਂਦੇ ਹਨ। ਆਡਿਟ ਰਿਕਾਰਡਾਂ ਵਿੱਚ ਹੈਸ਼ ਅਤੇ ਆਕਾਰ ਦਾ ਮੈਟਾਡੇਟਾ ਹੁੰਦਾ ਹੈ, ਸਮੱਗਰੀ ਕਦੇ ਨਹੀਂ। `omniroute_compression_status`, `analytics.mcpDescriptionCompression` ਦੇ ਅਧੀਨ MCP ਵਰਣਨ ਕੰਪਰੈਸ਼ਨ ਦੀ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ। ਇਹ ਮੁੱਲ MCP ਦੀਆਂ ਸੂਚੀਬੱਧ ਕੀਤੀਆਂ ਜਾ ਸਕਣ ਵਾਲੀਆਂ ਵਰਣਨਾਵਾਂ (`tools`, `prompts`, `resources`, ਅਤੇ `resourceTemplates`) ਲਈ ਮੈਟਾਡੇਟਾ-ਆਕਾਰ ਦੇ ਅਨੁਮਾਨ ਹਨ; ਇਹ ਪ੍ਰਦਾਤਾ ਵਰਤੋਂ ਦੀਆਂ ਰਸੀਦਾਂ ਨਹੀਂ ਹਨ ਅਤੇ ਇਨ੍ਹਾਂ ਨੂੰ `source: "mcp_metadata_estimate"` ਨਾਲ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ### MCP ਐਕਸੈਸਿਬਿਲਿਟੀ ਟ੍ਰੀ ਫਿਲਟਰ (v3.8.0) ਉਪਰੋਕਤ ਕੰਪਰੈਸ਼ਨ ਟੂਲਾਂ ਤੋਂ ਵੱਖਰੇ ਤੌਰ 'ਤੇ, OmniRoute ਵਿੱਚ ਇੱਕ ਪੋਸਟ-ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਫਿਲਟਰ ਸ਼ਾਮਲ ਹੈ ਜੋ MCP ਬ੍ਰਾਊਜ਼ਰ/ਐਕਸੈਸਿਬਿਲਿਟੀ ਟੂਲਾਂ ਦੇ **ਟੂਲ ਨਤੀਜਿਆਂ** ਨੂੰ ਏਜੰਟ ਕੋਲ ਵਾਪਸ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਕੰਪ੍ਰੈੱਸ ਕਰਦਾ ਹੈ। ਇਹ ਫਿਲਟਰ ਆਪਣੇ ਆਪ ਵਿੱਚ ਕੋਈ ਟੂਲ ਨਹੀਂ ਹੈ — ਇਹ ਅਜਿਹੇ ਕਿਸੇ ਵੀ ਟੂਲ ਨਤੀਜੇ ਉੱਤੇ ਪਾਰਦਰਸ਼ੀ ਢੰਗ ਨਾਲ ਚੱਲਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਵਿਸਤ੍ਰਿਤ ਐਕਸੈਸਿਬਿਲਿਟੀ-ਟ੍ਰੀ ਜਾਂ ਬ੍ਰਾਊਜ਼ਰ-ਸਨੈਪਸ਼ਾਟ ਟੈਕਸਟ (≥2000 ਅੱਖਰ) ਸ਼ਾਮਲ ਹੋਵੇ। ਮੁੱਖ ਵਿਹਾਰ: - ≥30 ਲਗਾਤਾਰ ਦੁਹਰਾਈਆਂ ਗਈਆਂ ਸਿਬਲਿੰਗ ਲਾਈਨਾਂ ਨੂੰ ਸ਼ੁਰੂਆਤੀ + ਅੰਤਿਮ ਸੰਖੇਪ ਵਿੱਚ ਸਮੇਟਦਾ ਹੈ - Playwright/ਕੰਪਿਊਟਰ-ਵਰਤੋਂ ਲਈ ਲੋੜੀਂਦੇ `[ref=eXX]` ਐਂਕਰਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ - ਬਹੁਤ ਵੱਡੇ ਟੈਕਸਟ (>50,000 ਅੱਖਰ) ਨੂੰ ਨੈਵੀਗੇਸ਼ਨ ਸੰਕੇਤ ਦੇ ਨਾਲ ਨਿਰਧਾਰਤ ਸੀਮਾ 'ਤੇ ਕੱਟਦਾ ਹੈ - ਉਮੀਦ ਕੀਤੀ ਬਚਤ: ਬ੍ਰਾਊਜ਼ਰ ਸਨੈਪਸ਼ਾਟ ਪੇਲੋਡਾਂ ਉੱਤੇ **60–80%** ਸੰਰਚਨਾ: ਗਲੋਬਲ ਸੈਟਿੰਗਾਂ ਵਿੱਚ `compression.mcpAccessibility` (ਮਾਈਗ੍ਰੇਸ਼ਨ 056)। ਲਾਗੂਕਰਨ: `open-sse/services/compression/engines/mcpAccessibility/`। ਪੂਰੇ ਦਸਤਾਵੇਜ਼: [ਕੰਪਰੈਸ਼ਨ ਇੰਜਣ — MCP ਐਕਸੈਸਿਬਿਲਿਟੀ ਟ੍ਰੀ ਫਿਲਟਰ](../compression/COMPRESSION_ENGINES.md#mcp-accessibility-tree-filter)। ਇਨ੍ਹਾਂ ਟੂਲਾਂ ਦੇ ਪਿੱਛੇ ਮੌਜੂਦ ਰਨਟਾਈਮ ਕੰਪਰੈਸ਼ਨ ਮਾਡਲ ਲਈ [ਕੰਪਰੈਸ਼ਨ ਇੰਜਣ](../compression/COMPRESSION_ENGINES.md) ਅਤੇ [RTK ਕੰਪਰੈਸ਼ਨ](../compression/RTK_COMPRESSION.md) ਵੇਖੋ। ## 1Proxy ਟੂਲ (3) | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :-------------------------- | :------------- | :----------------------------------------------------------------------------------- | | `omniroute_oneproxy_fetch` | `read:proxies` | 1proxy ਮਾਰਕੀਟਪਲੇਸ ਤੋਂ ਮੁਫ਼ਤ ਪ੍ਰੌਕਸੀਆਂ ਪ੍ਰਾਪਤ ਕਰੋ (ਪ੍ਰੋਟੋਕੋਲ/ਦੇਸ਼/ਗੁਣਵੱਤਾ/ਸੀਮਾ ਫਿਲਟਰ) | | `omniroute_oneproxy_rotate` | `read:proxies` | ਰਣਨੀਤੀ ਅਨੁਸਾਰ ਅਗਲੀ ਉਪਲਬਧ ਪ੍ਰੌਕਸੀ ਪ੍ਰਾਪਤ ਕਰੋ (`random` / `quality` / `sequential`) | | `omniroute_oneproxy_stats` | `read:proxies` | ਪੂਲ ਅੰਕੜੇ, ਸਿੰਕ ਸਥਿਤੀ, ਪ੍ਰੋਟੋਕੋਲ ਅਤੇ ਦੇਸ਼ ਅਨੁਸਾਰ ਵੰਡ | ## ਮੈਮੋਰੀ ਟੂਲ (3) `open-sse/mcp-server/tools/memoryTools.ts` ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ। ਪ੍ਰਮਾਣੀਕਰਨ/ਸਕੋਪ ਮਿਆਰੀ MCP ਸਕੋਪ ਪਾਈਪਲਾਈਨ ਰਾਹੀਂ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :------------------------ | :------------- | :------------------------------------------------------------------------------------------------------------ | | `omniroute_memory_search` | `read:memory` | ਟੋਕਨ-ਬਜਟ ਲਾਗੂਕਰਨ ਨਾਲ ਪੁੱਛਗਿੱਛ / ਕਿਸਮ / API ਕੁੰਜੀ ਅਨੁਸਾਰ ਮੈਮੋਰੀਆਂ ਖੋਜੋ | | `omniroute_memory_add` | `write:memory` | ਇੱਕ ਨਵੀਂ ਮੈਮੋਰੀ ਐਂਟਰੀ ਸ਼ਾਮਲ ਕਰੋ (`factual` / `episodic` / `procedural` / `semantic`) | | `omniroute_memory_clear` | `write:memory` | ਕਿਸੇ API ਕੁੰਜੀ ਲਈ ਮੈਮੋਰੀਆਂ ਸਾਫ਼ ਕਰੋ, ਵਿਕਲਪਿਕ ਤੌਰ 'ਤੇ ਕਿਸਮ ਜਾਂ `olderThan` ਟਾਈਮਸਟੈਂਪ ਅਨੁਸਾਰ ਫਿਲਟਰ ਕੀਤੀਆਂ ਹੋਈਆਂ | ## ਸਕਿੱਲ ਟੂਲ (4) `open-sse/mcp-server/tools/skillTools.ts` ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ। `src/lib/skills/registry` + `src/lib/skills/executor` ਦੁਆਰਾ ਸਮਰਥਿਤ। | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :---------------------------- | :--------------- | :------------------------------------------------------------------------------------------- | | `omniroute_skills_list` | `read:skills` | API ਕੁੰਜੀ, ਨਾਮ ਜਾਂ ਸਮਰੱਥ ਸਥਿਤੀ ਅਨੁਸਾਰ ਵਿਕਲਪਿਕ ਫਿਲਟਰਿੰਗ ਨਾਲ ਰਜਿਸਟਰ ਕੀਤੀਆਂ ਸਕਿੱਲਾਂ ਦੀ ਸੂਚੀ ਦਿਓ | | `omniroute_skills_enable` | `write:skills` | ID ਰਾਹੀਂ ਕਿਸੇ ਖ਼ਾਸ ਸਕਿੱਲ ਨੂੰ ਸਮਰੱਥ ਜਾਂ ਅਸਮਰੱਥ ਕਰੋ | | `omniroute_skills_execute` | `execute:skills` | ਪ੍ਰਦਾਨ ਕੀਤੇ ਇਨਪੁੱਟ ਨਾਲ ਇੱਕ ਸਕਿੱਲ ਚਲਾਓ ਅਤੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਰਿਕਾਰਡ ਵਾਪਸ ਕਰੋ | | `omniroute_skills_executions` | `read:skills` | ਹਾਲੀਆ ਸਕਿੱਲ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਇਤਿਹਾਸ ਦੀ ਸੂਚੀ ਦਿਓ | ## Notion ਸੰਦਰਭ ਸਰੋਤ (6) `open-sse/mcp-server/tools/notionTools.ts` ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ। ਟੋਕਨ `src/lib/db/notion.ts` ਰਾਹੀਂ `key_value` ਟੇਬਲ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। REST ਕਲਾਇੰਟ `src/lib/notion/api.ts` ਵਿੱਚ ਹੈ। ਸੈਟਿੰਗਾਂ API `src/app/api/settings/notion/route.ts` ਵਿੱਚ ਹੈ। ਡੈਸ਼ਬੋਰਡ UI `src/app/(dashboard)/dashboard/endpoint/components/NotionSourceCard.tsx` ਵਿੱਚ ਹੈ। ਆਪਣਾ Notion ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਟੋਕਨ Endpoint ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ **ਸੰਦਰਭ ਸਰੋਤ** ਟੈਬ ਤੋਂ, ਜਾਂ REST API ਰਾਹੀਂ ਕੌਂਫਿਗਰ ਕਰੋ: ```bash # ਟੋਕਨ ਸੈੱਟ ਕਰੋ curl -X POST http://localhost:20128/api/settings/notion \ -H "Content-Type: application/json" \ -d '{"token": "ntn_..."}' # ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰੋ curl http://localhost:20128/api/settings/notion # ਡਿਸਕਨੈਕਟ ਕਰੋ curl -X DELETE http://localhost:20128/api/settings/notion ``` | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :--------------------------- | :------------- | :-------------------------------------------------------------------- | | `notion_search` | `read:notion` | ਸਾਰੇ ਪੰਨਿਆਂ ਅਤੇ ਡੇਟਾਬੇਸਾਂ ਵਿੱਚ ਪੂਰਾ-ਟੈਕਸਟ ਖੋਜ ਕਰੋ | | `notion_get_page` | `read:notion` | ਕਿਸੇ ਪੰਨੇ ਨੂੰ ਉਸ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਸਮੇਤ ID ਰਾਹੀਂ ਪ੍ਰਾਪਤ ਕਰੋ | | `notion_list_block_children` | `read:notion` | ਕਿਸੇ ਪੰਨੇ ਜਾਂ ਬਲਾਕ ਦੇ ਚਾਈਲਡ ਬਲਾਕਾਂ ਦੀ ਸੂਚੀ ਦਿਓ | | `notion_query_database` | `read:notion` | ਫਿਲਟਰਾਂ, ਕ੍ਰਮਬੱਧਤਾਵਾਂ ਅਤੇ ਪੰਨੇਬੰਦੀ ਨਾਲ ਕਿਸੇ ਡੇਟਾਬੇਸ ਬਾਰੇ ਪੁੱਛਗਿੱਛ ਕਰੋ | | `notion_get_database` | `read:notion` | ID ਰਾਹੀਂ ਡੇਟਾਬੇਸ ਸਕੀਮਾ ਪ੍ਰਾਪਤ ਕਰੋ | | `notion_append_blocks` | `write:notion` | ਕਿਸੇ ਪੇਰੈਂਟ ਬਲਾਕ ਵਿੱਚ ਚਾਈਲਡ ਬਲਾਕ ਜੋੜੋ (ਹਰੇਕ ਬੇਨਤੀ ਲਈ ਵੱਧ ਤੋਂ ਵੱਧ 100) | ## ਏਜੰਟ ਸਕਿੱਲ ਕੈਟਾਲਾਗ ਟੂਲ (3) `open-sse/mcp-server/tools/agentSkillTools.ts` ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਹਨ। `src/lib/agentSkills/catalog` ਦੁਆਰਾ ਸਮਰਥਿਤ ਹਨ। ਇਹ ਟੂਲ 45-ਐਂਟਰੀ ਵਾਲੇ Agent Skills ਦਸਤਾਵੇਜ਼ੀ ਕੈਟਾਲਾਗ ਨੂੰ MCP ਕਲਾਇੰਟਾਂ ਅਤੇ ਬਾਹਰੀ ਏਜੰਟਾਂ ਲਈ ਉਪਲਬਧ ਕਰਵਾਉਂਦੇ ਹਨ। ਸਕੋਪ: `read:catalog`। | ਟੂਲ | ਸਕੋਪ | ਵੇਰਵਾ | | :-------------------------------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------- | | `omniroute_agent_skills_list` | `read:catalog` | ਵਿਕਲਪਿਕ `category` (api\|cli) ਅਤੇ `area` ਫਿਲਟਰਾਂ ਨਾਲ ਸਾਰੇ 45 ਏਜੰਟ ਸਕਿੱਲਾਂ ਦੀ ਸੂਚੀ ਦਿੰਦਾ ਹੈ; ਮੈਟਾਡੇਟਾ + ਕਵਰੇਜ ਵਾਪਸ ਕਰਦਾ ਹੈ | | `omniroute_agent_skills_get` | `read:catalog` | ਕੈਨੋਨਿਕਲ `id` ਰਾਹੀਂ ਕਿਸੇ ਇੱਕ ਸਕਿੱਲ ਲਈ ਪੂਰਾ ਮੈਟਾਡੇਟਾ + SKILL.md ਸਮੱਗਰੀ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ | | `omniroute_agent_skills_coverage` | `read:catalog` | ਕਵਰੇਜ ਅੰਕੜੇ: ਕੈਟਾਲਾਗ ਦੇ ਕੁੱਲ ਅੰਕੜਿਆਂ ਦੇ ਮੁਕਾਬਲੇ ਫਾਈਲ-ਸਿਸਟਮ ਉੱਤੇ 23 API, 21 CLI ਅਤੇ 1 config ਸਕਿੱਲਾਂ ਵਿੱਚੋਂ ਕਿੰਨਿਆਂ ਕੋਲ SKILL.md ਫਾਈਲਾਂ ਹਨ | ਪੂਰੇ ਕੈਟਾਲਾਗ ਅਤੇ ਬਾਹਰੀ ਏਜੰਟਾਂ ਦੁਆਰਾ ਇਸਦੀ ਵਰਤੋਂ ਦੇ ਤਰੀਕੇ ਲਈ [AGENT-SKILLS.md](./AGENT-SKILLS.md) ਵੇਖੋ। ## ਸੰਬੰਧਿਤ ਫਰੇਮਵਰਕ (v3.8.0) ਉੱਪਰ ਦਿੱਤੀ MCP ਟੂਲ ਸੂਚੀ (110 ਵਿਲੱਖਣ ਟੂਲ, `countUniqueMcpTools()` ਦੁਆਰਾ ਗਿਣੇ ਗਏ) ਨੂੰ ਜਾਣ-ਬੁੱਝ ਕੇ ਰਨਟਾਈਮ ਰਾਊਟਿੰਗ/ਕੈਸ਼/ਕੰਪ੍ਰੈਸ਼ਨ/ਮੈਮੋਰੀ/ਸਕਿੱਲ/ਪ੍ਰੌਕਸੀ/ਕਾਂਟੈਕਸਟ-ਸਰੋਤ ਕਾਰਵਾਈਆਂ ਤੱਕ ਸੀਮਿਤ ਰੱਖਿਆ ਗਿਆ ਹੈ। v3.8.0 ਵਿੱਚ MCP ਸਰਵਰ ਦੇ ਨਾਲ ਦੋ ਨਜ਼ਦੀਕੀ ਫਰੇਮਵਰਕ ਵੀ ਸ਼ਾਮਲ ਹਨ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਦਸਤਾਵੇਜ਼ਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ: ### ਕਲਾਊਡ ਏਜੰਟ ਕਲਾਊਡ ਏਜੰਟ ਵੱਖਰੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਚੱਲਣ ਵਾਲੇ AI ਕੋਡਿੰਗ ਏਜੰਟ (codex-cloud, cursor-cloud, devin, jules) ਹਨ, ਜੋ LLM ਪ੍ਰਦਾਤਾਵਾਂ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਉਸੇ ਕਨੈਕਸ਼ਨ ਮਾਡਲ ਰਾਹੀਂ OmniRoute ਨਾਲ ਜੋੜੇ ਗਏ ਹਨ। ਉਹ ਆਪਣੇ REST ਇੰਟਰਫੇਸ (`/api/v1/agents/*`) ਰਾਹੀਂ ਉਪਲਬਧ ਹਨ ਅਤੇ MCP ਟੂਲ ਕੈਟਾਲਾਗ ਦਾ ਹਿੱਸਾ **ਨਹੀਂ** ਹਨ — ਕਿਸੇ ਕਲਾਊਡ ਏਜੰਟ ਨੂੰ ਕਾਲ ਕਰਨ ਨਾਲ ਕੋਈ MCP ਸਕੋਪ ਵਰਤਿਆ ਨਹੀਂ ਜਾਂਦਾ। - ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ: `src/lib/cloudAgent/` (`registry.ts`, `agents/codex.ts`, `agents/cursor.ts`, `agents/devin.ts`, `agents/jules.ts`)। - ਜੀਵਨ-ਚੱਕਰ: `createTask`, `getStatus`, `approvePlan`, `sendMessage`, `listSources`। - ਦਸਤਾਵੇਜ਼: [docs/frameworks/CLOUD_AGENT.md](./CLOUD_AGENT.md)। ### ਗਾਰਡਰੇਲ ਗਾਰਡਰੇਲ ਚਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ/ਬਾਅਦ ਦੇ ਫਿਲਟਰ (vision-bridge, pii-masker, prompt-injection) ਹਨ, ਜੋ ਚੈਟ ਪਾਈਪਲਾਈਨ ਦੇ ਅੰਦਰ ਲਾਗੂ ਹੁੰਦੇ ਹਨ। ਇਹ MCP ਟੂਲ/ਰੂਟ ਪਰਤ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਚੱਲਦੇ ਹਨ ਅਤੇ ਆਡਿਟ ਪਾਈਪਲਾਈਨ ਨੂੰ ਸੰਰਚਿਤ ਉਲੰਘਣਾਵਾਂ ਭੇਜਦੇ ਹਨ; ਇਨ੍ਹਾਂ ਨੂੰ MCP ਟੂਲਾਂ ਵਜੋਂ ਨਹੀਂ ਬੁਲਾਇਆ ਜਾਂਦਾ। - ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ: `src/lib/guardrails/`। - ਦਸਤਾਵੇਜ਼: [docs/security/GUARDRAILS.md](../security/GUARDRAILS.md)। ਜਦੋਂ ਬਲੌਕ ਹੋਈ ਦਿਸਣ ਵਾਲੀ ਕਿਸੇ MCP ਕਾਲ ਨੂੰ ਡੀਬੱਗ ਕਰ ਰਹੇ ਹੋਵੋ, ਤਾਂ MCP ਆਡਿਟ ਲੌਗ (`scope_denied:*` ਐਂਟਰੀਆਂ) ਅਤੇ ਗਾਰਡਰੇਲ ਆਡਿਟ ਟ੍ਰੇਲ—ਦੋਵੇਂ ਦੀ ਜਾਂਚ ਕਰੋ—ਕੋਈ ਬੇਨਤੀ MCP ਸਕੋਪ ਲਾਗੂਕਰਨ ਪਰਤ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ **ਪਹਿਲਾਂ** ਹੀ ਕਿਸੇ ਗਾਰਡਰੇਲ ਦੁਆਰਾ ਰੱਦ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। --- ## REST API ਐਂਡਪੌਇੰਟ | ਐਂਡਪੌਇੰਟ | ਵਿਧੀ | ਵੇਰਵਾ | ਪ੍ਰਮਾਣੀਕਰਨ | | :--------------------- | :-------------------- | :---------------------------------------------------------------------------------------------- | :-------------------- | | `/api/mcp/status` | `GET` | ਸਰਵਰ ਸਥਿਤੀ: ਹਾਰਟਬੀਟ, HTTP ਟ੍ਰਾਂਸਪੋਰਟ ਸਥਿਤੀ, ਆਡਿਟ ਸਰਗਰਮੀ ਦਾ ਸਾਰ | ਪ੍ਰਬੰਧਨ (ਸੈਸ਼ਨ/ਐਡਮਿਨ) | | `/api/mcp/tools` | `GET` | ਟੂਲ ਕੈਟਾਲਾਗ (ਨਾਮ, ਵੇਰਵਾ, ਸਕੋਪ, ਪੜਾਅ, ਸਰੋਤ ਐਂਡਪੌਇੰਟ) | ਪ੍ਰਬੰਧਨ | | `/api/mcp/sse` | `GET` / `POST` | SSE ਟ੍ਰਾਂਸਪੋਰਟ ਐਂਡਪੌਇੰਟ (`mcpEnabled` + `mcpTransport === "sse"` ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ) | API ਕੁੰਜੀ + ਸਕੋਪ | | `/api/mcp/stream` | `POST`/`GET`/`DELETE` | ਸਟ੍ਰੀਮਯੋਗ HTTP ਟ੍ਰਾਂਸਪੋਰਟ (`mcp-session-id` ਹੈਡਰ ਵਰਤਦਾ ਹੈ; `DELETE` ਸੈਸ਼ਨ ਨੂੰ ਸਮਾਪਤ ਕਰਦਾ ਹੈ) | API ਕੁੰਜੀ + ਸਕੋਪ | | `/api/mcp/audit` | `GET` | `mcp_tool_audit` ਤੋਂ ਆਡਿਟ ਲੌਗ ਐਂਟਰੀਆਂ (ਫਿਲਟਰ: `limit`, `offset`, `tool`, `success`, `apiKeyId`) | ਪ੍ਰਬੰਧਨ | | `/api/mcp/audit/stats` | `GET` | ਇਕੱਠੇ ਕੀਤੇ ਆਡਿਟ ਅੰਕੜੇ (`totalCalls`, `successRate`, `avgDurationMs`, ਪ੍ਰਮੁੱਖ ਟੂਲ) | ਪ੍ਰਬੰਧਨ | ਸਰੋਤ ਫਾਈਲਾਂ: `src/app/api/mcp/{status,tools,sse,stream,audit,audit/stats}/route.ts`। SSE ਅਤੇ ਸਟ੍ਰੀਮਯੋਗ HTTP—ਦੋਵੇਂ ਟ੍ਰਾਂਸਪੋਰਟ ਉਦੋਂ ਤੱਕ ਬਲੌਕ ਰਹਿੰਦੇ ਹਨ, ਜਦੋਂ ਤੱਕ ਸੈਟਿੰਗਾਂ ਵਿੱਚ MCP ਸਰਵਰ ਸਮਰੱਥ (`mcpEnabled`) ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਅਤੇ ਢੁਕਵਾਂ `mcpTransport` ਨਹੀਂ ਚੁਣਿਆ ਜਾਂਦਾ। ਜੇ ਗਲਤ ਟ੍ਰਾਂਸਪੋਰਟ ਕੌਂਫਿਗਰ ਕੀਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਰੂਟ ਸੈਟਿੰਗਾਂ ਬਦਲਣ ਦੇ ਸੰਕੇਤ ਨਾਲ HTTP 400 ਵਾਪਸ ਕਰਦਾ ਹੈ। --- ## ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਸਕੋਪ MCP ਟੂਲ ਕਾਲਰ ਤੋਂ ਸਕੋਪ ਸਤਰਾਂ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ। ਇਹ ਜਾਂਚ ਤਿੰਨ ਸੁਤੰਤਰ ਨਾਮਸਥਾਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਇੱਕ ਚੈਕਰ ਤੋਂ ਪਾਸ ਹੋਣਾ ਦੂਜਿਆਂ ਤੋਂ ਪਾਸ ਹੋਣਾ ਨਹੀਂ ਹੈ। ਨਿਯਮ [ਤਿੰਨ ਸਕੋਪ ਨਾਮਸਥਾਨ](#three-scope-namespaces) ਹਨ। ਟੂਲ ਕੈਟਾਲਾਗ [MCP ਟੂਲ ਸਕੋਪ](#mcp-tool-scopes) ਹੈ। ### ਤਿੰਨ ਸਕੋਪ ਨਾਮਸਥਾਨ ਇੱਕ API ਕੁੰਜੀ 'ਤੇ `manage`, ਇੱਕ MCP ਟੂਲ 'ਤੇ `read:compression`, ਅਤੇ ਇੱਕ `oma_live_…` ਐਕਸੈਸ ਟੋਕਨ 'ਤੇ `read` ਤਿੰਨ ਵੱਖਰੀਆਂ ਗ੍ਰਾਂਟਾਂ ਹਨ। ਕਾਲਰ ਜੋ ਇੱਕ `read` ਐਕਸੈਸ ਟੋਕਨ ਨੂੰ ਇੱਕ ਪਰਿਵਰਤਨਸ਼ੀਲ ਪ੍ਰਬੰਧਨ ਰੂਟ 'ਤੇ ਭੇਜਦੇ ਹਨ, ਉਹਨਾਂ ਨੂੰ HTTP 403 `Access token scope 'read' is insufficient; 'write' required.` ਮਿਲਦਾ ਹੈ। ਇਹ ਰੈਂਕ `scopeSatisfies` ਹੈ। ਇਹ MCP ਸਾਰਣੀ ਦੀ ਸਲਾਹ ਨਹੀਂ ਲੈਂਦਾ, ਅਤੇ MCP ਮੈਚਰ ਇਸਦੀ ਸਲਾਹ ਨਹੀਂ ਲੈਂਦਾ। | ਨਾਮਸਥਾਨ | ਪ੍ਰਮਾਣ ਪੱਤਰ | ਚੈਕਰ | ਇੱਕ ਪਾਸ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ | | :---------------- | :------------------------------------------------------------- | :------------------------ | :------------------------------------------------- | | API-ਕੁੰਜੀ ਪ੍ਰਬੰਧਨ | `api_keys.scopes` | `hasManageScope` | ਉਸ ਬੀਅਰਰ ਕੁੰਜੀ ਲਈ ਪ੍ਰਬੰਧਨ REST | | API-ਕੁੰਜੀ ਐਡਿਟਿਵ | ਉਹੀ ਐਰੇ, ਇੱਕ ਸਹੀ ਸਤਰ | ਹੇਠਾਂ ਨਾਮ ਦਿੱਤਾ ਗਿਆ ਸਹਾਇਕ | ਸਿਰਫ਼ ਉਹ ਇੱਕ ਸਮਰੱਥਾ | | MCP ਟੂਲ ਸਕੋਪ | ਉਹੀ ਐਰੇ, ਨਹੀਂ ਤਾਂ MCP `_meta`, ਨਹੀਂ ਤਾਂ `OMNIROUTE_MCP_SCOPES` | `scopeMatches` | ਉਹ ਟੂਲ, ਇੱਕ ਵਾਰ ਲਾਗੂ ਹੋਣ 'ਤੇ | | ਐਕਸੈਸ ਟੋਕਨ | `oma_live_…` | `scopeSatisfies` | ਪ੍ਰਬੰਧਨ ਰੂਟ ਜਿਸਦਾ ਤਰੀਕਾ ਅਤੇ ਮਾਰਗ ਉਸ ਰੈਂਕ ਦੀ ਲੋੜ ਹੈ | ਹਰੇਕ ਪ੍ਰਮਾਣ ਪੱਤਰ ਨੂੰ ਮਿੰਟ ਕਰਨਾ [ਪ੍ਰਬੰਧਨ ਪ੍ਰਮਾਣਿਕਤਾ](../guides/MANAGEMENT-AUTH.md) ਵਿੱਚ ਕਵਰ ਕੀਤਾ ਗਿਆ ਹੈ। #### API-ਕੁੰਜੀ ਸਕੋਪ ਇੱਕ `api_keys.scopes` ਐਰੇ ਦੋ ਕੰਮਾਂ ਨੂੰ ਫੀਡ ਕਰਦਾ ਹੈ। ਉਹ ਵੱਖ-ਵੱਖ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। **ਪ੍ਰਬੰਧਨ REST।** `manage` ਅਤੇ `admin` `MANAGEMENT_API_KEY_SCOPES` (`src/shared/constants/managementScopes.ts`) ਦੇ ਮੈਂਬਰ ਹਨ। `hasManageScope` ਉਹ ਹੈ ਜੋ ਉਸ ਕੁੰਜੀ ਲਈ ਪ੍ਰਬੰਧਨ ਰੂਟਾਂ ਨੂੰ ਅਧਿਕਾਰਤ ਕਰਦਾ ਹੈ। `admin` ਉਹਨਾਂ ਰੂਟਾਂ 'ਤੇ ਪ੍ਰਬੰਧਨ-ਸਮਰੱਥ ਹੈ। ਇੱਥੇ `admin` ਸ਼ਬਦ ਐਕਸੈਸ-ਟੋਕਨ ਰੈਂਕ ਨਹੀਂ ਹੈ ਅਤੇ ਇਹ MCP ਟੂਲ ਸਕੋਪਾਂ ਵਿੱਚ ਫੈਲਦਾ ਨਹੀਂ ਹੈ। **ਐਡਿਟਿਵ ਸਤਰਾਂ।** ਹਰੇਕ ਇੱਕ ਸਹੀ ਮੈਂਬਰਸ਼ਿਪ ਟੈਸਟ ਹੈ, ਅਤੇ ਹਰੇਕ `MANAGEMENT_API_KEY_SCOPES` ਤੋਂ ਬਾਹਰ ਰਹਿੰਦਾ ਹੈ। | ਸਕੋਪ | ਇੱਕ ਪਾਸ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ | | :----------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `mcp:connect` | ਗੈਰ-ਲੂਪਬੈਕ `/api/mcp/` LOCAL_ONLY ਕਾਰਵ-ਆਊਟ ਸਿਰਫ਼ (`hasMcpConnectOrManageScope`)। `manage` ਜਾਂ `admin` ਵਾਲੀ ਕੁੰਜੀ ਅਜੇ ਵੀ ਉਸ ਕਾਰਵ-ਆਊਟ ਨੂੰ ਪਾਸ ਕਰਦੀ ਹੈ। | | `self:usage` | ਇਸ ਕੁੰਜੀ ਲਈ `GET /api/v1/me/status` (`src/app/api/v1/me/status/route.ts`)। `POST /api/keys` ਬਣਾਉਣ 'ਤੇ ਇਹ ਸਕੋਪ ਜੋੜਦਾ ਹੈ (`normalizeSelfServiceScopesForCreate`)। | | `self:account-quota` | ਉਸ ਸਥਿਤੀ ਪੇਲੋਡ ਦੇ ਅੰਦਰ ਅਪਸਟ੍ਰੀਮ ਖਾਤਾ ਕੋਟੇ (`src/lib/usage/apiKeySelfService.ts`)। ਸਥਿਤੀ ਰੂਟ ਨੂੰ ਅਜੇ ਵੀ `self:usage` ਦੀ ਲੋੜ ਹੈ। | | `policy:bypass-provider-quota` | ਇਸ ਕੁੰਜੀ ਦੀ ਅਨੁਮਾਨ ਕਾਲਾਂ ਪ੍ਰਦਾਤਾ-ਕੋਟਾ ਨੀਤੀ ਨੂੰ ਛੱਡਦੀਆਂ ਹਨ (`src/sse/handlers/chat.ts` ਵਿੱਚ `hasProviderQuotaBypassScope`)। | #### ਮੈਚਿੰਗ ਕੈਟਾਲਾਗ [MCP ਟੂਲ ਸਕੋਪ](#mcp-tool-scopes) ਦੇ ਅਧੀਨ ਸਾਰਣੀ ਹੈ। `src/shared/constants/mcpScopes.ts` ਵਿੱਚ `MCP_SCOPE_LIST` ਨੂੰ ਉਸ ਕੈਟਾਲਾਗ ਵਜੋਂ ਨਾ ਮੰਨੋ: ਇਹ ਅਸਲ ਟਾਈਪ ਕੀਤਾ ਉਪਸਮੂਹ ਹੈ। ਬਾਅਦ ਵਾਲੇ ਟੂਲ ਇਸਦੇ ਨਾਲ ਹੋਰ ਸਕੋਪ ਘੋਸ਼ਿਤ ਕਰਦੇ ਹਨ (`read:notion`, `read:skills`, `read:local-corpus`, ਅਤੇ ਬਾਕੀ ਸਾਰਣੀ)। `open-sse/mcp-server/scopeEnforcement.ts` ਵਿੱਚ `evaluateToolScopes` ਇੱਕ ਕਾਲ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਹਰੇਕ ਲੋੜੀਂਦਾ ਸਕੋਪ ਕਿਸੇ ਗ੍ਰਾਂਟ ਕੀਤੇ ਸਕੋਪ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ: - `*` ਹਰੇਕ ਲੋੜੀਂਦੇ ਸਕੋਪ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ। - ਇੱਕ ਗ੍ਰਾਂਟ ਕੀਤਾ ਸਕੋਪ ਜੋ `*` ਵਿੱਚ ਖਤਮ ਹੁੰਦਾ ਹੈ, ਇੱਕ ਲੋੜੀਂਦੇ ਸਕੋਪ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ ਜੋ ਤਾਰੇ ਤੋਂ ਪਹਿਲਾਂ ਦੇ ਅਗੇਤਰ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। `read:*` `read:compression` ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ। - ਹਰੇਕ ਹੋਰ ਗ੍ਰਾਂਟ ਕੀਤਾ ਸਕੋਪ ਸਿਰਫ਼ ਇੱਕੋ ਜਿਹੀ ਲੋੜੀਂਦੀ ਸਤਰ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ। ਇੱਕ ਕੁੰਜੀ ਜਿਸਦੇ ਸਕੋਪ `["manage"]` ਹਨ, `read:compression` ਲਈ `scopeMatches` ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦੀ ਹੈ। ਉਹੀ ਕਾਲ `admin`, `mcp:connect`, `read`, ਅਤੇ `write` ਲਈ ਅਸਫਲ ਰਹਿੰਦੀ ਹੈ ਜਦੋਂ ਉਹ ਸਿਰਫ਼ ਗ੍ਰਾਂਟ ਕੀਤੀਆਂ ਸਤਰਾਂ ਹੁੰਦੀਆਂ ਹਨ। MCP ਟੂਲ ਸਕੋਪਾਂ ਵਿੱਚ ਟ੍ਰੇਲਿੰਗ `*` ਤੋਂ ਪਰੇ ਕੋਈ ਲੜੀ ਨਹੀਂ ਹੈ। ਲਾਗੂਕਰਨ ਬੰਦ ਹੈ ਜਦੋਂ ਤੱਕ `OMNIROUTE_MCP_ENFORCE_SCOPES=true` (ਡਿਫੌਲਟ `false`) ਨਹੀਂ ਹੁੰਦਾ। ਜਦੋਂ ਇਹ ਬੰਦ ਹੁੰਦਾ ਹੈ, `evaluateToolScopes` ਕਾਲ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਅਤੇ ਕੈਟਾਲਾਗ ਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ। ਜਦੋਂ ਇਹ ਚਾਲੂ ਹੁੰਦਾ ਹੈ, HTTP ਬੀਅਰਰ ਕੁੰਜੀ ਦੇ `api_keys.scopes` ਨੂੰ `authInfo` ਵਜੋਂ ਵਰਤਦਾ ਹੈ ([ਪ੍ਰਤੀ-ਕੁੰਜੀ HTTP ਸਕੋਪ ਬਾਈਡਿੰਗ](#per-key-http-scope-binding-7895) ਦੇਖੋ)। ਜਦੋਂ ਕੋਈ ਕੁੰਜੀ ਸਕੋਪ ਹੱਲ ਨਹੀਂ ਹੁੰਦੇ, ਤਾਂ ਗ੍ਰਾਂਟ ਕੀਤਾ ਸੈੱਟ MCP `_meta` ਵਿੱਚ, ਫਿਰ `OMNIROUTE_MCP_SCOPES` ਵਿੱਚ ਆ ਜਾਂਦਾ ਹੈ। #### ਐਕਸੈਸ-ਟੋਕਨ ਸਕੋਪ `oma_live_…` ਟੋਕਨ (`src/lib/accessTokens/scopes.ts`) `read`, `write`, ਜਾਂ `admin` ਲੈ ਕੇ ਜਾਂਦੇ ਹਨ। `scopeSatisfies` ਇੱਕ ਰੈਂਕ ਹੈ: `admin` `write` ਅਤੇ `read` ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ, ਅਤੇ `write` `read` ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ। ਅਣਜਾਣ ਸਕੋਪ ਕੁਝ ਵੀ ਕਵਰ ਨਹੀਂ ਕਰਦੇ। `evaluateAccessTokenAuth` (`src/server/authz/accessTokenAuth.ts`) ਉਸ ਰੈਂਕ ਦੀ ਤੁਲਨਾ `inferRequiredScope` (`src/server/authz/accessScopes.ts`) ਨਾਲ ਕਰਦਾ ਹੈ: - `GET`, `HEAD`, ਅਤੇ `OPTIONS` ਨੂੰ `read` ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। - ਹਰੇਕ ਹੋਰ ਵਿਧੀ ਨੂੰ `write` ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। - `ADMIN_SCOPE_PREFIXES` ਵਿੱਚ ਮਾਰਗਾਂ ਨੂੰ ਹਰੇਕ ਵਿਧੀ ਲਈ `admin` ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। `/api/mcp` ਉਸ ਸੂਚੀ ਵਿੱਚ ਹੈ, ਇਸਲਈ ਇੱਕ `write` ਐਕਸੈਸ ਟੋਕਨ ਅਜੇ ਵੀ MCP HTTP ਸਤਹ ਨੂੰ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। - `ADMIN_MUTATION_PREFIXES` ਵਿੱਚ ਮਾਰਗਾਂ ਨੂੰ ਸਿਰਫ਼ ਪਰਿਵਰਤਨਾਂ ਲਈ `admin` ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। `PATCH /api/keys/{id}` ਇੱਕ ਮਿਊਟੇਸ਼ਨ ਹੈ ਅਤੇ ਉਹਨਾਂ ਐਡਮਿਨ ਸੂਚੀਆਂ ਵਿੱਚ ਨਹੀਂ ਹੈ, ਇਸਲਈ ਇੱਕ `read` ਟੋਕਨ ਨੂੰ 403 `Access token scope 'read' is insufficient; 'write' required.` ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ। ਇੱਕ `write` ਜਾਂ `admin` ਐਕਸੈਸ ਟੋਕਨ ਉਸ ਰੂਟ ਨੂੰ ਸੰਤੁਸ਼ਟ ਕਰਦਾ ਹੈ। ਇੱਕ ਡੈਸ਼ਬੋਰਡ JWT, ਲੂਪਬੈਕ CLI ਮਸ਼ੀਨ-ਆਈਡੀ ਟੋਕਨ, ਅਤੇ `manage` ਜਾਂ `admin` ਵਾਲੀ ਇੱਕ API ਕੁੰਜੀ ਹੋਰ ਸ਼ਾਖਾਵਾਂ ਲੈਂਦੀ ਹੈ ਅਤੇ ਇਸ ਰੈਂਕ ਦੁਆਰਾ ਸੀਮਤ ਨਹੀਂ ਹੁੰਦੀ। ਇੱਕ ਐਕਸੈਸ ਟੋਕਨ ਜੋ `/api/mcp` ਲਈ `scopeSatisfies` ਪਾਸ ਕਰਦਾ ਹੈ, ਨੇ ਸਿਰਫ਼ ਪ੍ਰਬੰਧਨ ਗੇਟ ਨੂੰ ਸਾਫ਼ ਕੀਤਾ ਹੈ। ਟੂਲ ਕਾਲਾਂ ਅਜੇ ਵੀ API-ਕੁੰਜੀ ਸਕੋਪਾਂ ਦੇ ਵਿਰੁੱਧ `scopeMatches` ਚਲਾਉਂਦੀਆਂ ਹਨ। ਐਕਸੈਸ-ਟੋਕਨ ਰੈਂਕ `scopeMatches` ਲਈ ਇੱਕ ਇਨਪੁਟ ਨਹੀਂ ਹੈ। ### MCP ਟੂਲ ਸਕੋਪ ਸਕੋਪ ਲਾਗੂਕਰਨ `open-sse/mcp-server/scopeEnforcement.ts` ਵਿੱਚ ਕੇਂਦਰੀਕ੍ਰਿਤ ਹੈ। ਹਰੇਕ ਟੂਲ ਨੂੰ ਖਾਸ ਸਕੋਪਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ: | ਸਕੋਪ | ਟੂਲ | | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `read:health` | `get_health`, `get_provider_metrics`, `simulate_route`, `explain_route`, `best_combo_for_task`, `db_health_check` | | `read:combos` | `list_combos`, `get_combo_metrics`, `simulate_route`, `best_combo_for_task`, `test_combo` | | `write:combos` | `switch_combo`, `set_routing_strategy` | | `read:quota` | `check_quota` | | `read:usage` | `cost_report`, `get_session_snapshot`, `explain_route` | | `read:models` | `list_models_catalog` | | `execute:completions` | `route_request`, `test_combo` | | `execute:search` | `web_search`, `x_search`, `web_fetch` | | `write:budget` | `set_budget_guard` | | `write:resilience` | `set_resilience_profile`, `db_health_check` | | `pricing:write` | `sync_pricing` | | `read:cache` | `cache_stats` | | `write:cache` | `cache_flush` | | `read:compression` | `compression_status`, `list_compression_combos`, `compression_combo_stats` | | `write:compression` | `compression_configure`, `set_compression_engine` | | `read:proxies` | `oneproxy_fetch`, `oneproxy_rotate`, `oneproxy_stats` | | `read:notion` | `notion_search`, `notion_get_page`, `notion_list_block_children`, `notion_query_database`, `notion_get_database` | | `write:notion` | `notion_append_blocks` | | `read:memory` | `memory_search` | | `write:memory` | `memory_add`, `memory_clear` | | `read:skills` | `skills_list`, `skills_executions` | | `write:skills` | `skills_enable` | | `execute:skills` | `skills_execute` | | `read:catalog` | `agent_skills_list`, `agent_skills_get`, `agent_skills_coverage` | | `read:tools` | `omniroute_tool_search` | | `read:radar` | `omniroute_radar_catalog` | | `read:gamification` | `gamification_profile`, `gamification_rank`, `gamification_leaderboard`, `gamification_badges`, `gamification_servers`, `gamification_anomalies` | | `write:gamification` | `gamification_invite`, `gamification_transfer` | | `read:plugins` | `plugin_list`, `plugin_executions` | | `write:plugins` | `plugin_scan`, `plugin_install`, `plugin_uninstall`, `plugin_activate`, `plugin_deactivate`, `plugin_configure` | | `read:obsidian` | 13 ਰੀਡ ਟੂਲ — `obsidian_list_vault`, `obsidian_read_note`, `obsidian_search_simple`, `obsidian_search_structured`, `obsidian_get_periodic_note`, `obsidian_sync_status`, … | | `write:obsidian` | 9 ਰਾਈਟ ਟੂਲ — `obsidian_write_note`, `obsidian_append_note`, `obsidian_patch_note`, `obsidian_move_note`, `obsidian_delete_note`, `obsidian_sync_trigger`, … | | `read:local-corpus` | `local_corpus_search`, `local_corpus_read`, `local_corpus_status` | ਵਾਈਲਡਕਾਰਡ ਸਕੋਪ ਸਮਰਥਿਤ ਹਨ: `read:*` ਸਾਰੇ ਰੀਡ-ਸਕੋਪ ਦਿੰਦਾ ਹੈ, `*` ਪੂਰੀ ਪਹੁੰਚ ਦਿੰਦਾ ਹੈ। ### `mcp:connect` — ਨੈਰੋ ਰੂਟ ਸਮਰੱਥਾ (#7895) ਨਾਨ-ਲੂਪਬੈਕ ਤੋਂ HTTP/SSE MCP ਟ੍ਰਾਂਸਪੋਰਟ (`/api/mcp/*`) ਤੱਕ ਪਹੁੰਚਣ ਲਈ ਲੋੜੀਂਦਾ ਹੈ `/api/mcp/` LOCAL_ONLY ਕਾਰਵ-ਆਊਟ (ਦੇਖੋ `docs/security/ROUTE_GUARD_TIERS.md`)। ਇਤਿਹਾਸਕ ਤੌਰ 'ਤੇ ਉਸ ਕਾਰਵ-ਆਊਟ ਨੇ ਸਿਰਫ਼ ਇੱਕ ਪੂਰੀ `manage`/`admin`-ਸਕੋਪ API ਕੁੰਜੀ ਨੂੰ ਸਵੀਕਾਰ ਕੀਤਾ — ਇੱਕ ਕਾਲਰ ਲਈ ਬਹੁਤ ਵਿਆਪਕ ਜਿਸਨੂੰ ਸਿਰਫ਼ MCP ਨਾਲ ਗੱਲ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। `src/shared/constants/managementScopes.ts` ਹੁਣ ਐਕਸਪੋਰਟ ਕਰਦਾ ਹੈ `MCP_CONNECT_SCOPE = "mcp:connect"`: ਇੱਕ ਐਡਿਟਿਵ, ਨੈਰੋ ਸਕੋਪ (ਉਸੇ ਮਿਸਾਲ ਵਾਂਗ `SELF_USAGE_SCOPE`) ਜੋ ਸਿਰਫ਼ `/api/mcp/` ਬਾਈਪਾਸ ਨੂੰ `src/server/authz/policies/management.ts` ਵਿੱਚ ਅਧਿਕਾਰਤ ਕਰਦਾ ਹੈ — ਇਹ ਕੋਈ ਹੋਰ ਪ੍ਰਬੰਧਨ-ਰੂਟ ਪਹੁੰਚ ਨਹੀਂ ਦਿੰਦਾ ਅਤੇ ਜਾਣਬੁੱਝ ਕੇ `MANAGEMENT_API_KEY_SCOPES` ਤੋਂ ਬਾਹਰ ਰੱਖਿਆ ਗਿਆ ਹੈ। `manage`/`admin` ਵਾਲੀ ਇੱਕ ਕੁੰਜੀ ਅਜੇ ਵੀ ਕਾਰਵ-ਆਊਟ ਨੂੰ ਬਿਨਾਂ ਬਦਲੇ ਪਾਸ ਕਰਦੀ ਹੈ; `mcp:connect` ਰਿਮੋਟ MCP-ਸਿਰਫ਼ ਕਾਲਰ ਲਈ ਇੱਕ ਘੱਟ-ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਵਾਲਾ ਵਿਕਲਪ ਹੈ, ਜਿਸਦੀ ਜਾਂਚ `hasMcpConnectOrManageScope()` ਰਾਹੀਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ### ਪ੍ਰਤੀ-ਕੁੰਜੀ HTTP ਸਕੋਪ ਬਾਈਡਿੰਗ (#7895) HTTP/SSE ਉੱਤੇ, `open-sse/mcp-server/httpTransport.ts` ਹੁਣ ਕਾਲਰ ਦੇ ਅਸਲ `api_keys.scopes` ਨੂੰ `resolveMcpCallerAuthInfo()` (`open-sse/mcp-server/httpAuthContext.ts`) ਰਾਹੀਂ ਹੱਲ ਕਰਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ MCP SDK ਦੇ `transport.handleRequest(req, { authInfo })` ਵਿੱਚ ਪਾਸ ਕਰਦਾ ਹੈ, ਤਾਂ ਜੋ ਹਰੇਕ ਟੂਲ ਕਾਲ ਤੱਕ ਪਹੁੰਚਣ ਵਾਲਾ `extra.authInfo.scopes` ਬੀਅਰਰ ਕੁੰਜੀ ਦੇ ਆਪਣੇ ਸਕੋਪਾਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। `scopeEnforcement.ts` ਦਾ `resolveCallerScopeContext()` ਪਹਿਲਾਂ ਹੀ `authInfo` ਨੂੰ `_meta` ਅਤੇ `OMNIROUTE_MCP_SCOPES` env ਫਾਲਬੈਕ ਉੱਤੇ ਤਰਜੀਹ ਦਿੰਦਾ ਸੀ — ਇਹ ਸਿਰਫ਼ ਉਸ ਪਹਿਲੇ, ਸਭ ਤੋਂ ਉੱਚ-ਪ੍ਰਾਥਮਿਕਤਾ ਵਾਲੇ ਸਰੋਤ ਨੂੰ ਭਰਦਾ ਹੈ, ਜੋ ਪਹਿਲਾਂ HTTP ਉੱਤੇ ਅਣਵਰਤਿਆ ਸੀ। ਜਦੋਂ ਕੋਈ API ਕੁੰਜੀ ਹੱਲ ਨਹੀਂ ਹੁੰਦੀ (ਕੋਈ ਹੈਡਰ ਨਹੀਂ, ਅਵੈਧ ਕੁੰਜੀ), `authInfo` `undefined` ਰਹਿੰਦਾ ਹੈ ਅਤੇ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਮੌਜੂਦਾ `meta`/env ਚੇਨ ਬਿਨਾਂ ਬਦਲੇ ਤੱਕ ਪਹੁੰਚ ਜਾਂਦਾ ਹੈ। ਇਹ `OMNIROUTE_MCP_ENFORCE_SCOPES` ਦੇ ਡਿਫਾਲਟ ਨੂੰ ਨਹੀਂ ਬਦਲਦਾ — ਲਾਗੂਕਰਨ ਨੂੰ ਅਜੇ ਵੀ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਸਮਰੱਥ ਕਰਨਾ ਪੈਂਦਾ ਹੈ; ਇਹ ਬਦਲਾਅ ਸਿਰਫ਼ ਪ੍ਰਤੀ-ਕੁੰਜੀ ਪਾਥ ਨੂੰ ਤਰਜੀਹ ਮਿਲਦੀ ਹੈ ਜਦੋਂ ਇਹ ਹੁੰਦਾ ਹੈ। stdio ਦੀ ਕੋਈ ਪ੍ਰਤੀ-ਕਾਲਰ ਪਛਾਣ ਨਹੀਂ ਹੁੰਦੀ (ਦੇਖੋ `mcpCallerIdentity.ts`) ਅਤੇ ਅਪ੍ਰਭਾਵਿਤ ਰਹਿੰਦਾ ਹੈ — ਇਹ `_meta`/env ਫਾਲਬੈਕ ਚੇਨ 'ਤੇ ਰਹਿੰਦਾ ਹੈ। ## ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲ | ਵੇਰੀਏਬਲ | ਡਿਫਾਲਟ | ਉਦੇਸ਼ | | :-------------------------------------- | :------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_BASE_URL` | `http://localhost:20128` | ਅੰਦਰੂਨੀ OmniRoute APIs ਨੂੰ ਕਾਲ ਕਰਨ ਵੇਲੇ MCP ਸਰਵਰ ਵੱਲੋਂ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਬੇਸ URL | | `OMNIROUTE_API_KEY` | (ਖਾਲੀ) | ਅੰਦਰੂਨੀ API ਕਾਲਾਂ ਲਈ `Authorization: Bearer` ਵਜੋਂ ਅੱਗੇ ਭੇਜੀ ਜਾਣ ਵਾਲੀ API ਕੁੰਜੀ | | `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` (ਕੇਵਲ `"true"` ਇਸਨੂੰ ਸਮਰੱਥ ਕਰਦਾ ਹੈ) | ਸਮਰੱਥ ਹੋਣ 'ਤੇ, ਗੁੰਮ ਸਕੋਪ ਟੂਲ ਕਾਲਾਂ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰਦੇ ਹਨ ਅਤੇ ਆਡਿਟ ਲੌਗ ਵਿੱਚ `scope_denied:` ਦਰਜ ਕਰਦੇ ਹਨ | | `OMNIROUTE_MCP_SCOPES` | (ਖਾਲੀ) | ਮੂਲ ਰੂਪ ਵਿੱਚ "ਉਪਲਬਧ" ਮੰਨੇ ਜਾਣ ਵਾਲੇ ਸਕੋਪਾਂ ਦੀ ਕੌਮੇ ਨਾਲ ਵੱਖ ਕੀਤੀ ਮਨਜ਼ੂਰ-ਸੂਚੀ (ਉਦੋਂ ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਕਾਲਰ ਆਪਣੇ ਸਕੋਪ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕਰਦਾ) | | `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | (ਸੈੱਟ ਨਾ ਕੀਤਾ = ਚਾਲੂ) | `0/false/off/no` 'ਤੇ ਸੈੱਟ ਹੋਣ 'ਤੇ, ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਵੇਲੇ MCP ਵਰਣਨ ਕੰਪ੍ਰੈਸ਼ਨ ਨੂੰ ਅਸਮਰੱਥ ਕਰਦਾ ਹੈ | | `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | (ਸੈੱਟ ਨਾ ਕੀਤਾ = ਚਾਲੂ) | ਉਪਰੋਕਤ ਟੌਗਲ ਲਈ ਵਿਕਲਪਿਕ ਉਪਨਾਮ | | `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | ਅੰਦਰੂਨੀ ਪ੍ਰਬੰਧਨ ਰੀਡਾਂ (ਸਿਹਤ, ਲਚਕੀਲਾਪਣ, ਕੌਂਬੋ, ਕੋਟਾ, ਵਰਤੋਂ) ਲਈ ਰੱਦ ਕਰਨ ਦੀ ਸਮਾਂ-ਸੀਮਾ | | `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | ਕਿਸੇ ਪ੍ਰਦਾਤਾ ਦੀ ਉਡੀਕ ਕਰਨ ਵਾਲੇ ਹੌਪਾਂ (`route_request`, `web_search`, `web_fetch`) ਲਈ ਰੱਦ ਕਰਨ ਦੀ ਸਮਾਂ-ਸੀਮਾ | | `MCP_TOOL_DENY` | (ਸੈੱਟ ਨਾ ਕੀਤਾ = ਕੋਈ ਫਿਲਟਰ ਨਹੀਂ) | `tools/list` ਵਿੱਚੋਂ ਹਟਾਉਣ ਲਈ ਕੌਮੇ ਨਾਲ ਵੱਖ ਕੀਤੇ ਟੂਲ ਨਾਮ (ਟੂਲ-ਕਾਰਡੀਨੈਲਿਟੀ ਘਟਾਓ — ਹੇਠਾਂ ਵੇਖੋ) | | `MCP_TOOL_ALLOW` | (ਸੈੱਟ ਨਾ ਕੀਤਾ = ਕੋਈ ਫਿਲਟਰ ਨਹੀਂ) | ਸਿਰਫ਼ ਰੱਖਣ ਲਈ ਕੌਮੇ ਨਾਲ ਵੱਖ ਕੀਤੇ ਟੂਲ ਨਾਮ (ਮਨਜ਼ੂਰ-ਸੂਚੀ ਮੋਡ — ਹੇਠਾਂ ਵੇਖੋ) | | `DATA_DIR` | `~/.omniroute` | ਹਾਰਟਬੀਟ ਫ਼ਾਈਲ `${DATA_DIR}/runtime/mcp-heartbeat.json` ਵਿੱਚ ਲਿਖੀ ਜਾਂਦੀ ਹੈ | --- ## ਵਰਣਨ ਕੰਪ੍ਰੈਸ਼ਨ MCP ਟੂਲ, ਪ੍ਰੌਂਪਟ ਅਤੇ ਸਰੋਤ ਰਜਿਸਟਰੀਆਂ ਕਲਾਇੰਟਾਂ ਸਾਹਮਣੇ ਆਉਣ ਵਾਲੇ ਮੈਟਾਡੇਟਾ ਫੁੱਟਪ੍ਰਿੰਟ (ਅਤੇ ਇਸ ਕਰਕੇ ਪ੍ਰੌਂਪਟ ਸੰਦਰਭ ਲਾਗਤ) ਨੂੰ ਘਟਾਉਣ ਲਈ ਰਜਿਸਟ੍ਰੇਸ਼ਨ/ਸੂਚੀਕਰਨ ਵੇਲੇ ਵਰਣਨਾਂ ਨੂੰ ਕੰਪ੍ਰੈੱਸ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਇਸਦੀ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ `open-sse/mcp-server/descriptionCompressor.ts` ਵਿੱਚ ਹੈ ਅਤੇ `createMcpServer()` ਦੇ ਅੰਦਰ `compressMcpRegistryMetadata` ਰਾਹੀਂ MCP ਸਰਵਰ ਨਾਲ ਜੋੜੀ ਗਈ ਹੈ। - ਕੰਪ੍ਰੈਸ਼ਨ ਸੰਭਾਲੇ-ਬਲੌਕ ਐਕਸਟ੍ਰੈਕਸ਼ਨ (ਕੋਡ ਸਪੈਨ, ਫੈਂਸ ਕੀਤੇ ਬਲੌਕ ਆਦਿ) ਸਮੇਤ Caveman ਨਿਯਮ-ਸਮੂਹ (`getRulesForContext("all", "full")`) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਰਣਨ ਟੈਕਸਟ 'ਤੇ ਚੱਲਦੀ ਹੈ, ਤਾਂ ਜੋ ਸੰਰਚਨਾਤਮਕ ਸਮੱਗਰੀ ਵਿੱਚ ਤਬਦੀਲੀ ਨਾ ਹੋਵੇ। - `key_value` ਸੈਟਿੰਗਾਂ ਟੇਬਲ ਵਿੱਚ `compression.mcpDescriptionCompressionEnabled` ਮੁੱਲ ਰਾਹੀਂ ਹਰੇਕ ਡਿਪਲੌਇਮੈਂਟ ਲਈ ਟੌਗਲ ਕਰੋ (ਡਿਫਾਲਟ: ਸਮਰੱਥ) — UI ਵਿੱਚ **Analytics → MCP ਵਰਣਨ ਕੰਪ੍ਰੈਸ਼ਨ** ਵਜੋਂ ਉਪਲਬਧ। - `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS=false` ਜਾਂ `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION=false` ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਰਾਹੀਂ ਪੂਰੀ ਪ੍ਰਕਿਰਿਆ ਲਈ ਟੌਗਲ ਕਰੋ। - ਰੀਅਲਟਾਈਮ ਅੰਕੜੇ `analytics.mcpDescriptionCompression` ਦੇ ਅਧੀਨ `omniroute_compression_status` ਰਾਹੀਂ ਦਿਖਾਏ ਜਾਂਦੇ ਹਨ ਅਤੇ ਅਸਲ ਪ੍ਰਦਾਤਾ ਵਰਤੋਂ ਰਸੀਦਾਂ ਤੋਂ ਵੱਖ ਕਰਨ ਲਈ `source: "mcp_metadata_estimate"` ਨਾਲ ਟੈਗ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। --- ## ਟੂਲ ਕਾਰਡੀਨੈਲਿਟੀ ਘਟਾਉਣਾ (F4.3) ਵਰਣਨ ਸੰਕੁਚਨ ਹਰ ਟੂਲ ਦੇ ਮੈਟਾਡੇਟਾ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ; **ਟੂਲ-ਕਾਰਡੀਨੈਲਿਟੀ ਘਟਾਉਣਾ** ਇਸ ਤੋਂ ਇੱਕ ਕਦਮ ਅੱਗੇ ਜਾਂਦਾ ਹੈ ਅਤੇ _ਐਲਾਨ ਕੀਤੇ ਜਾਣ ਵਾਲੇ_ ਟੂਲਾਂ ਦੀ ਗਿਣਤੀ ਹੀ ਘਟਾ ਦਿੰਦਾ ਹੈ। `tools/list` ਮੈਨੀਫੈਸਟ ਵਿੱਚ ਘੱਟ ਟੂਲ ਦਰਸਾਉਣ ਨਾਲ ਟੂਲ ਕੈਟਾਲਾਗ ਲਈ ਕਲਾਇੰਟ ਦੇ ਮਾਡਲ ਵੱਲੋਂ ਅਦਾ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਪ੍ਰਤੀ-ਬੇਨਤੀ ਟੋਕਨ ਲਾਗਤ ਘਟਦੀ ਹੈ ("ਲੇਅਰ 5" ਸੰਕੁਚਨ)। ਲਾਗੂਕਰਨ `open-sse/mcp-server/toolCardinality.ts` (`reduceToolManifest`) ਵਿੱਚ ਇੱਕ ਸ਼ੁੱਧ, ਸਟੇਟਲੈੱਸ ਫਿਲਟਰ ਹੈ, ਜਿਸ ਨੂੰ `createMcpServer()` (`open-sse/mcp-server/server.ts`) ਵਿੱਚ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਲੂਪ ਨਾਲ ਜੋੜਿਆ ਗਿਆ ਹੈ। **ਆਪਣੀ ਮਰਜ਼ੀ ਨਾਲ ਚਾਲੂ ਕਰਨ ਯੋਗ, ਮੂਲ ਰੂਪ ਵਿੱਚ ਬੰਦ।** ਫਿਲਟਰ ਸਿਰਫ਼ ਉਦੋਂ ਚੱਲਦਾ ਹੈ ਜਦੋਂ ਦੋ ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲਾਂ ਵਿੱਚੋਂ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਸੈੱਟ ਹੋਵੇ; ਜੇ ਦੋਵਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਸੈੱਟ ਨਾ ਹੋਵੇ, ਤਾਂ ਸਾਰੇ 110 ਟੂਲ ਬਿਨਾਂ ਕਿਸੇ ਬਦਲਾਅ ਦੇ ਐਲਾਨੇ ਜਾਂਦੇ ਹਨ। | ਵੇਰੀਏਬਲ | ਮੋਡ | | :--------------- | :---------------------------------------------------------------------------------------------- | | `MCP_TOOL_DENY` | ਬਲੈਕਲਿਸਟ — ਕੌਮੇ ਨਾਲ ਵੱਖ ਕੀਤੇ ਟੂਲ ਨਾਮ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਹਮੇਸ਼ਾ `tools/list` ਵਿੱਚੋਂ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ | | `MCP_TOOL_ALLOW` | ਅਲਾਊ-ਲਿਸਟ — ਕੌਮੇ ਨਾਲ ਵੱਖ ਕੀਤੇ ਟੂਲ ਨਾਮ; ਸਿਰਫ਼ ਇਹੀ ਬਚਦੇ ਹਨ, ਬਾਕੀ ਸਭ ਹਟਾ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ | `deny`, `allow` ਨਾਲੋਂ ਤਰਜੀਹ ਰੱਖਦਾ ਹੈ। ਨਾਮ ਕੌਮਿਆਂ ਨਾਲ ਵੱਖ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਉਨ੍ਹਾਂ ਦੇ ਅੱਗੇ-ਪਿੱਛੇ ਦੀਆਂ ਖਾਲੀ ਥਾਵਾਂ ਹਟਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ ਅਤੇ ਖਾਲੀ ਐਂਟਰੀਆਂ ਨੂੰ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨਾਂ: ```bash # ਕੈਟਾਲਾਗ ਵਿੱਚੋਂ ਦੋ ਟੂਲ ਹਟਾਓ MCP_TOOL_DENY="omniroute_get_health,omniroute_list_combos" omniroute --mcp # ਸਿਰਫ਼ ਰੂਟਿੰਗ + ਕੋਟਾ ਟੂਲਾਂ ਦਾ ਐਲਾਨ ਕਰੋ (ਅਲਾਊ-ਲਿਸਟ ਮੋਡ) MCP_TOOL_ALLOW="omniroute_route_request,omniroute_check_quota" omniroute --mcp ``` **ਫਿਲਟਰ ਕੀਤੇ ਟੂਲ ਕਿਵੇਂ ਹਟਾਏ ਜਾਂਦੇ ਹਨ:** ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਹਮੇਸ਼ਾ ਸਫਲ ਹੁੰਦੀ ਹੈ; ਪ੍ਰੋਫ਼ਾਈਲ ਵੱਲੋਂ ਰੱਦ ਕੀਤੇ ਟੂਲ ਨੂੰ ਫਿਰ MCP SDK ਹੈਂਡਲ ਉੱਤੇ `.disable()` ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਇਸ ਲਈ ਉਹ ਕਦੇ ਵੀ `tools/list` ਵਿੱਚ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦਾ, ਪਰ ਵਾਇਰਿੰਗ ਬਰਕਰਾਰ ਰਹਿੰਦੀ ਹੈ (ਸਾਫ਼-ਸੁਥਰਾ ਚਾਲੂ/ਬੰਦ ਕਰਨਾ, ਮੁੜ-ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਨਹੀਂ)। ਪ੍ਰੋਫ਼ਾਈਲ ਪਾਰਸਰ `readMcpToolProfileFromEnv(process.env)` ਹੈ, ਜੋ ਦੋਵੇਂ ਵੇਰੀਏਬਲ ਖਾਲੀ ਹੋਣ 'ਤੇ `null` (ਕੋਈ ਫਿਲਟਰਿੰਗ ਨਹੀਂ) ਵਾਪਸ ਕਰਦਾ ਹੈ। `reduceToolManifest` ਦੇ ਪਿੱਛੇ ਮੌਜੂਦ ਵਧੇਰੇ ਸਮਰੱਥ `ToolProfile` ਸੰਰਚਨਾ ਸਕੋਪ-ਇੰਟਰਸੈਕਸ਼ਨ ਫਿਲਟਰਿੰਗ (`allowScopes`, `read:*`-ਸ਼ੈਲੀ ਵਾਇਲਡਕਾਰਡ ਮੇਲ ਨਾਲ) ਅਤੇ ਇੱਕ ਨਿਰਧਾਰਤ `maxTools` ਸੀਮਾ ਦਾ ਵੀ ਸਮਰਥਨ ਕਰਦੀ ਹੈ, ਪਰ ਇਨ੍ਹਾਂ ਦੋਵਾਂ ਨਿਯੰਤਰਣਾਂ ਨੂੰ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਵੇਲੇ ਪੂਰੇ ਮੈਨੀਫੈਸਟ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਅਤੇ ਅੱਜ ਇਹ ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲਾਂ ਰਾਹੀਂ **ਉਪਲਬਧ ਨਹੀਂ** ਹਨ (ਇੱਕ `tools/list`-ਪੱਧਰੀ ਹੁੱਕ ਟ੍ਰੈਕ ਕੀਤਾ ਹੋਇਆ ਅਗਲਾ ਕੰਮ ਹੈ)। ਘਟਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਬਾਅਦ ਮੈਨੀਫੈਸਟ ਦੀ ਟੋਕਨ ਲਾਗਤ ਦੀ ਤੁਲਨਾ ਕਰਨ ਲਈ `estimateManifestTokens()` ਉਪਲਬਧ ਹੈ। --- ## ਰਨਟਾਈਮ ਹਾਰਟਬੀਟ stdio ਟ੍ਰਾਂਸਪੋਰਟ ਹਰ 5 ਸਕਿੰਟਾਂ ਬਾਅਦ ਲਾਈਵਨੈੱਸ ਨੂੰ `${DATA_DIR}/runtime/mcp-heartbeat.json` ਵਿੱਚ ਸੰਭਾਲਦਾ ਹੈ। ਡੈਸ਼ਬੋਰਡ (`/api/mcp/status`) `online` ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਇਸ ਫ਼ਾਈਲ ਦੇ ਨਾਲ PID ਲਾਈਵਨੈੱਸ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ। ਇਸ ਦੀ ਬਜਾਏ HTTP ਟ੍ਰਾਂਸਪੋਰਟ ਇਨ-ਪ੍ਰੋਸੈਸ `getMcpHttpStatus()` ਤੋਂ ਸਥਿਤੀ ਦੀ ਰਿਪੋਰਟ ਕਰਦੇ ਹਨ (ਕੋਈ ਫ਼ਾਈਲ ਨਹੀਂ ਲਿਖੀ ਜਾਂਦੀ)। ਹਾਰਟਬੀਟ ਸਨੈਪਸ਼ਾਟ ਵਿੱਚ ਇਹ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ: ```json { "pid": 12345, "startedAt": "2026-05-13T12:34:56.000Z", "lastHeartbeatAt": "2026-05-13T12:35:01.000Z", "version": "1.8.1", "transport": "stdio", "scopesEnforced": false, "allowedScopes": [], "toolCount": 110 } ``` --- ## ਆਡਿਟ ਲੌਗਿੰਗ ਹਰ ਟੂਲ ਕਾਲ ਨੂੰ `open-sse/mcp-server/audit.ts` ਵੱਲੋਂ SQLite ਦੀ `mcp_tool_audit` ਟੇਬਲ ਵਿੱਚ ਲੌਗ ਕੀਤਾ ਜਾਂਦਾ ਹੈ: - ਟੂਲ ਦਾ ਨਾਮ, ਆਰਗੂਮੈਂਟ (ਹਰ ਟੂਲ ਦੇ `auditLevel` ਅਨੁਸਾਰ ਹੈਸ਼ ਕੀਤੇ/ਛੋਟੇ ਕੀਤੇ), ਨਤੀਜਾ - ms ਵਿੱਚ ਮਿਆਦ, ਸਫਲਤਾ/ਅਸਫਲਤਾ ਫਲੈਗ, ਗਲਤੀ ਸੁਨੇਹਾ (ਜਦੋਂ ਲਾਗੂ ਹੋਵੇ) - API ਕੁੰਜੀ ਹੈਸ਼, ਟਾਈਮਸਟੈਂਪ - ਸਕੋਪ ਇਨਕਾਰਾਂ ਨੂੰ ਗੁੰਮ ਸਕੋਪਾਂ ਦੀ ਸੂਚੀ ਸਮੇਤ `scope_denied:` ਵਜੋਂ ਲੌਗ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਹਾਲੀਆ ਕਾਲਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਡੈਸ਼ਬੋਰਡ ਜਾਂ `/api/mcp/audit` ਅਤੇ `/api/mcp/audit/stats` REST ਐਂਡਪੌਇੰਟ ਵਰਤੋ। --- ## ਫ਼ਾਈਲਾਂ | ਫ਼ਾਈਲ | ਉਦੇਸ਼ | | :----------------------------------------------------------------------- | :----------------------------------------------------------------- | | `open-sse/mcp-server/server.ts` | MCP ਸਰਵਰ ਫੈਕਟਰੀ, stdio ਐਂਟਰੀ ਪੁਆਇੰਟ, ਸਕੋਪ ਕੀਤੀਆਂ ਟੂਲ ਰਜਿਸਟ੍ਰੇਸ਼ਨਾਂ | | `open-sse/mcp-server/httpTransport.ts` | SSE + Streamable HTTP ਟ੍ਰਾਂਸਪੋਰਟ (ਸੈਸ਼ਨ ਪ੍ਰਬੰਧਨ) | | `open-sse/mcp-server/scopeEnforcement.ts` | ਟੂਲ ਸਕੋਪ ਮੁਲਾਂਕਣ ਅਤੇ ਕਾਲਰ ਨਿਰਧਾਰਨ | | `open-sse/mcp-server/audit.ts` | ਟੂਲ ਕਾਲ ਆਡਿਟ ਲੌਗਿੰਗ (`mcp_tool_audit`) | | `open-sse/mcp-server/runtimeHeartbeat.ts` | stdio ਹਾਰਟਬੀਟ ਰਾਈਟਰ (`mcp-heartbeat.json`) | | `open-sse/mcp-server/descriptionCompressor.ts` | ਟੂਲ / ਪ੍ਰੌਮਪਟ / ਰਿਸੋਰਸ ਰਜਿਸਟਰੀਆਂ ਲਈ ਵਰਣਨ ਕੰਪਰੈਸ਼ਨ | | `open-sse/mcp-server/schemas/tools.ts` | Zod ਸਕੀਮਾਂ + ਟੂਲ ਰਜਿਸਟਰੀ (`MCP_TOOLS`, 45 ਐਂਟਰੀਆਂ) | | `open-sse/mcp-server/tools/advancedTools.ts` | ਪੜਾਅ 2 + ਕੈਸ਼ + 1proxy ਟੂਲ ਹੈਂਡਲਰ | | `open-sse/mcp-server/tools/compressionTools.ts` | ਕੰਪਰੈਸ਼ਨ ਟੂਲ ਹੈਂਡਲਰ | | `open-sse/mcp-server/tools/memoryTools.ts` | ਮੈਮੋਰੀ ਟੂਲ ਪਰਿਭਾਸ਼ਾਵਾਂ (3 ਟੂਲ) | | `open-sse/mcp-server/tools/skillTools.ts` | ਹੁਨਰ ਟੂਲ ਪਰਿਭਾਸ਼ਾਵਾਂ (4 ਟੂਲ) | | `open-sse/mcp-server/tools/notionTools.ts` | Notion ਸੰਦਰਭ ਸਰੋਤ ਟੂਲ ਪਰਿਭਾਸ਼ਾਵਾਂ (6 ਟੂਲ) | | `open-sse/mcp-server/tools/gamificationTools.ts` | ਗੇਮੀਫਿਕੇਸ਼ਨ ਟੂਲ ਪਰਿਭਾਸ਼ਾਵਾਂ (8 ਟੂਲ) | | `open-sse/mcp-server/tools/pluginTools.ts` | ਪਲੱਗਇਨ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਅਤੇ ਪ੍ਰਬੰਧਨ ਟੂਲ (8 ਟੂਲ) | | `src/app/api/mcp/status/route.ts` | `/api/mcp/status` ਐਂਡਪੁਆਇੰਟ | | `src/app/api/mcp/tools/route.ts` | `/api/mcp/tools` ਐਂਡਪੁਆਇੰਟ | | `src/app/api/mcp/sse/route.ts` | `/api/mcp/sse` SSE ਟ੍ਰਾਂਸਪੋਰਟ ਰੂਟ | | `src/app/api/mcp/stream/route.ts` | `/api/mcp/stream` Streamable HTTP ਟ੍ਰਾਂਸਪੋਰਟ ਰੂਟ | | `src/app/api/mcp/audit/route.ts` | `/api/mcp/audit` ਆਡਿਟ ਲੌਗ ਕਵੇਰੀ | | `src/app/api/mcp/audit/stats/route.ts` | `/api/mcp/audit/stats` ਸਮੂਹਿਕ ਆਡਿਟ ਮੈਟ੍ਰਿਕਸ | | `src/lib/notion/api.ts` | Notion REST API ਕਲਾਇੰਟ (ਮੁੜ ਕੋਸ਼ਿਸ਼, ਟਾਈਮਆਉਟ, ਗਲਤੀ ਵਰਗੀਕਰਨ) | | `src/lib/db/notion.ts` | Notion ਟੋਕਨ ਸਥਿਰਤਾ (`key_value` ਟੇਬਲ) | | `src/app/api/settings/notion/route.ts` | Notion ਸੈਟਿੰਗਾਂ API (GET/POST/DELETE) | | `src/app/(dashboard)/dashboard/endpoint/components/NotionSourceCard.tsx` | Notion ਟੋਕਨ ਪ੍ਰਬੰਧਨ UI | | `tests/unit/notion-api.test.ts` | Notion API ਕਲਾਇੰਟ ਟੈਸਟ (7) | | `tests/unit/notion-tools.test.ts` | Notion ਟੂਲ ਸਕੋਪ ਲਾਗੂਕਰਨ ਟੈਸਟ (10) | | `tests/unit/db/notion.test.mjs` | Notion DB ਮੋਡੀਊਲ ਟੈਸਟ (3) |