Skip to main content
Glama
index.ts3.35 kB
import { Static, Type } from '@sinclair/typebox' import { BaseModelSchema, DiscriminatedUnion } from '../common/base-model' export const AnthropicProviderConfig = Type.Object({ apiKey: Type.String(), }) export type AnthropicProviderConfig = Static<typeof AnthropicProviderConfig> export const AzureProviderConfig = Type.Object({ apiKey: Type.String(), resourceName: Type.String(), }) export type AzureProviderConfig = Static<typeof AzureProviderConfig> export const GoogleProviderConfig = Type.Object({ apiKey: Type.String(), }) export type GoogleProviderConfig = Static<typeof GoogleProviderConfig> export const OpenAIProviderConfig = Type.Object({ apiKey: Type.String(), }) export type OpenAIProviderConfig = Static<typeof OpenAIProviderConfig> export const OpenRouterProviderConfig = Type.Object({ apiKey: Type.String(), }) export type OpenRouterProviderConfig = Static<typeof OpenRouterProviderConfig> export const AIProviderConfig = Type.Union([ AnthropicProviderConfig, AzureProviderConfig, GoogleProviderConfig, OpenAIProviderConfig, OpenRouterProviderConfig, ]) export type AIProviderConfig = Static<typeof AIProviderConfig> export enum AIProviderName { OPENAI = 'openai', OPENROUTER = 'openrouter', ANTHROPIC = 'anthropic', AZURE = 'azure', GOOGLE = 'google', ACTIVEPIECES = 'activepieces', } const ProviderConfigUnion = DiscriminatedUnion('provider', [ Type.Object({ provider: Type.Literal(AIProviderName.OPENAI), config: OpenAIProviderConfig, }), Type.Object({ provider: Type.Literal(AIProviderName.OPENROUTER), config: OpenRouterProviderConfig, }), Type.Object({ provider: Type.Literal(AIProviderName.ANTHROPIC), config: AnthropicProviderConfig, }), Type.Object({ provider: Type.Literal(AIProviderName.AZURE), config: AzureProviderConfig, }), Type.Object({ provider: Type.Literal(AIProviderName.GOOGLE), config: GoogleProviderConfig, }), Type.Object({ provider: Type.Literal(AIProviderName.ACTIVEPIECES), config: OpenRouterProviderConfig, }), ]) export const AIProvider = Type.Intersect([ Type.Object({ ...BaseModelSchema }), ProviderConfigUnion, Type.Object({ displayName: Type.String({ minLength: 1 }), platformId: Type.String(), }), ]) export type AIProvider = Static<typeof AIProvider> export const AIProviderWithoutSensitiveData = Type.Object({ id: Type.String(), name: Type.String(), configured: Type.Boolean(), }) export type AIProviderWithoutSensitiveData = Static<typeof AIProviderWithoutSensitiveData> export enum AIProviderModelType { IMAGE = 'image', TEXT = 'text', } export const AIProviderModel = Type.Object({ id: Type.String(), name: Type.String(), type: Type.Enum(AIProviderModelType), }) export type AIProviderModel = Static<typeof AIProviderModel> export const CreateAIProviderRequest = ProviderConfigUnion export type CreateAIProviderRequest = Static<typeof CreateAIProviderRequest> export const AIErrorResponse = Type.Object({ error: Type.Object({ message: Type.String(), type: Type.String(), code: Type.String(), }), }) export type AIErrorResponse = Static<typeof AIErrorResponse>

Latest Blog Posts

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/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server