@ema.co/mcp-toolkit 2026.1.25 → 2026.1.26-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @ema.co/mcp-toolkit might be problematic. Click here for more details.

Files changed (87) hide show
  1. package/README.md +10 -2
  2. package/dist/mcp/handlers/action/index.js +3 -18
  3. package/dist/mcp/handlers/data/index.js +385 -41
  4. package/dist/mcp/handlers/data/templates.js +107 -0
  5. package/dist/mcp/handlers/deprecation.js +50 -0
  6. package/dist/mcp/handlers/env/index.js +8 -4
  7. package/dist/mcp/handlers/knowledge/index.js +44 -237
  8. package/dist/mcp/handlers/persona/create.js +47 -18
  9. package/dist/mcp/handlers/persona/index.js +14 -11
  10. package/dist/mcp/handlers/persona/update.js +4 -2
  11. package/dist/mcp/handlers/persona/version.js +234 -0
  12. package/dist/mcp/handlers/sync/index.js +3 -18
  13. package/dist/mcp/handlers/template/index.js +75 -10
  14. package/dist/mcp/handlers/workflow/analyze.js +171 -0
  15. package/dist/mcp/handlers/workflow/compare.js +70 -0
  16. package/dist/mcp/handlers/workflow/deploy.js +73 -0
  17. package/dist/mcp/handlers/workflow/generate.js +350 -0
  18. package/dist/mcp/handlers/workflow/index.js +294 -0
  19. package/dist/mcp/handlers/workflow/modify.js +456 -0
  20. package/dist/mcp/handlers/workflow/optimize.js +136 -0
  21. package/dist/mcp/handlers/workflow/types.js +4 -0
  22. package/dist/mcp/handlers/workflow/utils.js +30 -0
  23. package/dist/mcp/handlers-consolidated.js +73 -2696
  24. package/dist/mcp/prompts.js +83 -43
  25. package/dist/mcp/resources.js +382 -57
  26. package/dist/mcp/server.js +199 -391
  27. package/dist/mcp/{tools-v2.js → tools.js} +20 -54
  28. package/dist/mcp/workflow-operations.js +2 -2
  29. package/dist/sdk/client-adapter.js +267 -32
  30. package/dist/sdk/client.js +45 -16
  31. package/dist/sdk/ema-client.js +183 -0
  32. package/dist/sdk/generated/deprecated-actions.js +171 -0
  33. package/dist/sdk/generated/template-fallbacks.js +123 -0
  34. package/dist/sdk/guidance.js +65 -11
  35. package/dist/sdk/index.js +3 -1
  36. package/dist/sdk/knowledge.js +139 -86
  37. package/dist/sdk/workflow-intent.js +27 -0
  38. package/dist/sdk/workflow-transformer.js +0 -342
  39. package/docs/mcp-tools-guide.md +37 -45
  40. package/package.json +10 -4
  41. package/dist/mcp/handlers/persona/analyze.js +0 -275
  42. package/dist/mcp/handlers/persona/compare.js +0 -32
  43. package/dist/mcp/tools-consolidated.js +0 -875
  44. package/dist/mcp/tools-legacy.js +0 -736
  45. package/docs/CODEBASE-ANALYSIS-2026-01-23.md +0 -936
  46. package/docs/CODEBASE-ANALYSIS-PRIORITIZED.md +0 -774
  47. package/docs/api-contracts.md +0 -216
  48. package/docs/auto-builder-analysis.md +0 -271
  49. package/docs/blog/mcp-tool-design-lessons.md +0 -309
  50. package/docs/data-architecture.md +0 -166
  51. package/docs/demos/ap-invoice-generation.md +0 -347
  52. package/docs/demos/ap-invoice-processing.md +0 -271
  53. package/docs/ema-auto-builder-guide.html +0 -394
  54. package/docs/lessons-learned.md +0 -209
  55. package/docs/llm-native-workflow-design.md +0 -252
  56. package/docs/local-generation.md +0 -508
  57. package/docs/mcp-flow-diagram.md +0 -135
  58. package/docs/migration/action-composition-migration.md +0 -270
  59. package/docs/naming-conventions.md +0 -278
  60. package/docs/proposals/HANDOFF-tool-restructure.md +0 -526
  61. package/docs/proposals/action-composition.md +0 -490
  62. package/docs/proposals/explicit-method-restructure.md +0 -328
  63. package/docs/proposals/mcp-tool-restructure-2026-01.md +0 -366
  64. package/docs/proposals/self-contained-guidance.md +0 -427
  65. package/docs/proto-sdk-generation.md +0 -242
  66. package/docs/release-impact.md +0 -102
  67. package/docs/release-process.md +0 -157
  68. package/docs/staging.RULE.md +0 -142
  69. package/docs/test-persona-creation.md +0 -196
  70. package/docs/tool-consolidation-v2.md +0 -225
  71. package/docs/tool-response-standards.md +0 -256
  72. package/resources/demo-kits/README.md +0 -175
  73. package/resources/demo-kits/finance-ap/manifest.json +0 -150
  74. package/resources/demo-kits/tags.json +0 -91
  75. package/resources/docs/getting-started.md +0 -97
  76. package/resources/templates/auto-builder-rules.md +0 -224
  77. package/resources/templates/chat-ai/README.md +0 -119
  78. package/resources/templates/chat-ai/persona-config.json +0 -111
  79. package/resources/templates/dashboard-ai/README.md +0 -156
  80. package/resources/templates/dashboard-ai/persona-config.json +0 -180
  81. package/resources/templates/demo-scenarios/README.md +0 -63
  82. package/resources/templates/demo-scenarios/test-published-package.md +0 -116
  83. package/resources/templates/document-gen-ai/README.md +0 -132
  84. package/resources/templates/document-gen-ai/persona-config.json +0 -316
  85. package/resources/templates/voice-ai/README.md +0 -123
  86. package/resources/templates/voice-ai/persona-config.json +0 -74
  87. package/resources/templates/voice-ai/workflow-prompt.md +0 -121
