get_utility_info
Retrieve the full catalog entry for a utility or agent by slug, including name, tagline, description, price, free flag, and category.
Instructions
Return the full catalog entry for a single utility or agent by slug (name, tagline, description, price, free flag, category, etc.).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The utility or agent slug, e.g. "token-optimiser". |
Implementation Reference
- index.js:287-299 (handler)The handler logic for the 'get_utility_info' tool. It validates the 'slug' argument, fetches the catalog, looks up the entry by slug via findBySlug(), and returns the entry as JSON or an error message.
case 'get_utility_info': { if (!args.slug || typeof args.slug !== 'string') { return textResult('Error: slug is required (string).'); } const catalog = await fetchCatalog(); const entry = findBySlug(catalog, args.slug); if (!entry) { return textResult( `No utility or agent with slug "${args.slug}". Use search_utilities or list_utilities to find valid slugs.` ); } return jsonResult(entry); } - index.js:218-233 (schema)The schema/definition of the 'get_utility_info' tool, including its name, description, and inputSchema (requiring a 'slug' string property).
{ name: 'get_utility_info', description: 'Return the full catalog entry for a single utility or agent by slug (name, tagline, description, price, free flag, category, etc.).', inputSchema: { type: 'object', properties: { slug: { type: 'string', description: 'The utility or agent slug, e.g. "token-optimiser".', }, }, required: ['slug'], additionalProperties: false, }, }, - index.js:189-263 (registration)The TOOLS array where 'get_utility_info' is registered alongside the other three tools. The array is returned by the ListToolsRequestSchema handler.
const TOOLS = [ { name: 'list_utilities', description: 'List every utility and agent available in the CustomClaw registry (https://customclaw.company). ' + 'Results are cached for 5 minutes. Returns catalog JSON with utilities and agents arrays.', inputSchema: { type: 'object', properties: {}, additionalProperties: false, }, }, { name: 'search_utilities', description: 'Fuzzy-search the CustomClaw registry by keyword. Matches across slug, name, tagline, description, and category. ' + 'Returns the top 25 matches sorted by relevance.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Keyword(s) to search for, e.g. "token optimiser" or "stripe".', }, }, required: ['query'], additionalProperties: false, }, }, { name: 'get_utility_info', description: 'Return the full catalog entry for a single utility or agent by slug (name, tagline, description, price, free flag, category, etc.).', inputSchema: { type: 'object', properties: { slug: { type: 'string', description: 'The utility or agent slug, e.g. "token-optimiser".', }, }, required: ['slug'], additionalProperties: false, }, }, { name: 'install_utility', description: 'Fetch a CustomClaw utility payload and write its files into target_dir. ' + 'For paid utilities, pass session_id (the Stripe checkout session_id from the buyer\'s receipt email). ' + 'Returns the list of files written and any npm dependencies the caller should install — ' + 'this tool does NOT run npm install itself; the host agent decides when to install deps.', inputSchema: { type: 'object', properties: { slug: { type: 'string', description: 'The utility slug to install.', }, target_dir: { type: 'string', description: 'Directory to write files into. Absolute path preferred; relative paths are resolved against the server process cwd.', }, session_id: { type: 'string', description: 'Optional. Stripe checkout session_id for paid utilities. Found as session_id=... in the CustomClaw receipt email download URL.', }, }, required: ['slug', 'target_dir'], additionalProperties: false, }, }, ]; - index.js:54-56 (helper)The findBySlug() helper function used by the handler to locate a utility/agent entry by slug from the catalog.
function findBySlug(catalog, slug) { return allEntries(catalog).find((e) => e.slug === slug) || null; }