@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,111 +0,0 @@
1
- {
2
- "$schema": "https://ema.co/schemas/persona-config-chat.json",
3
- "$comment": "Chat AI Persona Configuration - Fill in all {placeholder} values",
4
-
5
- "personaType": "chat",
6
- "projectType": 4,
7
- "name": "{Persona Name}",
8
- "description": "{Brief description of what this Chat AI does}",
9
-
10
- "chatbotSdkConfig": {
11
- "name": "{Display name shown in chat widget}",
12
- "theme": {
13
- "primaryColor": "#1f8844",
14
- "$comment": "Hex color for chat widget theme"
15
- },
16
- "logo": "",
17
- "$comment_logo": "URL to logo image (optional)",
18
- "allowedDomains": ["*"],
19
- "$comment_allowedDomains": "Domains where widget can be embedded. Use ['*'] for all, or specific domains",
20
- "disableSources": false,
21
- "$comment_disableSources": "Set true to hide source citations"
22
- },
23
-
24
- "fileTagging": {
25
- "tagTypes": [
26
- {
27
- "name": "Department",
28
- "tags": [
29
- { "tagValue": "Department:HR" },
30
- { "tagValue": "Department:IT" },
31
- { "tagValue": "Department:Finance" }
32
- ]
33
- },
34
- {
35
- "name": "DocType",
36
- "tags": [
37
- { "tagValue": "DocType:Policy" },
38
- { "tagValue": "DocType:Procedure" },
39
- { "tagValue": "DocType:FAQ" }
40
- ]
41
- }
42
- ],
43
- "$comment": "Define tag categories and values for knowledge base filtering"
44
- },
45
-
46
- "fileUpload": {
47
- "localFiles": [],
48
- "mergeFiles": [],
49
- "tags": ["{default-tag}"],
50
- "$comment_tags": "Default tags applied to all uploads",
51
- "transforms": [],
52
- "useChunking": true,
53
- "$comment_useChunking": "Enable for better search on long documents",
54
- "fileTagMappings": [],
55
- "acceptedMimeTypes": [
56
- "application/pdf",
57
- "text/plain",
58
- "text/markdown",
59
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
60
- "text/csv"
61
- ]
62
- },
63
-
64
- "feedbackMessage": {
65
- "message": {
66
- "question": "Was this answer helpful?",
67
- "positiveLabel": "Yes, helpful",
68
- "negativeLabel": "No, not helpful"
69
- },
70
- "feedbackFrequency": 1,
71
- "$comment_feedbackFrequency": "1 = every response, 3 = every 3rd response"
72
- },
73
-
74
- "dataProtection": {
75
- "protectedClasses": [
76
- "ssn",
77
- "credit_card"
78
- ],
79
- "$comment": "PII classes to redact from responses"
80
- },
81
-
82
- "fusionModel": {
83
- "allModels": true,
84
- "selectedModels": []
85
- },
86
-
87
- "knowledgeBaseSettings": {
88
- "$comment": "These settings guide how the knowledge base should be configured",
89
- "sources": [
90
- {
91
- "name": "{Source 1 Name}",
92
- "type": "documents",
93
- "folder": "docs/{folder1}",
94
- "tags": ["{tag1}", "{tag2}"],
95
- "priority": "primary"
96
- },
97
- {
98
- "name": "{Source 2 Name}",
99
- "type": "documents",
100
- "folder": "docs/{folder2}",
101
- "tags": ["{tag3}"],
102
- "priority": "secondary"
103
- }
104
- ],
105
- "searchSettings": {
106
- "useSemanticSearch": true,
107
- "useKeywordSearch": true,
108
- "maxResults": 5
109
- }
110
- }
111
- }
@@ -1,156 +0,0 @@
1
- # {Persona Name}
2
-
3
- **Type**: Dashboard AI
4
- **Created**: {Date}
5
- **Version**: 1.0
6
-
7
- ## Overview
8
-
9
- {Brief description of what this Dashboard 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 **Dashboard 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
- - Document trigger configured correctly
21
- - Entity extraction columns defined
22
- - Rule validation rules specified
23
- - All processing paths complete
24
-
25
- ### Step 2: Configure Input Schema
26
-
27
- 1. Navigate to "Input Configuration" section
28
- 2. Define input fields from `persona-config.json`:
29
-
30
- | Field | Type | Required |
31
- |-------|------|----------|
32
- | {field1} | {type} | {yes/no} |
33
- | {field2} | {type} | {yes/no} |
34
-
35
- ### Step 3: Configure Processing Settings
36
-
37
- 1. Navigate to "Processing" section
38
- 2. Apply settings:
39
- - Batch Size: `dashboardSettings.batchSettings.batchSize`
40
- - Timeout: `dashboardSettings.batchSettings.timeout`
41
- - Parallel: `dashboardSettings.batchSettings.parallelExecution`
42
-
43
- ### Step 4: Upload Reference Documents (if applicable)
44
-
45
- 1. Navigate to "Knowledge Base" section
46
- 2. Upload documents from `docs/` folder
47
- 3. Configure entity extraction mappings
48
-
49
- ### Step 5: Configure Approvals (if applicable)
50
-
51
- 1. Navigate to "Approval Routing" section
52
- 2. Define approval rules:
53
- - Thresholds for auto-approval
54
- - Routing rules for human review
55
- - Escalation paths
56
-
57
- ### Step 6: Test
58
-
59
- 1. **Single Item Test**: Process one document
60
- 2. **Batch Test**: Process small batch (5-10 items)
61
- 3. **Edge Cases**:
62
- - Missing required fields
63
- - Invalid data formats
64
- - Processing failures
65
-
66
- ## Files
67
-
68
- | File | Description |
69
- |------|-------------|
70
- | `workflow-prompt.md` | Auto Builder prompt with safeguards |
71
- | `persona-config.json` | Dashboard AI configuration |
72
- | `proto-config.json` | Full API-deployable config |
73
- | `docs/` | Reference documents |
74
-
75
- ## Testing Checklist
76
-
77
- - [ ] Workflow generates without validation errors
78
- - [ ] Document upload works
79
- - [ ] Entity extraction accurate
80
- - [ ] Rule validation correct
81
- - [ ] Approval routing works
82
- - [ ] Batch processing completes
83
- - [ ] Error handling works
84
-
85
- ## Input Schema
86
-
87
- ```json
88
- {
89
- "fields": [
90
- {
91
- "name": "{field1}",
92
- "type": "{string|number|date|file}",
93
- "required": true,
94
- "description": "{Field description}"
95
- }
96
- ]
97
- }
98
- ```
99
-
100
- ## Processing Flow
101
-
102
- ```
103
- Input Document
104
-
105
-
106
- ┌─────────────┐
107
- │ Parse/OCR │
108
- └─────────────┘
109
-
110
-
111
- ┌─────────────┐
112
- │ Extract │──→ {Field 1}
113
- │ Entities │──→ {Field 2}
114
- └─────────────┘──→ {Field N}
115
-
116
-
117
- ┌─────────────┐
118
- │ Validate │──→ Errors?
119
- │ Rules │
120
- └─────────────┘
121
-
122
-
123
- ┌─────────────┐
124
- │ Route for │──→ Auto-approve
125
- │ Approval │──→ Human review
126
- └─────────────┘──→ Reject
127
- ```
128
-
129
- ## Maintenance
130
-
131
- | Change Type | Action |
132
- |-------------|--------|
133
- | Workflow logic | Update `workflow-prompt.md`, re-generate |
134
- | Processing settings | Update `persona-config.json`, apply in UI |
135
- | Extraction rules | Update entity extraction columns |
136
- | Validation rules | Update rule validation configuration |
137
-
138
- ## Troubleshooting
139
-
140
- ### Processing fails
141
-
142
- - Check document format is supported
143
- - Verify required fields are present
144
- - Review extraction column mappings
145
-
146
- ### Entity extraction inaccurate
147
-
148
- - Add more training examples
149
- - Refine extraction column definitions
150
- - Check document quality
151
-
152
- ### Batch processing slow
153
-
154
- - Reduce batch size
155
- - Increase timeout
156
- - Enable parallel execution
@@ -1,180 +0,0 @@
1
- {
2
- "$schema": "https://ema.co/schemas/persona-config-dashboard.json",
3
- "$comment": "Dashboard AI Persona Configuration - Fill in all {placeholder} values",
4
-
5
- "personaType": "dashboard",
6
- "projectType": 2,
7
- "name": "{Persona Name}",
8
- "description": "{Brief description of what this Dashboard AI does}",
9
-
10
- "dashboardSettings": {
11
- "name": "{Display name}",
12
- "description": "{What this dashboard processes}",
13
-
14
- "inputSchema": {
15
- "fields": [
16
- {
17
- "name": "{field1}",
18
- "type": "file",
19
- "required": true,
20
- "description": "{Primary document to process}",
21
- "acceptedTypes": ["application/pdf", "image/*"]
22
- },
23
- {
24
- "name": "{field2}",
25
- "type": "string",
26
- "required": false,
27
- "description": "{Optional text field}"
28
- },
29
- {
30
- "name": "{field3}",
31
- "type": "select",
32
- "required": true,
33
- "options": ["{option1}", "{option2}", "{option3}"],
34
- "description": "{Category selection}"
35
- }
36
- ]
37
- },
38
-
39
- "batchSettings": {
40
- "batchSize": 50,
41
- "$comment_batchSize": "Number of items per batch (1-100)",
42
- "timeout": 60,
43
- "$comment_timeout": "Seconds per item before timeout",
44
- "parallelExecution": true,
45
- "$comment_parallelExecution": "Process items in parallel"
46
- },
47
-
48
- "outputSchema": {
49
- "fields": [
50
- {
51
- "name": "status",
52
- "type": "enum",
53
- "values": ["approved", "pending_review", "rejected"]
54
- },
55
- {
56
- "name": "extracted_data",
57
- "type": "object",
58
- "description": "Extracted entity values"
59
- },
60
- {
61
- "name": "validation_errors",
62
- "type": "array",
63
- "description": "List of validation failures"
64
- },
65
- {
66
- "name": "confidence_score",
67
- "type": "number",
68
- "description": "0-1 confidence in extraction"
69
- }
70
- ]
71
- }
72
- },
73
-
74
- "entityExtraction": {
75
- "columns": [
76
- {
77
- "name": "{Entity 1}",
78
- "type": "string",
79
- "description": "{What to extract}",
80
- "examples": ["{example1}", "{example2}"]
81
- },
82
- {
83
- "name": "{Entity 2}",
84
- "type": "number",
85
- "description": "{Numeric value to extract}",
86
- "examples": ["{example1}", "{example2}"]
87
- },
88
- {
89
- "name": "{Entity 3}",
90
- "type": "date",
91
- "description": "{Date to extract}",
92
- "format": "YYYY-MM-DD"
93
- }
94
- ],
95
- "$comment": "Define columns for entity_extraction_with_documents action"
96
- },
97
-
98
- "ruleValidation": {
99
- "rules": [
100
- {
101
- "name": "{Rule 1}",
102
- "description": "{What this rule checks}",
103
- "condition": "{Entity 1} is not empty",
104
- "severity": "error"
105
- },
106
- {
107
- "name": "{Rule 2}",
108
- "description": "{What this rule checks}",
109
- "condition": "{Entity 2} > 0",
110
- "severity": "warning"
111
- }
112
- ],
113
- "$comment": "Define rules for rule_validation_with_documents action"
114
- },
115
-
116
- "approvalRouting": {
117
- "rules": [
118
- {
119
- "name": "Auto-approve",
120
- "condition": "confidence_score >= 0.95 AND validation_errors.length == 0",
121
- "action": "auto_approve"
122
- },
123
- {
124
- "name": "Manager Review",
125
- "condition": "{amount} > 10000",
126
- "action": "route_to_manager",
127
- "assignee": "{manager_email}"
128
- },
129
- {
130
- "name": "Reject",
131
- "condition": "validation_errors contains 'critical'",
132
- "action": "reject"
133
- }
134
- ],
135
- "sla": {
136
- "standard": "24h",
137
- "urgent": "4h",
138
- "reminderAt": "50%",
139
- "escalateAt": "100%"
140
- }
141
- },
142
-
143
- "fileUpload": {
144
- "localFiles": [],
145
- "tags": ["{default-tag}"],
146
- "useChunking": true,
147
- "acceptedMimeTypes": [
148
- "application/pdf",
149
- "image/png",
150
- "image/jpeg",
151
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
152
- ]
153
- },
154
-
155
- "dataProtection": {
156
- "protectedClasses": [
157
- "ssn",
158
- "credit_card",
159
- "account_number"
160
- ]
161
- },
162
-
163
- "fusionModel": {
164
- "allModels": true,
165
- "selectedModels": []
166
- },
167
-
168
- "notifications": {
169
- "onSuccess": {
170
- "enabled": true,
171
- "recipients": ["{email}"],
172
- "template": "Processing complete: {count} items processed"
173
- },
174
- "onFailure": {
175
- "enabled": true,
176
- "recipients": ["{email}"],
177
- "template": "Processing failed: {error}"
178
- }
179
- }
180
- }
@@ -1,63 +0,0 @@
1
- # Demo Scenarios
2
-
3
- Pre-built demo data scenarios for reliable AI Employee demonstrations.
4
-
5
- ## Available Scenarios
6
-
7
- | Scenario | Use Case | Persona Types |
8
- |----------|----------|---------------|
9
- | `sales-sdr` | Sales Development Representative | Voice, Chat |
10
- | `support-tier1` | Customer Support Tier 1 | Voice, Chat |
11
- | `hr-assistant` | HR Policy & Benefits Assistant | Chat, Voice |
12
-
13
- ## Usage
14
-
15
- Generate a demo kit:
16
-
17
- ```
18
- demo(mode="kit", persona_id="...", scenario="sales-sdr")
19
- ```
20
-
21
- Validate demo readiness:
22
-
23
- ```
24
- demo(mode="validate_kit", persona_id="...")
25
- ```
26
-
27
- ## What's Generated
28
-
29
- Each demo kit includes:
30
-
31
- 1. **KB Documents** - Markdown files for the knowledge base with demo-ready data
32
- 2. **Demo Script** - Questions to ask with expected answers
33
- 3. **Fixed Response Fallbacks** - Workflow nodes for guaranteed responses
34
- 4. **Validation Queries** - Test queries to verify before the demo
35
-
36
- ## Customization
37
-
38
- Add custom Q&A pairs:
39
-
40
- ```
41
- demo(mode="kit", persona_id="...", scenario="sales-sdr", custom_qa=[
42
- {"question": "Tell me about feature X", "answer": "Feature X does..."}
43
- ])
44
- ```
45
-
46
- ## Creating Custom Scenarios
47
-
48
- Create a JSON file in this directory with the following structure:
49
-
50
- ```json
51
- {
52
- "id": "my-scenario",
53
- "name": "My Custom Scenario",
54
- "description": "Description",
55
- "persona_types": ["voice", "chat"],
56
- "tags": ["tag1", "tag2"],
57
- "intents": [...],
58
- "entities": [...],
59
- "qa_pairs": [...]
60
- }
61
- ```
62
-
63
- See existing scenarios for complete examples.
@@ -1,116 +0,0 @@
1
- # Test Published Package: @ema.co/mcp-toolkit
2
-
3
- Use this prompt to verify the published npm package works correctly.
4
-
5
- ## Quick Test (Copy & Run)
6
-
7
- ```bash
8
- # Create temp directory
9
- cd /tmp && rm -rf mcp-test && mkdir mcp-test && cd mcp-test
10
-
11
- # Initialize and install
12
- npm init -y && npm install @ema.co/mcp-toolkit@latest
13
-
14
- # Create test file
15
- cat > test.mjs << 'EOF'
16
- import * as sdk from '@ema.co/mcp-toolkit/sdk';
17
-
18
- console.log('=== @ema.co/mcp-toolkit Test Suite ===\n');
19
-
20
- // 1. Version check
21
- const pkg = await import('@ema.co/mcp-toolkit/sdk');
22
- console.log(`SDK exports: ${Object.keys(pkg).length} items\n`);
23
-
24
- // 2. Core classes
25
- console.log('Core Classes:');
26
- console.log(` EmaClient: ${typeof sdk.EmaClient === 'function' ? '✅' : '❌'}`);
27
- console.log(` APISchemaRegistry: ${typeof sdk.APISchemaRegistry === 'function' ? '✅' : '❌'}`);
28
- console.log(` StateStore: ${typeof sdk.StateStore === 'function' ? '✅' : '❌'}`);
29
-
30
- // 3. Workflow generation
31
- console.log('\nWorkflow Generation:');
32
- console.log(` parseNaturalLanguage: ${typeof sdk.parseNaturalLanguage === 'function' ? '✅' : '❌'}`);
33
- console.log(` needsLLMGeneration: ${typeof sdk.needsLLMGeneration === 'function' ? '✅' : '❌'}`);
34
- console.log(` generateWorkflow: ${typeof sdk.generateWorkflow === 'function' ? '✅' : '❌'}`);
35
-
36
- // 4. Validation
37
- console.log('\nValidation:');
38
- console.log(` validateWorkflowSpec: ${typeof sdk.validateWorkflowSpec === 'function' ? '✅' : '❌'}`);
39
-
40
- // 5. Functional test
41
- console.log('\nFunctional Test:');
42
- const intent = sdk.parseNaturalLanguage('Customer support bot that searches knowledge base and sends emails');
43
- console.log(` Parse intent: ${intent.intents?.length > 0 ? '✅' : '❌'}`);
44
- console.log(` Intents found: ${JSON.stringify(intent.intents?.map(i => i.name))}`);
45
-
46
- const needsLLM = sdk.needsLLMGeneration(intent);
47
- console.log(` Needs LLM generation: ${needsLLM}`);
48
-
49
- if (needsLLM) {
50
- const result = sdk.generateWorkflow(intent, [], []);
51
- console.log(` LLM prompt generated: ${result.llm_prompt ? '✅' : '❌'}`);
52
- }
53
-
54
- console.log('\n=== Test Complete ===');
55
- EOF
56
-
57
- # Run test
58
- node test.mjs
59
- ```
60
-
61
- ## Expected Output
62
-
63
- ```
64
- === @ema.co/mcp-toolkit Test Suite ===
65
-
66
- SDK exports: 119+ items
67
-
68
- Core Classes:
69
- EmaClient: ✅
70
- APISchemaRegistry: ✅
71
- StateStore: ✅
72
-
73
- Workflow Generation:
74
- parseNaturalLanguage: ✅
75
- needsLLMGeneration: ✅
76
- generateWorkflow: ✅
77
-
78
- Validation:
79
- validateWorkflowSpec: ✅
80
-
81
- Functional Test:
82
- Parse intent: ✅
83
- Intents found: ["Customer Support","Email Automation"]
84
- Needs LLM generation: true
85
- LLM prompt generated: ✅
86
-
87
- === Test Complete ===
88
- ```
89
-
90
- ## Import Paths
91
-
92
- | Path | Contents |
93
- |------|----------|
94
- | `@ema.co/mcp-toolkit/sdk` | SDK classes and functions |
95
- | `@ema.co/mcp-toolkit/mcp` | MCP server components |
96
- | `@ema.co/mcp-toolkit` | CLI entry point (not for programmatic use) |
97
-
98
- ## MCP Server Test
99
-
100
- To test the MCP server:
101
-
102
- ```bash
103
- # Start MCP server (requires EMA_API_TOKEN)
104
- export EMA_API_TOKEN="your-token"
105
- export EMA_TENANT_ID="your-tenant"
106
- npx -y @ema.co/mcp-toolkit@latest
107
-
108
- # Or with npx directly
109
- EMA_API_TOKEN="..." EMA_TENANT_ID="..." npx -y @ema.co/mcp-toolkit@latest
110
- ```
111
-
112
- ## Version Check
113
-
114
- ```bash
115
- npm view @ema.co/mcp-toolkit version
116
- ```