Model Plaza
📖 Best for: Platform admins / AI app developers — people who need to know "which models are available, which are cooling down, what they cost", and people who want to wire platform capabilities into external AI clients like Claude Desktop or Cherry Studio
📖 Reading time: 7 minutes
📖 In one sentence: Model Plaza (
/model-plaza) is the unified view of all models — health, latency, price, and capability badges at a glance, with smart routing; MCP services (inside the "API Console" page,/platform-api-console) wrap the platform's five capability areas — knowledge-base retrieval, data hub, knowledge graph, document images, LLM-Wiki — as standard MCP services, accessible to external AI clients through the same API Key.
Model Plaza does not handle model onboarding. Onboarding (entering API Keys, adding models) lives in the "Model Providers" page; the plaza only displays and orchestrates.
Capability Map
1. Core Capabilities
Model Plaza
| Capability | Description |
|---|---|
| Model overview grid | Responsive card grid, 12 per page — shows icon, name, vendor, health status, price, capability tags, average latency |
| Three-state health | Healthy / Cooling (shows consecutive failure count and remaining cooldown seconds) / Blocked (permanent block from quota or auth errors) |
| Top stats bar | Total models / Healthy / Cooling / Blocked |
| Search & filters | Keyword search (name / vendor / display name / public model ID), filter by type, filter by status |
| Price display | Per-million-token price (input / output), only shown when entered |
| Capability tags | Context-length window, vision, tool calling, and other capability badges |
| Manual reset | One-click reset of cooldown and failure count for unhealthy models (admin only) |
| Edit model info | Modify primary model type, capability tags, multimodal support, context length, and input/output price (admin only) |
| Smart routing | Per-task-type configuration (Code / Reasoning / Chat / Creative / Summary / Translation / Agent / Default) with primary model and policy; a classifier model can also be specified |
| Virtual routing models | Built-in auto (sticky-stable routing, cache-first) and smart-auto (dynamic intent routing) virtual models |
MCP Services
| Capability | Description |
|---|---|
| 5 independent MCP instances | Knowledge base (/kb), Data hub (/datahub), Document images (/image), Knowledge graph (/graph), LLM-Wiki (/wiki) — all use the same Key |
| Two transports | Standard StreamableHTTP (/<instance>/mcp) and compatible SSE (/<instance>/sse) |
| Three one-click connection methods | StreamableHTTP / SSE header / SSE ?api_key= — each has a copyable config JSON |
| Visualized tool catalog | Every instance groups its tools: tool name / description / parameters (* required) |
| Connection examples | Built-in samples in Python and SSE |
| "Fill in my Key" | Second-confirm to inject the current Key into the config JSON, no manual replacement needed |
| MCP call key management | Create / disable / revoke keys, bind a caller account, view last-used time (super admin only) |
| Audit and traceability | Log mcp.call, mcp.auth_failed, mcp.key.create/toggle/revoke events; when a key is bound to an account, egress audit can trace the specific caller |
2. Typical Use Cases
- Spot unhealthy models at a glance: Open the plaza in the morning, triage the red "Blocked" and orange "Cooling" cards first — don't wait until the business reports "AI isn't responding".
- Cost comparison & selection: Compare candidate models' price, context window, and capability tags side by side, pick the one with the best price-performance.
- Fast recovery from failures: A model enters cooldown after a transient glitch — admin clicks "Reset" and it's back in service, no waiting for cooldown to expire.
- Task-based routing for cost control: In smart routing, point "short chat" and "summary" to cheap models, point "reasoning" and "code" to strong ones — cheap tasks stay cheap, hard tasks stay quality.
- Plug platform knowledge into Claude Desktop: Copy the config JSON from the MCP services page, paste it into Claude Desktop or Cherry Studio's MCP config, your external AI can immediately search your knowledge base.
- Issue a dedicated Key for the data team: Create an MCP call key bound to an account and hand it to the data team; egress audit can then trace exactly who called what, instead of a write-off.
3. UI and Operations
1. Entry Points and Tabs
Model Plaza is a top-level navigation item, with four tabs in the page:
| Tab | Destination |
|---|---|
| Model Providers | Jump to /model-provider (admin only; tab is not rendered for non-admins) |
| Model Plaza | This page — /model-plaza |
| API Console | Jump to /platform-api-console (MCP services live here) |
| Smart Routing | This page — /model-plaza?tab=routing |
All three pages (
/model-provider,/model-plaza,/platform-api-console) are highlighted together as "Model Plaza" in the top nav, so they don't bounce around.
Permissions: Model Plaza is open to all logged-in users, but non-admins get read-only mode — the page top shows an Alert "(Read-only)" and "Only admins can modify smart routing; regular users can only view current config"; cards can't be edited or reset; the "Model Providers" tab is not rendered (direct access to /model-provider is redirected back to the plaza).
2. Model Plaza Page Layout
Top to bottom: tabs → stats bar → filter bar → card grid → pagination.
Stats bar (4 cards): Total models / Healthy / Cooling / Blocked.
Filter bar
- Search box, placeholder "Search models...", matches name, vendor, display name, and public model ID.
- "Filter by type" + "All" button.
- "Filter by status" + "All / Healthy / Cooling / Blocked".
Model card fields
| Area | Content |
|---|---|
| Header | Brand icon + model display name + subtitle (display name / vendor); admins also see a pencil button with the hover tooltip "Edit model info" |
| Health badge | Healthy / Cooling / Blocked; on hover, Cooling shows "consecutive failures: N" and "remaining cooldown: Ns"; Blocked shows "permanently blocked (quota/auth error)" |
| Price badge | Shown only when price is entered: "Per-million-token price:" ¥X /M in ¥Y /M out |
| Capability tags | Context-length window badge + other capability tags |
| Footer | Model-type tag + "Avg latency: Nms" + "Reset" button (admin only, only on unhealthy cards) |
Empty state: title "No models"; regular users see "No models configured by your admin yet — please contact the admin to add some.".
Edit dialog (title "Edit model config — <model name>", buttons Save config / Cancel)
| Field | Description |
|---|---|
| Primary model type | Dropdown |
| Capability and category tags | Multiple allowed. Candidates: CHAT dialogue / EMBEDDING / RERANK / IMAGE2TEXT / VISION multimodal / TOOLS function calling / REASONING / CODE / SPEECH2TEXT / TTS / OCR |
| Supports multimodal (Vision) | Toggle |
| Context length (Max Tokens) | 1024 – 2048000 |
| Million input Token price (¥/1M tokens) | Number |
| Million output Token price (¥/1M tokens) | Number |
3. Smart Routing Panel
- One row per task type: Code / Reasoning / Chat / Creative / Summary / Translation / Agent / Default.
- Each row sets "Primary model" and "Policy": Best match / Fast & cheap / Long context / Default.
- Optionally specify a "Classifier model" (used to decide which task type a request belongs to).
- Buttons: "Save config" / "Restore defaults".
- Read-only for non-admins.
4. MCP Service Entry and Layout
Enter the "API Console" page (/platform-api-console), which contains two relevant tabs:
| Tab | Visibility |
|---|---|
| MCP Services | All logged-in users |
| MCP Call Keys | Super admin only |
MCP Services page layout
- Left service list: "All MCPs" + 5 services; each item shows
host:port · tool countas subtitle. - Right detail area:
- Title + endpoint tags.
- Segmented switcher:
StreamableHTTP/SSE header/SSE ?api_key— three connection methods. - "Copy" button — copies the current connection method's config JSON.
- Service description + capability list + config JSON code block.
- Tool catalog table: header
Tool name / Description / Parameters (* required). - "Connection examples" collapsible panel: Python / SSE two tabs.
- Card header buttons: "Fill in my Key" (with a second confirmation, injects the decrypted Key into the JSON), "Refresh".
- Hint text: "The following endpoints share the same API Key as Model Plaza:", "Dynamic skills (skill__*) must be fetched by connecting to the MCP gateway directly and calling
tools/list— they are not in this catalog". - Empty state: "No tool catalog yet — it loads automatically after you create a Key".
5. The 5 MCP Instances and Their Tools
| Instance | Title | Path prefix | Tool prefix |
|---|---|---|---|
knowledge | Knowledge-Base MCP | /kb | ragflow_retrieval / kb_* |
datahub | Data-Hub MCP | /datahub | dh_* |
image | Document-Image MCP | /image | kb_get_image / kb_describe_image |
graph | Knowledge-Graph MCP | /graph | graph_* |
wiki | LLM-Wiki MCP | /wiki | wiki_* |
Key tools
| Instance | Tools |
|---|---|
| Knowledge base (9) | ragflow_retrieval, kb_retrieval (same capability, alias), kb_list_datasets, kb_get_dataset, kb_list_documents, kb_upload_document (the only write tool), kb_list_chunks, kb_get_chunk, kb_get_knowledge_graph |
| Document image (2) | kb_get_image, kb_describe_image |
| Data hub (23) | Smart Q&A, catalog search, datasets and fields, metrics (list / query / trend / batch), tags and user profiles, audiences, lineage and impact analysis, quality, security reports, DataOps, anomaly detection and root cause, compliance, and more |
| Knowledge graph (15) | graph_search, graph_get_entity, graph_relations, graph_path, graph_neighbors, graph_subgraph, graph_cypher, graph_ontology, graph_stats, graph_summary, graph_pagerank, graph_centrality, graph_community, graph_similar, graph_duplicates |
| LLM-Wiki (6) | Switch status, overview, health, entry list, audit report, patrol history — all read-only |
Dynamic skills (
skill__<name>) are not exposed in the tool catalog by default; connect to the MCP gateway directly and calltools/listto fetch them.
6. MCP Call Key Management (super admin only)
Card title "MCP Call Keys", buttons "Refresh" / "New key".
Hint text: "When bound to an account, the MCP egress audit can trace the specific caller account (personal key); if unbound, it's an enterprise-shared key. The plaintext key is shown only once, at creation."
Table columns: ID / Name / Account (caller) / Role / Scope / Status / Last used / Actions.
Status: Enabled / Disabled / Revoked.
Actions: "Disable / Enable" (toggle), "Revoke" (with a second confirmation: "The key becomes invalid immediately after revocation. Confirm?").
New key dialog (title "New MCP Call Key")
| Field | Description |
|---|---|
| Key name | Placeholder "e.g. zhangsan-personal / data-team" |
| Bound account (email / nickname) | Hint "Once selected, this key belongs to the account and audit can trace the caller; leave empty for an enterprise-shared key" |
| Role snapshot (optional) | Hint "Recorded only, not authorized" |
| Scope | Personal (requires account binding) / Enterprise-shared, default Personal |
| Expiry (optional) | ISO 8601 format |
Success dialog title "MCP key created (shown only once — save it now)", with a "Copy key" button.
4. Best Practices
Model Plaza
- Check the stats bar every day: If "Blocked" or "Cooling" is non-zero, act on it — reset or swap models. Don't wait for the business to report "AI isn't responding".
- Prices are entered manually ⚠️: The prices shown in the plaza are manually entered by admins; they don't auto-sync from any billing system. Wrong prices mislead selection — double-check after editing.
- "Reset" is first aid, not a fix: Reset only clears the cooldown and failure counter, it does not solve the root cause. If a model repeatedly enters cooldown, first check whether the Key is expired, the quota is exhausted, or the network is unreachable.
- Configure smart routing by cost-sensitivity: For high-volume, lower-stakes tasks (summary, translation, short chat), point to cheap models; for reasoning, code, and Agent tasks, point to strong models. This is the most direct cost lever.
- Virtual models
auto/smart-autoaren't real models: They are routing entry points (autois sticky-stable,smart-autois dynamic intent). Changing smart-routing config directly affects every caller that uses these entry points. - Non-admins should ask an admin: The plaza is read-only for regular users. If you see a "Blocked" model you want to reset, or a wrong price you want to fix, you need an admin account.
MCP Services
- Key plaintext is shown only once: After closing the new-key dialog, the plaintext is gone forever (only fingerprint / ciphertext is stored). Copy and save it to your password manager immediately — don't expect to recover it later.
- "Role snapshot" is not authorization: The role recorded on a key is just an audit snapshot; it does not participate in permission decisions. Real permissions are resolved server-side from the account identity. To control permissions, change the account.
- Bind a key to an account for personal use: An unbound key is an enterprise-shared key — when something goes wrong you can't tell who called it. When issuing a key to an individual, always bind it to an account so egress audit can trace it back.
- Revoke rather than leave: When a person leaves the team or a key is suspected leaked, "Revoke" it directly — revoked keys take effect immediately and cannot be recovered (unlike "Disable", which can be re-enabled).
- SSE browser limitation: The browser's
EventSourcecannot set custom request headers, so it can only use the?api_key=connection method. For Python / Node clients, prefer StreamableHTTP. - Config JSON must be wrapped in
mcpServers: Pastingtype / url / headersdirectly makes the parser mistake them for server names. Use the page's "Fill in my Key" to avoid the hassle. - 401 usually means a stale Key: If the client returns 401, first check whether the Key is an old version or has been revoked; long-connection read timeouts are usually caused by reverse-proxy buffering — not by the model or the tool.
- Knowledge-graph calls have an extra rate limit: Heavy graph queries (path, subgraph, PageRank, etc.) use a separate rate-limit bucket; if the rate-limiter fails, it rejects all heavy operations (fail-closed). Evaluate frequency before running batch graph queries.
kb_upload_documentis the only write-capable tool: Every other tool is read-only. When exposing to external clients, watch this one — in read-only scenarios, you can tighten its permissions.