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
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category of questions to ask | all |
Implementation Reference
- src/index.ts:468-502 (handler)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) } ] }; }
- src/index.ts:49-63 (schema)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' } } } },
- src/forms.ts:3-143 (helper)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 }; });