Skip to main content
Glama

kb_onboard

Collect initial user information through interactive onboarding questions to build a knowledge base for AI context across sessions.

Instructions

Start interactive onboarding to collect initial information. Returns questions for the specified category.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
categoryNoCategory of questions to askall

Implementation Reference

  • Main handler for kb_onboard tool execution. Determines the onboarding category, fetches corresponding questions from onboardingForms, and returns a structured JSON response with the questions.
    case 'kb_onboard': { const category = (args as any).category || 'all'; let questions: any[] = []; if (category === 'all') { questions = [ ...onboardingForms.initial, ...onboardingForms.professional, ...onboardingForms.preferences, ...onboardingForms.projects ]; } else if (onboardingForms[category as keyof typeof onboardingForms]) { questions = onboardingForms[category as keyof typeof onboardingForms]; } return { content: [ { type: 'text', text: JSON.stringify({ category, totalQuestions: questions.length, questions: questions.map(q => ({ id: q.id, question: q.question, type: q.type, field: q.field, required: q.required, options: q.options })) }, null, 2) } ] }; }
  • Tool schema definition including name, description, and inputSchema specifying the optional 'category' parameter.
    { name: 'kb_onboard', description: 'Start interactive onboarding to collect initial information. Returns questions for the specified category.', inputSchema: { type: 'object', properties: { category: { type: 'string', enum: ['initial', 'professional', 'preferences', 'projects', 'all'], description: 'Category of questions to ask', default: 'all' } } } },
  • Data structure defining all onboarding questions used by the kb_onboard handler for interactive user onboarding.
    export const onboardingForms: Record<string, OnboardingQuestion[]> = { initial: [ { id: 'personal_name', question: 'What is your full name?', category: 'personal', field: 'name', type: 'text', required: true }, { id: 'personal_birth_year', question: 'What year were you born?', category: 'personal', field: 'birthYear', type: 'number', required: false }, { id: 'personal_location', question: 'Where are you currently located? (City, Country)', category: 'personal', field: 'currentLocation', type: 'text', required: false }, { id: 'personal_languages', question: 'What languages do you speak? (comma-separated)', category: 'personal', field: 'languages', type: 'multiselect', required: false }, { id: 'personal_pronouns', question: 'What are your pronouns?', category: 'personal', field: 'pronouns', type: 'text', required: false } ], professional: [ { id: 'prof_occupation', question: 'What is your occupation/job title?', category: 'professional', field: 'occupation', type: 'text', required: true }, { id: 'prof_experience', question: 'How many years of experience do you have?', category: 'professional', field: 'yearsOfExperience', type: 'number', required: false }, { id: 'prof_industry', question: 'What industry do you work in?', category: 'professional', field: 'industry', type: 'text', required: false }, { id: 'prof_specializations', question: 'What are your specializations? (comma-separated)', category: 'professional', field: 'specializations', type: 'multiselect', required: false }, { id: 'prof_skills', question: 'What are your main technical skills? (comma-separated)', category: 'professional', field: 'skills', type: 'multiselect', required: false } ], preferences: [ { id: 'pref_communication', question: 'How do you prefer communication? (formal/casual/technical)', category: 'preferences', field: 'communicationStyle', type: 'select', options: ['formal', 'casual', 'technical', 'balanced'], required: false }, { id: 'pref_detail', question: 'How detailed should responses be?', category: 'preferences', field: 'responseDetail', type: 'select', options: ['concise', 'detailed', 'balanced'], required: false }, { id: 'pref_technical', question: 'What is your technical expertise level?', category: 'preferences', field: 'technicalLevel', type: 'select', options: ['beginner', 'intermediate', 'expert'], required: false } ], projects: [ { id: 'proj_current', question: 'What projects are you currently working on? (comma-separated)', category: 'projects', field: 'currentProjects', type: 'multiselect', required: false }, { id: 'proj_tech', question: 'What technologies are you using? (comma-separated)', category: 'projects', field: 'technologies', type: 'multiselect', required: false }, { id: 'proj_goals', question: 'What are your current goals? (comma-separated)', category: 'projects', field: 'goals', type: 'multiselect', required: false } ] };
  • src/index.ts:422-425 (registration)
    Registers the listTools capability which exposes the kb_onboard schema to MCP clients.
    // Handler for listing tools server.setRequestHandler(ListToolsRequestSchema, async () => { return { 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/hlsitechio/mcp-instruct'

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