oracle-models
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@oracle-modelsclassify this task: refactor login flow"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Oracle Models
Classifies development task complexity (LIGHT/MEDIUM/HEAVY) and suggests the most cost-efficient AI model — with client auto-detection that filters suggestions to match your environment.
10 providers: Claude (Anthropic), Gemini (Google), GPT (OpenAI), Grok (xAI), DeepSeek, Kimi (Moonshot), Qwen (Alibaba), Llama (Meta), Mistral, GLM (Z.ai).
Data sourced from the Artificial Analysis Intelligence Index.
Agent Compatibility
Agent | MCP Server | Skill | Install command |
Yes | Yes |
| |
Yes | Yes |
| |
Yes | Yes |
| |
Yes | Yes |
| |
Yes | Yes |
|
Other Compatible Agents: Cursor, Cline, Windsurf, Roo Code, Goose, Kiro CLI, Amp, Augment, Trae, GitHub Copilot, VS Code Copilot.
To install for other agents, use the same command format:
npx skills add vanppsa/oracle-models -g -a <agent-name> -y.
Related MCP server: local-agent
Client Auto-Detection
Oracle Models automatically detects your MCP client during initialization and tailors model suggestions:
Native clients (Claude Code, Gemini CLI, Antigravity CLI, Codex) — returns only your provider's models. No noise.
Aggregator clients (OpenCode, Cursor, Cline, etc.) — returns the best 4 models across all providers, with at least 1 open-source model. DeepSeek is prioritized as best value.
Unknown clients — treated as aggregators.
Quick Start
Install the Skill
# Install for all detected agents (recommended)
npx skills add vanppsa/oracle-models -g -y
# Install for a specific agent
npx skills add vanppsa/oracle-models -g -a opencode -yAdd the MCP Server
The skill provides behavioral instructions, but you also need the MCP server for live tools. Pick your agent below:
MCP Server Setup by Agent
Standard MCP Configuration
The following agents share the same MCP configuration structure. Add this block to their respective configuration files as indicated:
{
"mcpServers": {
"oracle-models": {
"command": "npx",
"args": ["-y", "oracle-models-mcp"]
}
}
}Claude:
claude mcp add oracle-models -- npx -y oracle-models-mcpCursor: Add to
.cursor/mcp.json(project) or~/.cursor/mcp.json(global).Cline: Add to
.cline/mcp.jsonor via Cline settings → MCP Servers.Windsurf: Add to
.codeium/windsurf/mcp.jsonor via Windsurf settings → MCP.Codex: Add to
~/.codex/mcp.jsonor via Codex settings.Roo Code: Add to
.roo/mcp.jsonor via Roo Code settings → MCP.Goose: Add to
~/.config/goose/mcp.jsonor viagoose session --with-mcp oracle-models -- npx -y oracle-models-mcp.Kiro CLI: Add to
.kiro/mcp.json.
Antigravity CLI
Antigravity CLI stores MCP servers in a dedicated mcp_config.json file. You can configure it globally or per workspace.
Workspace (recommended): Add to .agents/mcp_config.json:
{
"mcpServers": {
"oracle-models": {
"command": "npx",
"args": ["-y", "oracle-models-mcp"],
"timeout": 10000
}
}
}Global: Add to ~/.gemini/antigravity-cli/mcp_config.json:
{
"mcpServers": {
"oracle-models": {
"command": "npx",
"args": ["-y", "oracle-models-mcp"],
"timeout": 10000
}
}
}Or via CLI:
agy mcp add oracle-models -- npx -y oracle-models-mcpNote: For remote MCP servers, Antigravity CLI uses
serverUrlinstead ofurl.
Gemini CLI
Deprecation notice: Gemini CLI will be fully migrated to Antigravity CLI on June 18th. The configuration below remains valid until then.
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"oracle-models": {
"command": "npx",
"args": ["-y", "oracle-models-mcp"],
"timeout": 10000
}
}
}Or via CLI:
gemini mcp add oracle-models -- npx -y oracle-models-mcpOpenCode
Add to ~/.config/opencode/opencode.json:
{
"mcp": {
"oracle-models": {
"type": "local",
"command": ["npx", "-y", "oracle-models-mcp"],
"enabled": true,
"timeout": 10000
}
}
}VS Code Copilot
Add to .vscode/mcp.json or via VS Code settings → MCP:
{
"servers": {
"oracle-models": {
"command": "npx",
"args": ["-y", "oracle-models-mcp"]
}
}
}MCP Tools Reference
classify_task
Classifies a development task by complexity using a weighted scoring engine with critical domain detection, penalty keywords, and entropy analysis.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Natural language description of the task |
| number | No | Estimated number of affected files |
| number | No | Character count of the full task description if providing a summary. Used for entropy detection — long plans are automatically upgraded |
Example:
{ "description": "Add email validation to registration form", "files_affected": 2 }Response:
{
"tier": "MEDIUM",
"reason": "Inclusion of complex business rules/validations",
"estimated_files": "2–5",
"estimated_tokens": "200–800",
"score": 15
}get_model_suggestions
Returns recommended models for a tier. Auto-detects your client environment and filters accordingly.
Parameters:
Parameter | Type | Required | Description |
|
| Yes | Complexity tier |
| string | No | Provider to highlight. One of: |
Response (aggregator client — e.g., OpenCode):
{
"tier": "HEAVY",
"updated_at": "2026-05-20",
"data_source": "fallback",
"client_detected": "opencode",
"client_type": "aggregator",
"client_label": "OpenCode",
"models": {
"openai": { "name": "GPT-5.5 (xhigh)", "score": 60, "price": 4.35, "speed": 659, "price_blended_usd_per_1m": 4.35 },
"anthropic": { "name": "Claude Opus 4.7 (max)", "score": 57, "price": 4.10, "speed": 512, "price_blended_usd_per_1m": 4.10 },
"moonshot": { "name": "Kimi K2.6", "score": 54, "price": 0.70, "speed": 972, "price_blended_usd_per_1m": 0.70 },
"deepseek": { "name": "DeepSeek V4 Pro (Max)", "score": 52, "price": 0.71, "speed": 302, "price_blended_usd_per_1m": 0.71 }
},
"suggested_first": "openai"
}Response (native client — e.g., Claude Code):
{
"tier": "HEAVY",
"updated_at": "2026-05-20",
"data_source": "fallback",
"client_detected": "claude-code",
"client_type": "native",
"native_provider": "anthropic",
"client_label": "Claude Code",
"models": {
"anthropic": { "name": "Claude Opus 4.7 (max)", "score": 57, "price": 4.10, "speed": 512, "price_blended_usd_per_1m": 4.10 }
},
"suggested_first": "anthropic"
}format_plan_block
Generates the formatted classification block to append at the end of a plan.
Parameters:
Parameter | Type | Required | Description |
|
| Yes | Complexity tier |
| string | Yes | Technical reason for classification |
| string | Yes | Estimated files affected |
| string | Yes | Estimated tokens to generate |
| string | No | Provider to highlight |
Response:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 TASK CLASSIFICATION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Tier : MEDIUM
Reason : Inclusion of complex business rules/validations
Files : ~2–5 files | ~200–800 tokens generated
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤖 SUGGESTED MODELS FOR EXECUTION (OpenCode)
GPT : GPT-5.4 mini (xhigh) ✨ (Suggested for your environment)
DeepSeek : DeepSeek V4 Flash (Max)
Gemini : Gemini 3 Flash
GLM : GLM-5
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━How It Works
Oracle Models ensures you use the right AI model for the right job. It distinguishes between planning (designing the solution) and execution (actually writing the code or configuring the system).
Recommended workflow (MCP tools available)
The AI produces a multi-step action plan.
Classification: The AI calls
classify_taskto evaluate the complexity of EXECUTING the plan it just wrote.Suggestion: The AI calls
get_model_suggestionsto find the best models for that specific execution tier. Client auto-detection filters the results.Integration: The AI appends the formatted classification block at the end of the response.
Fallback workflow (skill only, no MCP)
If the MCP server is not configured, the skill contains the full classification criteria and model tables. The AI classifies manually using the rules defined in SKILL.md.
Classification Engine
The classification ALWAYS refers to the complexity of executing the plan. The engine uses a weighted scoring system with a pessimistic top-down decision flow.
Decision Flow (top-down, pessimistic)
Critical domain match? → HEAVY (stops here)
Description length > 3000 chars? → HEAVY (stops here)
Accumulated score >= 40? → HEAVY
Accumulated score >= 20? → MEDIUM
Penalty keywords OR (files >= 2 AND criteriaScore >= 5)? → MEDIUM
Otherwise → LIGHT
Important: The
files >= 2safety net requirescriteriaScore >= 5— at least one criterion must match. Tasks with zero criteria matches remain LIGHT even if affecting multiple files.
Critical Domains (automatic HEAVY)
Any match forces HEAVY regardless of other criteria: auth/security, payment/billing/financial, schema migration/database, cryptography, compliance (LGPD/GDPR), architecture redesign, non-deterministic debugging, data pipeline/ETL.
Penalty Keywords (disqualify LIGHT)
These terms prevent LIGHT classification: export interface/type/enum, public api, breaking change, import from shared/core, entry files (index.ts, types.ts, main.ts), state management (Redux, Zustand, Context API), database terms, secrets/credentials.
Scoring Overview
HEAVY criteria (+25-30 pts each): Architectural changes, auth/security, external integration, non-deterministic bugs, DB migration, performance profiling, billing/payment, data pipelines, state management architecture, wide-scope refactoring.
MEDIUM criteria (+10-15 pts each): New component with state, signature change, complex validation, new endpoint, hook/composable, feature flag, data migration, pagination/filter/sort, bug fix, Docker/infra, test suite, config changes, error handling, code restructuring, third-party API integration.
LIGHT criteria (+3-5 pts each): Literal value change, CSS/style, safe rename, form field, route adjust, translation/i18n, documentation, dependency update, typo.
Entropy bonuses: Description > 1500 chars (+15), > 3000 chars (auto HEAVY). Files >= 5 (+30), >= 3 (+15), >= 2 (+5).
English-Only Patterns
All classification patterns are in English. Before calling classify_task, normalize non-English task descriptions to English (e.g., "validação de email" → "email validation"). This ensures patterns match correctly.
LIGHT Sanitary Filter
A task is only LIGHT if it passes ALL: no penalty keywords, < 2 files, criteriaScore < 5, total score < 20, no critical domain match.
Cache and Offline Support
Model data follows a 3-tier data strategy:
Cache — check
~/.oracle-models/cache.json(7-day TTL)Live — fetch from Artificial Analysis API v2 (requires
AA_API_KEY)Fallback — use bundled
data/fallback.json
If the remote source is unreachable or no API key is configured, the server transparently uses fallback data.
Live Data Setup (Optional)
To enable live model data updates from Artificial Analysis:
Create a free account at https://artificialanalysis.ai/login
Generate an API key in the Insights Platform
Set the
AA_API_KEYenvironment variable:
export AA_API_KEY=your_api_key_hereOr configure in your MCP setup:
{
"mcpServers": {
"oracle-models": {
"command": "npx",
"args": ["-y", "oracle-models-mcp"],
"env": {
"AA_API_KEY": "your_api_key_here"
}
}
}
}Rate limit: 1,000 requests/day (free tier)
Cache: 7 days locally
Attribution: Data sourced from artificialanalysis.ai
Without API key: The server uses bundled fallback data (updated periodically)
Why Reinforce in Agent Instructions?
AI agents are autonomous — they choose whether or not to call MCP tools. No skill can force them.
Oracle Models injects behavioral instructions into the agent's context, telling it when and how to classify tasks. However:
The agent decides whether to follow these instructions on each turn.
Compliance varies by model, provider, context window, conversation history, and agent configuration.
Even when the skill says "mandatory," the agent may skip the workflow — intentionally or by oversight.
This is not a bug. It is inherent to how LLM-based agents work: they interpret instructions, they do not execute them deterministically.
How to increase compliance
Add the reinforcement block below to your project's agent instruction file. This gives the agent two independent signals — one from the skill, one from your instructions — significantly increasing the chance it follows through.
Where to add it:
OpenCode:
AGENTS.md(global or per-project)Claude Code:
CLAUDE.mdGemini CLI:
GEMINI.mdCursor:
.cursorrulesWindsurf:
.windsurfrulesCline:
.clinerulesRoo Code:
.roorulesCodex:
AGENTS.mdorcodex.md
Reinforcement template
Copy and paste this block into your agent's instruction file:
## Oracle Models — Mandatory Plan Classification
**RULE:** Every time my response contains a sequence of implementation steps (Step 1, Step 2... or a list of actions the user will execute), I MUST finalize the response with the Oracle Models classification block.
**NOT required** when: response is explanation only, conversation, or direct code edit without a prior plan.
**Mandatory workflow at the end of every plan:**
1. **Normalize description to English** (if task is in another language, translate core intent: "traduzir" → "translate", "validação de email" → "email validation")
2. Call `oracle-models > classify_task` with a description of the EXECUTION (not the planning)
3. Call `oracle-models > get_model_suggestions` with the returned tier
4. Compose and append the block below at the end of the response:
### TASK CLASSIFICATION
- **Tier:** `[LIGHT | MEDIUM | HEAVY]`
- **Reason:** [Technical phrase referencing the determining criteria of the plan's EXECUTION]
- **Estimated Scope:** ~[N] files | ~[N] tokens generated
### SUGGESTED MODELS FOR EXECUTION
[Provider] : [model] | [Provider] : [model] | ...
> **Note:** The classification refers to the complexity of **executing** this plan, not creating it.Development
npm install
npm run build
npm run startPublishing
The MCP server is published on npm as oracle-models-mcp:
npm run build
npm publishThe skill is distributed via GitHub and skills.sh. Users install with:
npx skills add vanppsa/oracle-models -g -yNo manual registration is needed — skills appear on the leaderboard automatically as users install them via the CLI.
License
MIT
Available Tools
3 toolsclassify_taskA
MANDATORY: Classifies the complexity of a dev task. If the user input is not in English, translate the core intent to English before calling (e.g., 'traduzir' -> 'translate').
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Natural language description of the task | |
| files_affected | No | Estimation of affected files (optional) | |
| description_length | No | Character count of the full task description if providing a summary (optional). Used for entropy detection — long plans are automatically upgraded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of disclosure. It reveals the translation requirement and confirms the classification behavior, but does not disclose the nature of the output, side effects, or any rate limits. This is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence with a parenthetical example. It is front-loaded with the core purpose and includes essential usage instruction without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 3 parameters and no output schema. The description explains the core purpose and a translation rule, but does not specify what the classification output looks like or any error conditions. It is adequate but could be more thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds significant value by instructing the agent to translate non-English input for the 'description' parameter, which is a behavioral constraint not present in the schema. This enhances the semantic understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Classifies the complexity of a dev task.' It uses a specific verb ('classifies') and resource ('complexity of a dev task'), and the sibling tools (format_plan_block, get_model_suggestions) have distinct purposes, so there is no confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings or alternatives. It includes a mandatory instruction about translating non-English input, but does not explain when not to use the tool or any contextual prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_plan_blockA
MANDATORY: Generates the formatted output block to be pasted at the end of every plan as a system protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | Yes | ||
| reason | Yes | ||
| estimated_files | Yes | ||
| estimated_tokens | Yes | ||
| preferred_provider | No | Optional, same value passed in get_model_suggestions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states generation but lacks details on side effects or idempotency. However, tool is straightforward, so minimal transparency is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Could add minor context, but effective and front-loaded with 'MANDATORY'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, low schema coverage, and no output schema or annotations, the description fails to provide sufficient detail for correct invocation, especially for parameter values and output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only preferred_provider has description). Description does not explain tier, reason, estimated_files, or estimated_tokens, leaving their meaning unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a formatted output block for plan end, distinguishing it from siblings like classify_task and get_model_suggestions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'MANDATORY' and 'to be pasted at the end of every plan', indicating when to use. No explicit when-not-to or alternatives, but given mandatory nature, it's sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_suggestionsA
Returns suggested models for a tier. Auto-detects your client environment (Claude Code, Gemini CLI, OpenCode, etc.) and filters suggestions accordingly. Native clients (Claude Code, Gemini CLI, Codex) receive only their provider's models. Aggregator clients (OpenCode, Cursor, Cline) receive the best 4 models across all providers including open-source (DeepSeek, Kimi, Qwen, Llama, Mistral). Pass preferred_provider to highlight a specific provider.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | Yes | Task tier (LIGHT, MEDIUM, HEAVY) | |
| preferred_provider | No | Provider to highlight (optional). Auto-detected from your client if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral aspects: auto-detection of client environment, filtering logic for native vs. aggregator clients, and optional provider highlighting. No destructive actions or rate limits are mentioned, which is appropriate for a read-only suggestion tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, auto-detection behavior, and filtering detail. No redundant information. Front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema and no output schema, the description adequately covers the tool's behavior and parameter usage. It could mention the output format (e.g., list of model names) but the current level is sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with enum descriptions. The description adds value beyond the schema by explaining that preferred_provider is auto-detected if omitted and that tier affects the suggestion logic. This supplements the schema effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Returns suggested models for a tier', which is a specific verb and resource. It further explains auto-detection of client environment and filtering logic, differentiating it from sibling tools like classify_task and format_plan_block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: native clients receive only their provider's models, aggregator clients receive top 4 across providers. It also advises using preferred_provider to highlight a specific provider. It lacks explicit when-not-to-use instructions but is generally helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v2.0.0- First observed
classify_task - First observed
format_plan_block - First observed
get_model_suggestions
TDQS
Each tool has a clearly distinct purpose: task classification, plan block formatting, and model suggestions. No overlap in functionality.
All tool names follow a consistent verb_noun pattern in snake_case: classify_task, format_plan_block, get_model_suggestions.
With only 3 tools, the server is near the lower end of the well-scoped range. It covers its intended niche adequately but feels slightly thin for a server named 'oracle-models'.
The tools cover classification, plan formatting, and model suggestions, but lack direct model invocation or detailed model information, which are notable gaps for a model-oriented server.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Cost-optimized LLM model routing recommendations for autonomous AI agents
LLM provider intelligence: recommendations, pricing, and status
Vendor intelligence for AI coding agents choosing developer tools and stacks.
AI-powered spec-to-task decomposition and execution orchestration for coding agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceOptimizes token costs by intelligently delegating low-complexity tasks to local LLMs via LiteLLM, enabling cost-effective development workflows.31MIT
- FlicenseNot gradedqualityBmaintenanceRoutes code generation tasks between local models and Claude Cloud, optimizing cost by handling simple tasks locally and reserving cloud thinking for complex tasks.-
- AlicenseNot gradedqualityBmaintenanceClassifies software implementation tasks using local Ollama models and recommends coding-agent models based on a deterministic policy.15Apache 2.0
- AlicenseNot gradedqualityCmaintenanceClassifies AI agent turns by complexity and recommends the cheapest model that can handle them, reducing costs in multi-step workflows.12MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vanppsa/oracle-models'
If you have feedback or need assistance with the MCP directory API, please join our Discord server