tryaii-mcp-server
Version:
MCP Server for TryAII - Lightweight proxy to TryAII API service
459 lines (458 loc) • 17.1 kB
JavaScript
// ============================================================================================
// MODEL REGISTRY - Extracted from core-logic.ts
// ============================================================================================
export const AVAILABLE_MODELS = [
// Default model - ensuring this is always available
{
id: "gpt-4o",
modelId: "gpt-4o",
name: "GPT-4o (omni)",
provider: "OpenAI",
webSearch: true,
reasoning: false,
maxContextTokens: 128000,
inputCostPer1kTokens: 0.0025,
outputCostPer1kTokens: 0.01,
latencySpeed: "medium",
description: "GPT-4o is OpenAI's most advanced model with strong capabilities across multiple domains.",
capabilities: ['text', 'code', 'reasoning', 'analysis']
},
// Other OpenAI models
{
id: "gpt-4o-mini",
modelId: "gpt-4o-mini",
name: "GPT-4o-mini",
provider: "OpenAI",
webSearch: true,
reasoning: false,
maxContextTokens: 128000,
inputCostPer1kTokens: 0.00015,
outputCostPer1kTokens: 0.0006,
latencySpeed: "very-fast",
description: "GPT-4o-mini is OpenAI's smallest and fastest model for quick tasks.",
capabilities: ['text', 'code', 'reasoning']
},
// {
// id: "o3",
// modelId: "o3",
// name: "o3",
// provider: "OpenAI" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.002,
// outputCostPer1kTokens: 0.008,
// latencySpeed: "very-slow",
// description: "OpenAI's most advanced model for complex tasks.",
// capabilities: ['text', 'code', 'reasoning']
// },
// {
// id: "o3-mini",
// modelId: "o3-mini",
// name: "o3-mini",
// provider: "OpenAI" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 128000,
// inputCostPer1kTokens: 0.0011,
// outputCostPer1kTokens: 0.0044,
// latencySpeed: "fast",
// description: "Lightweight OpenAI model with good performance at a lower cost.",
// capabilities: ['text', 'code', 'reasoning']
// },
// {
// id: "o4-mini",
// modelId: "o4-mini",
// name: "o4-mini",
// provider: "OpenAI" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.0011,
// outputCostPer1kTokens: 0.0044,
// latencySpeed: "medium",
// description: "OpenAI's smallest and fastest model for quick tasks.",
// capabilities: ['text', 'code', 'reasoning']
// },
// {
// id: "o1",
// modelId: "o1",
// name: "o1",
// provider: "OpenAI" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.015,
// outputCostPer1kTokens: 0.06,
// latencySpeed: "very-slow",
// description: "OpenAI's most advanced model for complex tasks.",
// capabilities: ['text', 'code', 'reasoning']
// },
// {
// id: "gpt-4.1-nano",
// modelId: "gpt-4.1-nano",
// name: "GPT-4.1-nano",
// provider: "OpenAI" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.0001,
// outputCostPer1kTokens: 0.0004,
// latencySpeed: "fast",
// description: "OpenAI's most advanced model for complex tasks.",
// capabilities: ['text', 'code', 'reasoning']
// },
// {
// id: "gpt-4.1",
// modelId: "gpt-4.1",
// name: "GPT-4.1",
// provider: "OpenAI" as Provider,
// webSearch: true,
// reasoning: false,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.002,
// outputCostPer1kTokens: 0.008,
// latencySpeed: "medium",
// description: "OpenAI's most advanced model for complex tasks.",
// capabilities: ['text', 'code', 'reasoning']
// },
// {
// id: "gpt-4.5-preview",
// modelId: "gpt-4.5-preview",
// name: "GPT-4.5-preview",
// provider: "OpenAI" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.075,
// outputCostPer1kTokens: 0.15,
// latencySpeed: "fast",
// description: "OpenAI's latest model for complex tasks.",
// capabilities: ['text', 'code', 'reasoning']
// },
// // Anthropic Models (no built-in web search)
// {
// id: "claude-3-haiku-20240307",
// modelId: "claude-3-haiku-20240307",
// name: "Claude 3 Haiku (Mar 2024)",
// provider: "Anthropic" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.00025,
// outputCostPer1kTokens: 0.00125,
// latencySpeed: "very-fast",
// description: "Claude 3 Haiku with 200K token context window. Fast and efficient for simple tasks.",
// capabilities: ['text', 'code', 'vision', 'multilingual', 'fast-responses']
// },
// {
// id: "claude-3-7-sonnet-20250219",
// modelId: "claude-3-7-sonnet-20250219",
// name: "Claude 3.7 Sonnet (Feb 2025)",
// provider: "Anthropic" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.003,
// outputCostPer1kTokens: 0.015,
// latencySpeed: "medium",
// description: "Our most intelligent Claude model with extended thinking capabilities and 200K token context window.",
// capabilities: ['text', 'code', 'reasoning', 'vision', 'multilingual', 'extended-thinking']
// },
// {
// id: "claude-3-5-haiku-20241022",
// modelId: "claude-3-5-haiku-20241022",
// name: "Claude 3.5 Haiku (Oct 2024)",
// provider: "Anthropic" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.0008,
// outputCostPer1kTokens: 0.004,
// latencySpeed: "very-fast",
// description: "Our fastest model with great intelligence for routine tasks and quick responses.",
// capabilities: ['text', 'code', 'vision', 'multilingual', 'fast-responses']
// },
// {
// id: "claude-3-5-sonnet-20241022",
// modelId: "claude-3-5-sonnet-20241022",
// name: "Claude 3.5 Sonnet v2 (Oct 2024)",
// provider: "Anthropic" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.003,
// outputCostPer1kTokens: 0.015,
// latencySpeed: "medium",
// description: "Upgraded Claude 3.5 Sonnet with 200K token context window and improved capabilities.",
// capabilities: ['text', 'code', 'reasoning', 'vision', 'multilingual']
// },
// {
// id: "claude-3-opus-20240229",
// modelId: "claude-3-opus-20240229",
// name: "Claude 3 Opus (Feb 2024)",
// provider: "Anthropic" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.015,
// outputCostPer1kTokens: 0.075,
// latencySpeed: "very-slow",
// description: "Claude 3 Opus with 200K token context window. Anthropic's most powerful model for complex tasks.",
// capabilities: ['text', 'code', 'reasoning', 'vision', 'multilingual', 'long-content']
// },
// {
// id: "claude-opus-4-20250514",
// modelId: "claude-opus-4-20250514",
// name: "Claude Opus 4 (May 2025)",
// provider: "Anthropic" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.015,
// outputCostPer1kTokens: 0.075,
// latencySpeed: "slow",
// description: "Claude's latest model for advanced reasoning and complex tasks.",
// capabilities: ['text', 'code', 'reasoning', 'multilingual']
// },
// {
// id: "claude-sonnet-4-20250514",
// modelId: "claude-sonnet-4-20250514",
// name: "Claude Sonnet 4 (May 2025)",
// provider: "Anthropic" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 200000,
// inputCostPer1kTokens: 0.003,
// outputCostPer1kTokens: 0.015,
// latencySpeed: "medium",
// description: "Claude's latest model for advanced reasoning and complex tasks.",
// capabilities: ['text', 'code', 'reasoning', 'multilingual']
// },
// // DeepSeek Models
// {
// id: "deepseek-reasoner",
// modelId: "deepseek-reasoner",
// name: "deepseek-reasoner",
// provider: "DeepSeek" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 64000,
// inputCostPer1kTokens: 0.00055,
// outputCostPer1kTokens: 0.00219,
// latencySpeed: "slow",
// description: "DeepSeek's advanced AI model with focus on code and technical content.",
// capabilities: ['text', 'code', 'reasoning', 'technical']
// },
// {
// id: "deepseek-chat",
// modelId: "deepseek-chat",
// name: "deepseek-chat",
// provider: "DeepSeek" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 64000,
// inputCostPer1kTokens: 0.00027,
// outputCostPer1kTokens: 0.0011,
// latencySpeed: "fast",
// description: "DeepSeek's advanced AI model with focus on code and technical content.",
// capabilities: ['text', 'code', 'technical']
// },
// // Google Models
// {
// id: "gemini-1.5-pro",
// modelId: "gemini-1.5-pro",
// name: "Gemini 1.5 Pro",
// provider: "Gemini" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.0025,
// outputCostPer1kTokens: 0.01,
// latencySpeed: "medium",
// description: "Google's most capable multimodal model for highly complex tasks.",
// capabilities: ['text', 'code', 'reasoning', 'vision', 'multilingual', 'long-content']
// },
// {
// id: "gemini-1.5-flash",
// modelId: "gemini-1.5-flash",
// name: "Gemini 1.5 Flash",
// provider: "Gemini" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.00015,
// outputCostPer1kTokens: 0.0006,
// latencySpeed: "fast",
// description: "Quick and efficient multimodal model for routine tasks.",
// capabilities: ['text', 'code', 'vision', 'multilingual', 'fast-responses']
// },
// {
// id: "gemini-2.0-flash-lite",
// modelId: "gemini-2.0-flash-lite",
// name: "Gemini 2.0 Flash Lite",
// provider: "Gemini" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.000075,
// outputCostPer1kTokens: 0.0003,
// latencySpeed: "very-fast",
// description: "Google's latest multimodal model with improved capabilities.",
// capabilities: ['text', 'image', 'video', 'audio', 'multilingual', 'fast-responses']
// },
// {
// id: "gemini-2.0-flash",
// modelId: "gemini-2.0-flash",
// name: "Gemini 2.0 Flash",
// provider: "Gemini" as Provider,
// webSearch: true,
// reasoning: false,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.0001,
// outputCostPer1kTokens: 0.0004,
// latencySpeed: "fast",
// description: "Google's latest multimodal model with improved capabilities.",
// capabilities: ['text', 'code', 'vision', 'multilingual', 'fast-responses']
// },
// {
// id: "gemini-2.5-flash-preview-05-20",
// modelId: "gemini-2.5-flash-preview-05-20",
// name: "Gemini 2.5 Flash (Apr 2025)",
// provider: "Gemini" as Provider,
// webSearch: true,
// reasoning: true,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.0001,
// outputCostPer1kTokens: 0.0004,
// latencySpeed: "fast",
// description: "Google's latest multimodal model with improved capabilities.",
// capabilities: ['text', 'code', 'vision', 'multilingual', 'fast-responses']
// },
// {
// id: "gemini-2.5-pro-preview-05-06",
// modelId: "gemini-2.5-pro-preview-05-06",
// name: "Gemini 2.5 Pro (May 2025)",
// provider: "Gemini" as Provider,
// webSearch: true,
// reasoning: true,
// maxContextTokens: 1048576,
// inputCostPer1kTokens: 0.0025,
// outputCostPer1kTokens: 0.01,
// latencySpeed: "slow",
// description: "Google's latest multimodal model with improved capabilities.",
// capabilities: ['text', 'code', 'vision', 'multilingual', 'fast-responses']
// },
// // Mistral Models
// {
// id: "mistral-large-latest",
// modelId: "mistral-large-latest",
// name: "Mistral Large (Latest)",
// provider: "Mistral" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 131000,
// inputCostPer1kTokens: 0.002,
// outputCostPer1kTokens: 0.006,
// latencySpeed: "medium",
// description: "Mistral's most powerful model for advanced reasoning and complex tasks.",
// capabilities: ['text', 'code', 'reasoning', 'multilingual']
// },
// {
// id: "mistral-small-latest",
// modelId: "mistral-small-latest",
// name: "Mistral Small (Latest)",
// provider: "Mistral" as Provider,
// webSearch: false,
// reasoning: false,
// maxContextTokens: 131000,
// inputCostPer1kTokens: 0.0001,
// outputCostPer1kTokens: 0.0001,
// latencySpeed: "very-fast",
// description: "Mistral's smallest model for quick tasks.",
// capabilities: ['text', 'code', 'multilingual']
// },
// // XAI Models
// {
// id: "grok-3-latest",
// modelId: "grok-3-latest",
// name: "Grok 3 (Latest)",
// provider: "XAI" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 131000,
// inputCostPer1kTokens: 0.003,
// outputCostPer1kTokens: 0.015,
// latencySpeed: "medium",
// description: "XAI's latest model for advanced reasoning and complex tasks.",
// capabilities: ['text', 'code', 'reasoning', 'multilingual']
// },
// {
// id: "grok-3-fast-latest",
// modelId: "grok-3-fast-latest",
// name: "Grok 3 Fast (Latest)",
// provider: "XAI" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 131000,
// inputCostPer1kTokens: 0.005,
// outputCostPer1kTokens: 0.025,
// latencySpeed: "fast",
// description: "XAI's fastest model for advanced reasoning and complex tasks.",
// capabilities: ['text', 'code', 'reasoning', 'multilingual']
// },
// {
// id: "grok-3-mini-latest",
// modelId: "grok-3-mini-latest",
// name: "Grok 3 Mini (Latest)",
// provider: "XAI" as Provider,
// webSearch: false,
// reasoning: true,
// maxContextTokens: 131000,
// inputCostPer1kTokens: 0.0003,
// outputCostPer1kTokens: 0.0005,
// latencySpeed: "fast",
// description: "XAI's smallest model for quick tasks.",
// capabilities: ['text', 'code', 'reasoning', 'multilingual']
// },
{
id: "grok-3-mini-fast-latest",
modelId: "grok-3-mini-fast-latest",
name: "Grok 3 Mini Fast (Latest)",
provider: "XAI",
webSearch: false,
reasoning: true,
maxContextTokens: 131000,
inputCostPer1kTokens: 0.0006,
outputCostPer1kTokens: 0.004,
latencySpeed: "fast",
description: "XAI's fastest model for quick tasks.",
capabilities: ['text', 'code', 'reasoning', 'multilingual']
}
];
// Utility functions for model registry
export function getAllModels() {
return AVAILABLE_MODELS;
}
export function getModelById(modelId) {
return AVAILABLE_MODELS.find(m => m.id === modelId);
}
export function getModelsByProvider(provider) {
return AVAILABLE_MODELS.filter(m => m.provider.toLowerCase() === provider.toLowerCase());
}
export function getReasoningModels() {
return AVAILABLE_MODELS.filter(m => m.reasoning);
}
export function getModelsWithWebSearch() {
return AVAILABLE_MODELS.filter(m => m.webSearch);
}
export function getBrainsModels() {
const brainModelIds = [
"o3",
"claude-opus-4-20250514",
"deepseek-chat",
"gemini-2.5-pro-preview-05-06",
"grok-3-latest"
];
return AVAILABLE_MODELS.filter(model => brainModelIds.includes(model.id));
}