/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ /** * Shared types for the /mcp landing page variants. * * The catalog shape mirrors what `node packages/mcp/dist/cli.js --dump-tools` * is expected to emit. Until that script lands, the landing pages can fall * back to `MOCK_CATALOG` from ./data.ts so we can iterate on visuals. */ export type ToolScope = 'read' | 'mutate' | 'export'; export type ToolCategory = | 'Discovery' | 'Query' | 'Geometry' | 'Validation' | 'Mutation' | 'BCF' | 'bSDD' | 'Diff' | 'Export' | 'Viewer' | 'Clash'; export interface CatalogTool { name: string; description: string; scope: ToolScope; category: ToolCategory; inputSchema: unknown; } export interface McpCatalog { generatedAt?: string; version?: string; tools: CatalogTool[]; } export type McpClientId = 'claude-desktop' | 'cursor' | 'windsurf' | 'vscode' | 'goose'; export interface McpClient { id: McpClientId; name: string; /** Short blurb shown under the button title. */ blurb: string; /** Path to a logo image inside /public, or null if we render a glyph. */ logo?: string; /** Optional deep-link URL scheme prefix (cursor://, windsurf://, vscode:). */ deepLinkPrefix?: string; /** Where the user pastes the JSON snippet. */ configHint: string; } export interface McpRecipe { id: string; title: string; /** The actual prompt the user copies. */ prompt: string; /** Comma-separated tool names this recipe likely fans out to. */ uses: string[]; /** Visual category for grouping/coloring. */ family: 'audit' | 'visualize' | 'validate' | 'author' | 'compare' | 'discover'; }