@@ -1,132 +0,0 @@
1
- # Document Generation AI - Resume Analysis Report Generator
2
-
3
- This template provides a document generation persona for creating comprehensive resume analysis reports.
4
-
5
- ## Overview
6
-
7
- The Resume Analysis Report Generator helps HR teams and hiring managers quickly evaluate candidates through AI-powered resume analysis. It extracts structured data from resumes, validates candidates against configurable criteria, and generates detailed assessment reports.
8
-
9
- ## Report Types
10
-
11
- ### 1. Candidate Assessment Report
12
- Comprehensive analysis of a single candidate including:
13
- - Executive summary with overall recommendation
14
- - Skills assessment (technical and soft skills)
15
- - Experience analysis and career trajectory
16
- - Education and credentials review
17
- - Fit scoring (technical, cultural, overall on 1-10 scale)
18
- - Concerns, red flags, and recommendations
19
-
20
- ### 2. Skills Gap Analysis
21
- Compare candidate qualifications against job requirements:
22
- - Required skills inventory from job description
23
- - Candidate skills inventory from resume
24
- - Gap identification matrix
25
- - Severity assessment (critical, moderate, minor)
26
- - Training and development recommendations
27
- - Time-to-proficiency estimates
28
-
29
- ### 3. Candidate Comparison Report
30
- Side-by-side comparison of multiple candidates:
31
- - Summary comparison table
32
- - Individual candidate profiles
33
- - Skills matrix comparison
34
- - Experience level comparison
35
- - Ranked recommendations
36
- - Interview priority order
37
-
38
- ## Key Features
39
-
40
- ### Entity Extraction
41
- Automatically extracts structured data from resumes:
42
- - Candidate name and contact information
43
- - Total years of experience
44
- - Current/most recent role
45
- - Education history (degrees, institutions, fields)
46
- - Technical skills inventory
47
- - Professional certifications
48
- - Complete work history with achievements
49
-
50
- ### Rule Validation
51
- Validates candidates against configurable hiring criteria:
52
- - Minimum experience requirements
53
- - Education standards
54
- - Communication skills evidence
55
- - Career progression patterns
56
- - Employment gap analysis
57
-
58
- ### Fit Scoring
59
- Provides quantified assessment across dimensions:
60
- - Technical Fit (40% weight) - Skills match to requirements
61
- - Experience Fit (35% weight) - Relevance and depth
62
- - Cultural Fit (25% weight) - Values and team alignment
63
- - Overall Recommendation: Strong Yes / Yes / Maybe / No
64
-
65
- ## Configuration
66
-
67
- ### Required Inputs
68
- - Resume documents (PDF, DOCX)
69
-
70
- ### Optional Inputs
71
- - Job description for comparison analysis
72
- - Analysis instructions (focus areas, scoring criteria)
73
- - Candidate tags for categorization
74
-
75
- ### Data Protection
76
- By default, the following are redacted from LLM processing:
77
- - Phone numbers
78
- - Email addresses
79
- - Physical addresses
80
- - Social security numbers
81
-
82
- ## Usage with MCP
83
-
84
- ```typescript
85
- // Create persona from template
86
- persona(input="Create a Resume Analysis Report Generator for our Engineering team", type="dashboard")
87
-
88
- // Upload resume for analysis
89
- data(persona_id="...", action="upload", file="candidate_resume.pdf")
90
-
91
- // Generate assessment report
92
- // (Done through Ema dashboard UI)
93
- ```
94
-
95
- ## Customization
96
-
97
- ### Adding Extraction Fields
98
- Modify the `extraction_columns` in the workflow definition to extract additional data points:
99
- - Languages spoken
100
- - Salary expectations
101
- - Notice period
102
- - Remote work preferences
103
- - Portfolio/GitHub links
104
-
105
- ### Custom Validation Rules
106
- Add rules to the `all_rulesets` configuration:
107
- - Industry-specific requirements
108
- - Skill-based criteria
109
- - Certification requirements
110
- - Location preferences
111
-
112
- ### Report Sections
113
- Configure `sectionConfigWidget` to customize report structure:
114
- - Add/remove sections
115
- - Reorder sections
116
- - Add custom section types
117
-
118
- ## File Support
119
-
120
- Supported resume formats:
121
- - PDF
122
- - DOCX
123
- - DOC
124
- - TXT
125
-
126
- ## Best Practices
127
-
128
- 1. **Upload job descriptions** - Enables more accurate fit scoring and gap analysis
129
- 2. **Customize validation rules** - Tailor criteria to your specific role requirements
130
- 3. **Use tags** - Categorize candidates by role type, experience level, location
131
- 4. **Review extraction accuracy** - Validate extracted data on first few resumes
132
- 5. **Iterate on prompts** - Refine analysis instructions based on report quality
@@ -1,316 +0,0 @@
1
- {
2
- "$schema": "https://ema.co/schemas/persona-config-document-gen.json",
3
- "$comment": "Document Generation AI Persona Configuration - Resume Analysis Report Generator",
4
-
5
- "personaType": "document_generation",
6
- "projectType": 7,
7
- "name": "Resume Analysis Report Generator",
8
- "description": "Generates comprehensive analysis reports from uploaded resumes/CVs, including skills assessment, experience evaluation, and fit scoring for specified roles.",
9
-
10
- "category": "EMPLOYEE_EXPERIENCE",
11
- "triggerType": "DASHBOARD",
12
-
13
- "documentTypes": [
14
- {
15
- "type": 1,
16
- "name": "Candidate Assessment Report",
17
- "description": "Comprehensive analysis of a single candidate's resume with scoring and recommendations",
18
- "sections": [
19
- {
20
- "name": "executive_summary",
21
- "title": "Executive Summary",
22
- "description": "High-level overview and recommendation"
23
- },
24
- {
25
- "name": "candidate_profile",
26
- "title": "Candidate Profile",
27
- "description": "Contact info, current role, key highlights"
28
- },
29
- {
30
- "name": "skills_assessment",
31
- "title": "Skills Assessment",
32
- "description": "Technical and soft skills evaluation"
33
- },
34
- {
35
- "name": "experience_analysis",
36
- "title": "Experience Analysis",
37
- "description": "Work history and career progression"
38
- },
39
- {
40
- "name": "education_credentials",
41
- "title": "Education & Credentials",
42
- "description": "Degrees, certifications, and training"
43
- },
44
- {
45
- "name": "fit_scoring",
46
- "title": "Fit Scoring",
47
- "description": "Quantified assessment (technical fit, cultural fit, overall)"
48
- },
49
- {
50
- "name": "recommendations",
51
- "title": "Recommendations",
52
- "description": "Hiring recommendation and next steps"
53
- }
54
- ]
55
- },
56
- {
57
- "type": 2,
58
- "name": "Skills Gap Analysis",
59
- "description": "Compare candidate skills against job requirements and identify gaps",
60
- "sections": [
61
- {
62
- "name": "overview",
63
- "title": "Analysis Overview",
64
- "description": "Summary of gap analysis findings"
65
- },
66
- {
67
- "name": "required_skills",
68
- "title": "Required Skills Inventory",
69
- "description": "Skills needed for the role"
70
- },
71
- {
72
- "name": "candidate_skills",
73
- "title": "Candidate Skills Inventory",
74
- "description": "Skills the candidate possesses"
75
- },
76
- {
77
- "name": "gap_matrix",
78
- "title": "Gap Identification Matrix",
79
- "description": "Detailed skill-by-skill gap analysis"
80
- },
81
- {
82
- "name": "severity_assessment",
83
- "title": "Gap Severity Assessment",
84
- "description": "Critical, moderate, minor gap classification"
85
- },
86
- {
87
- "name": "development_plan",
88
- "title": "Development Recommendations",
89
- "description": "Training and development suggestions"
90
- }
91
- ]
92
- },
93
- {
94
- "type": 3,
95
- "name": "Candidate Comparison Report",
96
- "description": "Side-by-side comparison of multiple candidates for a role",
97
- "sections": [
98
- {
99
- "name": "comparison_summary",
100
- "title": "Comparison Summary",
101
- "description": "Quick comparison table and rankings"
102
- },
103
- {
104
- "name": "candidate_profiles",
105
- "title": "Individual Candidate Profiles",
106
- "description": "Brief profile of each candidate"
107
- },
108
- {
109
- "name": "skills_matrix",
110
- "title": "Skills Comparison Matrix",
111
- "description": "Side-by-side skills comparison"
112
- },
113
- {
114
- "name": "experience_comparison",
115
- "title": "Experience Comparison",
116
- "description": "Years, industries, and role levels"
117
- },
118
- {
119
- "name": "rankings",
120
- "title": "Overall Rankings",
121
- "description": "Ranked list with rationale"
122
- },
123
- {
124
- "name": "interview_recommendations",
125
- "title": "Interview Recommendations",
126
- "description": "Priority order and focus areas per candidate"
127
- }
128
- ]
129
- }
130
- ],
131
-
132
- "entityExtraction": {
133
- "columns": [
134
- {
135
- "id": "candidate_name",
136
- "name": "Candidate Name",
137
- "type": "string",
138
- "description": "Full name of the candidate"
139
- },
140
- {
141
- "id": "contact_info",
142
- "name": "Contact Information",
143
- "type": "object",
144
- "description": "Email and phone number",
145
- "fields": [
146
- {"name": "email", "type": "string"},
147
- {"name": "phone", "type": "string"}
148
- ]
149
- },
150
- {
151
- "id": "years_experience",
152
- "name": "Total Years of Experience",
153
- "type": "number",
154
- "description": "Total professional work experience in years"
155
- },
156
- {
157
- "id": "current_role",
158
- "name": "Current/Most Recent Role",
159
- "type": "string",
160
- "description": "Current or most recent job title and company"
161
- },
162
- {
163
- "id": "education",
164
- "name": "Education",
165
- "type": "array",
166
- "description": "Educational background",
167
- "itemType": "object",
168
- "itemFields": [
169
- {"name": "degree", "type": "string", "description": "Degree type"},
170
- {"name": "institution", "type": "string", "description": "School/university name"},
171
- {"name": "field", "type": "string", "description": "Field of study"},
172
- {"name": "year", "type": "number", "description": "Graduation year"}
173
- ]
174
- },
175
- {
176
- "id": "technical_skills",
177
- "name": "Technical Skills",
178
- "type": "array",
179
- "description": "List of technical skills, tools, and technologies"
180
- },
181
- {
182
- "id": "certifications",
183
- "name": "Certifications",
184
- "type": "array",
185
- "description": "Professional certifications and licenses"
186
- },
187
- {
188
- "id": "work_history",
189
- "name": "Work History",
190
- "type": "array",
191
- "description": "Employment history",
192
- "itemType": "object",
193
- "itemFields": [
194
- {"name": "company", "type": "string"},
195
- {"name": "title", "type": "string"},
196
- {"name": "duration", "type": "string"},
197
- {"name": "highlights", "type": "string"}
198
- ]
199
- }
200
- ]
201
- },
202
-
203
- "ruleValidation": {
204
- "rulesets": [
205
- {
206
- "id": "basic_requirements",
207
- "name": "Basic Requirements",
208
- "description": "Standard hiring criteria",
209
- "rules": [
210
- {
211
- "id": "min_experience",
212
- "name": "Minimum Experience",
213
- "description": "Candidate must have at least 2 years of professional work experience",
214
- "severity": "required"
215
- },
216
- {
217
- "id": "education",
218
- "name": "Education Requirement",
219
- "description": "Candidate should have at least a Bachelor's degree or equivalent experience",
220
- "severity": "preferred"
221
- },
222
- {
223
- "id": "communication",
224
- "name": "Communication Skills",
225
- "description": "Resume demonstrates strong written communication skills",
226
- "severity": "preferred"
227
- },
228
- {
229
- "id": "career_progression",
230
- "name": "Career Progression",
231
- "description": "Career shows logical progression with increasing responsibilities",
232
- "severity": "preferred"
233
- },
234
- {
235
- "id": "employment_continuity",
236
- "name": "Employment Continuity",
237
- "description": "No unexplained employment gaps longer than 12 months",
238
- "severity": "warning"
239
- }
240
- ],
241
- "aggregation": "(min_experience AND education) OR (communication AND career_progression)"
242
- }
243
- ]
244
- },
245
-
246
- "fileUpload": {
247
- "acceptedTypes": [
248
- "application/pdf",
249
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
250
- "application/msword",
251
- "text/plain"
252
- ],
253
- "tags": {
254
- "default": ["resume_documents"],
255
- "jobDescription": ["job_description"],
256
- "comparison": ["comparison_resumes"],
257
- "gapAnalysis": ["gap_analysis_resume", "gap_requirements"]
258
- }
259
- },
260
-
261
- "dataProtection": {
262
- "protectedClasses": [
263
- "phone_number",
264
- "email",
265
- "address",
266
- "social_security_number"
267
- ],
268
- "$comment": "Sensitive data to redact from LLM processing"
269
- },
270
-
271
- "fusionModel": {
272
- "allModels": true,
273
- "selectedModels": [],
274
- "$comment": "Use all available LLMs for optimal analysis accuracy"
275
- },
276
-
277
- "scoringCriteria": {
278
- "scales": [
279
- {
280
- "name": "fit_score",
281
- "min": 1,
282
- "max": 10,
283
- "description": "How well candidate matches requirements"
284
- }
285
- ],
286
- "recommendations": [
287
- "Strong Yes",
288
- "Yes",
289
- "Maybe",
290
- "No"
291
- ],
292
- "dimensions": [
293
- {
294
- "name": "technical_fit",
295
- "weight": 0.4,
296
- "description": "Match of technical skills to requirements"
297
- },
298
- {
299
- "name": "experience_fit",
300
- "weight": 0.35,
301
- "description": "Relevance and depth of experience"
302
- },
303
- {
304
- "name": "cultural_fit",
305
- "weight": 0.25,
306
- "description": "Alignment with company values and team dynamics"
307
- }
308
- ]
309
- },
310
-
311
- "samplePrompts": {
312
- "candidateAssessment": "Generate a comprehensive candidate assessment report for this resume. Analyze skills, experience, education, and provide a fit score (1-10) for each dimension: technical fit, experience fit, and cultural fit. Include a final recommendation (Strong Yes/Yes/Maybe/No) with rationale.",
313
- "skillsGap": "Compare this candidate's skills against the job requirements. Identify all gaps, categorize them by severity (critical, moderate, minor), and provide specific training or development recommendations for each gap.",
314
- "candidateComparison": "Compare these candidates for the specified role. Create a comparison matrix, rank the candidates, and provide a recommended interview order with specific focus areas for each candidate."
315
- }
316
- }
@@ -1,123 +0,0 @@
1
- # {Persona Name}
2
-
3
- **Type**: Voice AI
4
- **Created**: {Date}
5
- **Version**: 1.0
6
-
7
- ## Overview
8
-
9
- {Brief description of what this Voice AI Employee does}
10
-
11
- ## Deployment Steps
12
-
13
- ### Step 1: Create Workflow in Auto Builder
14
-
15
- 1. Go to [Ema Auto Builder](https://builder.ema.co/)
16
- 2. Create new AI Employee → Select **Voice AI**
17
- 3. Copy contents of `workflow-prompt.md` into the prompt field
18
- 4. Click "Generate Workflow"
19
- 5. Review generated nodes and verify:
20
- - All categorizers have edges for every category
21
- - Search nodes connect to respond nodes correctly
22
- - Fallback paths are present
23
-
24
- ### Step 2: Configure Conversational Behavior
25
-
26
- 1. Navigate to "Conversational Behavior" section
27
- 2. Apply settings from `persona-config.json`:
28
-
29
- | Field | Source |
30
- |-------|--------|
31
- | Welcome Message | `conversationSettings.welcomeMessage` |
32
- | Identity & Purpose | `conversationSettings.identityAndPurpose` |
33
- | Take Action Instructions | `conversationSettings.takeActionInstructions` |
34
- | Hangup Instructions | `conversationSettings.hangupInstructions` |
35
- | Transfer Call Instructions | `conversationSettings.transferCallInstructions` |
36
- | Speech Characteristics | `conversationSettings.speechCharacteristics` |
37
- | System Prompt | `conversationSettings.systemPrompt` |
38
- | Wait Message | `conversationSettings.waitMessage` |
39
-
40
- ### Step 3: Configure Voice Settings
41
-
42
- 1. Navigate to "Voice Settings" section
43
- 2. Apply settings:
44
- - Language: From `voiceSettings.languageHints`
45
- - Voice Model: From `voiceSettings.voiceModel`
46
-
47
- ### Step 4: Configure VAD & Data Storage
48
-
49
- 1. **VAD Settings** (Voice Activity Detection):
50
- - Turn Timeout: `vadSettings.turnTimeout` seconds
51
- - Silence End Call: `vadSettings.silenceEndCallTimeout` seconds
52
- - Max Duration: `vadSettings.maxConversationDuration` seconds
53
-
54
- 2. **Data Storage**:
55
- - Store Audio: `dataStorageSettings.storeAudioRecording`
56
- - Store Transcripts: `dataStorageSettings.storeTranscripts`
57
-
58
- ### Step 5: Upload Knowledge Base (if applicable)
59
-
60
- 1. Navigate to "Knowledge Base" section
61
- 2. Upload documents from `docs/` folder
62
- 3. Apply tags as specified in `docs/_metadata.json`
63
-
64
- ### Step 6: Test
65
-
66
- 1. **Simulator Test**: Use the built-in call simulator
67
- 2. **Test Calls**:
68
- - Test happy path (main use case)
69
- - Test each category branch
70
- - Test fallback handling
71
- - Test verification flows (if applicable)
72
- 3. **Edge Cases**:
73
- - Test with unexpected inputs
74
- - Test silence handling
75
- - Test interruption handling
76
-
77
- ## Files
78
-
79
- | File | Description |
80
- |------|-------------|
81
- | `workflow-prompt.md` | Auto Builder prompt with safeguards |
82
- | `persona-config.json` | Voice AI configuration |
83
- | `proto-config.json` | Full API-deployable config |
84
- | `docs/` | Knowledge base documents |
85
-
86
- ## Testing Checklist
87
-
88
- - [ ] Workflow generates without validation errors
89
- - [ ] All category paths work correctly
90
- - [ ] Fallback provides helpful response
91
- - [ ] Voice sounds natural and appropriate
92
- - [ ] Actions/tools execute correctly
93
- - [ ] Handoff to human works (if applicable)
94
- - [ ] Call ends appropriately
95
-
96
- ## Maintenance
97
-
98
- | Change Type | Action |
99
- |-------------|--------|
100
- | Workflow logic | Update `workflow-prompt.md`, re-generate |
101
- | Persona behavior | Update `persona-config.json`, apply in UI |
102
- | Knowledge content | Update docs in `docs/`, re-upload |
103
- | Voice settings | Update `persona-config.json`, apply in UI |
104
-
105
- ## Troubleshooting
106
-
107
- ### "Validation failed" in Auto Builder
108
-
109
- - Check that all categorizers have Fallback category
110
- - Verify edge format: `category_<Name>` not `category::<Name>`
111
- - Ensure all nodes have required inputs
112
-
113
- ### Voice sounds unnatural
114
-
115
- - Review `speechCharacteristics` for TTS rules
116
- - Add pronunciation guides for technical terms
117
- - Adjust pauses and pacing instructions
118
-
119
- ### Actions not triggering
120
-
121
- - Check `takeActionInstructions` uses correct `</Case N>` format
122
- - Verify tool names match exactly
123
- - Review `systemPrompt` for tool calling rules
@@ -1,74 +0,0 @@
1
- {
2
- "$schema": "https://ema.co/schemas/persona-config-voice.json",
3
- "$comment": "Voice AI Persona Configuration - Fill in all {placeholder} values",
4
-
5
- "personaType": "voice",
6
- "projectType": 5,
7
- "name": "{Persona Name}",
8
- "description": "{Brief description of what this Voice AI does}",
9
-
10
- "conversationSettings": {
11
- "name": "{AI Name - e.g., 'Sofia', 'Alex', 'Service Agent'}",
12
-
13
- "welcomeMessage": "{Opening greeting when call connects}\n\nExample:\nHello, thank you for calling {Company}. This is {AI Name}. How can I help you today?",
14
-
15
- "identityAndPurpose": "You are {AI Name}, a Voice AI assistant for {Company}.\n\nPrimary responsibility: {Main purpose}\n\nYour responsibilities:\n1. {Responsibility 1}\n2. {Responsibility 2}\n3. {Responsibility 3}\n\nRules:\n- {Rule 1}\n- {Rule 2}",
16
-
17
- "takeActionInstructions": "</Case 1>\n{Action 1 Name}\n\nTrigger When:\n{Condition that triggers this action}\n\nIntent for tool call: \"{Tool Intent Name}\"\n\nRequired parameters:\n{ \"{param1}\": \"\", \"{param2}\": \"\" }\n</Case 1>\n\n</Case 2>\n{Action 2 Name}\n\nTrigger When:\n{Condition that triggers this action}\n\nIntent for tool call: \"{Tool Intent Name}\"\n\nRequired parameters:\n{ \"{param1}\": \"\" }\n</Case 2>",
18
-
19
- "hangupInstructions": "End the call when:\n- The caller explicitly says goodbye or asks to hang up\n- The caller confirms they have no more questions\n- {Additional hangup conditions}\n\nBefore ending:\n- Confirm all issues are resolved\n- Offer any follow-up information\n- Thank the caller",
20
-
21
- "transferCallInstructions": "Transfer the call when:\n- The caller explicitly requests a human agent\n- {Condition requiring human}\n- {Complex scenario}\n\nBefore transferring:\n- Inform the caller you're transferring them\n- Provide brief context to the human agent\n- {Additional transfer instructions}",
22
-
23
- "speechCharacteristics": "**Conversational Style:**\n- Keep responses brief (2-3 sentences per turn)\n- Use warm, professional tone\n- Speak clearly at moderate pace\n\n**Natural Speech:**\n- Use brief pauses between sentences\n- Acknowledge with 'I understand', 'Of course', 'Certainly'\n- Avoid robotic language\n\n**TTS Pronunciation Rules:**\n- Spell out IDs: 'A-B-C-1-2-3'\n- Pause between numbers: 'Your code is... 1... 2... 3... 4'\n- {Domain-specific pronunciation rules}",
24
-
25
- "systemPrompt": "Tool Calling Instructions:\n\n1. Always collect required parameters before calling tools\n2. Confirm parameter values with the caller\n3. Handle tool errors gracefully\n4. {Additional tool calling rules}\n\nParameter Collection:\n- {Param 1}: {How to collect}\n- {Param 2}: {How to collect}",
26
-
27
- "formFillingInstructions": "{Instructions for collecting form data, if applicable}\n\nExample:\nWhen collecting booking information:\n1. Ask for name first\n2. Then ask for date preference\n3. Confirm all details before proceeding",
28
-
29
- "waitMessage": "One moment while I look that up for you..."
30
- },
31
-
32
- "voiceSettings": {
33
- "languageHints": ["en-US"],
34
- "voiceModel": "default",
35
- "$comment_voiceModel": "Options: default, professional-male, professional-female, casual"
36
- },
37
-
38
- "vadSettings": {
39
- "turnTimeout": 3,
40
- "$comment_turnTimeout": "Seconds to wait for caller to finish speaking",
41
- "silenceEndCallTimeout": 30,
42
- "$comment_silenceEndCallTimeout": "Seconds of silence before ending call",
43
- "maxConversationDuration": 600,
44
- "$comment_maxConversationDuration": "Maximum call length in seconds (600 = 10 minutes)"
45
- },
46
-
47
- "dataStorageSettings": {
48
- "storeAudioRecording": true,
49
- "storeTranscripts": true,
50
- "storeAgentTranscript": true
51
- },
52
-
53
- "callSettings": {
54
- "enableCallForwarding": false,
55
- "callForwardingNumber": "",
56
- "enableSpamCallPrevention": true,
57
- "enableDisconnectCall": false
58
- },
59
-
60
- "dataProtection": {
61
- "protectedClasses": [
62
- "ssn",
63
- "credit_card",
64
- "phone_number"
65
- ],
66
- "$comment_protectedClasses": "PII classes to redact. Options: ssn, credit_card, phone_number, email, address, dob, account_number"
67
- },
68
-
69
- "fusionModel": {
70
- "allModels": true,
71
- "selectedModels": [],
72
- "$comment": "Leave allModels: true for best results, or specify models: ['gpt-4', 'claude-3']"
73
- }
74
- }