Skip to main content
Glama

svelte_definition

Look up Svelte 5 and SvelteKit definitions from TypeScript declarations, covering runes like $state and $derived, features, and patterns with syntax, quick, or full detail levels.

Instructions

Lookup Svelte 5 & SvelteKit definitions from TypeScript declarations. Covers all runes ($state, $derived, $props, $effect), features (snippets, onclick, component-events), and patterns. Supports syntax/quick/full format for varying detail levels.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
identifierYesSvelte 5 identifier: $state, $derived, $props, $effect, snippets, onclick, component-events
formatNoOutput detail level: "syntax" (signature only), "quick" (with example), "full" (complete docs)full

Implementation Reference

  • The main execution logic for the svelte_definition tool: validates input, retrieves definition from database, formats output based on 'syntax/quick/full', handles errors with suggestions
    async function definition_handler(args: any) { try { // Validate input const { identifier, format = 'full' } = v.parse( DefinitionSchema, args, ); // Find the definition const definition = get_definition_by_identifier(identifier); if (!definition) { throw create_definition_error(identifier, definitions); } // Validate that definition content exists if ( !definition.content || definition.content.trim().length === 0 ) { throw new Error( `Definition for '${identifier}' exists but appears to be empty. Please try again later or contact support.`, ); } // Format the content based on requested format const formatted_content = format_definition_content( definition.content, format, ); // Add format info for context let response_content = formatted_content; if (format === 'syntax') { response_content += `\n\n*Use format="quick" or format="full" for more details.*`; } else if (format === 'quick') { response_content += `\n\n*Use format="full" for complete documentation.*`; } return { content: [ { type: 'text' as const, text: response_content, }, ], }; } catch (error) { // Re-throw with additional context for debugging const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred'; throw new Error(`Error in svelte_definition: ${errorMessage}`); } }
  • Valibot input schema defining parameters: identifier (required string) and format (optional: syntax/quick/full)
    const DefinitionSchema = v.object({ identifier: v.pipe( v.string(), v.minLength(1), v.description( 'Svelte 5 identifier: $state, $derived, $props, $effect, snippets, onclick, component-events', ), ), format: v.pipe( v.optional(v.picklist(['syntax', 'quick', 'full']), 'full'), v.description( 'Output detail level: "syntax" (signature only), "quick" (with example), "full" (complete docs)', ), ), });
  • Tool registration call within register_definition_tools function, specifying name, description, schema, and handler
    server.tool<typeof DefinitionSchema>( { name: 'svelte_definition', description: 'Lookup Svelte 5 & SvelteKit definitions from TypeScript declarations. Covers all runes ($state, $derived, $props, $effect), features (snippets, onclick, component-events), and patterns. Supports syntax/quick/full format for varying detail levels.', schema: DefinitionSchema, }, definition_handler, );
  • src/index.ts:64-65 (registration)
    Top-level call to register the svelte_definition tool during server initialization
    // Register definition tools (single svelte_definition tool) register_definition_tools(this.server);
  • Helper function to format definition content based on requested detail level (syntax/quick/full)
    function format_definition_content( content: string, format: FormatType, ): string { switch (format) { case 'syntax': return extract_syntax_only(content); case 'quick': return extract_definition_and_example(content); case 'full': default: return content; } }

Other Tools

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/spences10/mcp-svelte-docs'

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