@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,225 +0,0 @@
1
- # MCP Tool Consolidation v2
2
-
3
- > **Status: IMPLEMENTED** (v2026.01.17)
4
-
5
- ## Overview
6
-
7
- Consolidate tools with cleaner separation of concerns.
8
-
9
- **Primary tools (use these):**
10
- - `persona` - AI Employee management
11
- - `data` - Persona data management
12
- - `reference` - All reference info (envs, actions, templates, patterns, concepts)
13
- - `sync` - Cross-environment sync
14
-
15
- **Legacy tools (still work, route to primary):**
16
- - `env`, `action`, `template`, `knowledge`, `demo`
17
-
18
- ## Final Tool Design
19
-
20
- ### 1. `persona` - Manage AI Employees
21
-
22
- ```typescript
23
- persona(
24
- id?: string, // get specific persona
25
- query?: string, // search by name
26
- all?: boolean, // list all
27
-
28
- // Create/Clone
29
- name?: string, // for create
30
- type?: "voice" | "chat" | "dashboard",
31
- input?: string, // natural language description
32
- clone_from?: string, // clone source persona ID
33
- clone_data?: boolean, // also clone files
34
- sanitize?: boolean, // sanitize PII during clone
35
-
36
- // Update
37
- enabled?: boolean, // enable/disable
38
-
39
- // Compare
40
- compare_to?: string, // compare two personas
41
-
42
- // Output control
43
- include_workflow?: boolean, // include workflow_def in response
44
- )
45
- ```
46
-
47
- **Examples:**
48
- ```
49
- persona(all=true) # list all
50
- persona(id="abc-123") # get specific
51
- persona(query="support") # search
52
- persona(name="My Bot", type="voice", input="...") # create
53
- persona(clone_from="abc", name="Clone", clone_data=true, sanitize=true)
54
- ```
55
-
56
- ---
57
-
58
- ### 2. `data` - Manage Persona Data
59
-
60
- ```typescript
61
- data(
62
- persona_id: string, // REQUIRED - data belongs to persona
63
- mode?: "list" | "get" | "upload" | "delete" | "sanitize", // default: list
64
- file_id?: string, // for get/delete specific
65
- include_results?: boolean, // for dashboard: show extracted values
66
- )
67
- ```
68
-
69
- **Examples:**
70
- ```
71
- data(persona_id="abc") # list files
72
- data(persona_id="abc", file_id="x") # get file details
73
- data(persona_id="abc", mode="upload") # upload (file from context)
74
- data(persona_id="abc", mode="delete", file_id="x")
75
- data(persona_id="abc", mode="sanitize") # sanitize all data
76
- data(persona_id="abc", include_results=true) # list with extraction results
77
- ```
78
-
79
- **For dashboard personas, file listing includes:**
80
- ```json
81
- {
82
- "files": [{
83
- "id": "file-123",
84
- "name": "contract.pdf",
85
- "processing": {
86
- "status": "success",
87
- "extracted": { "vendor": "Acme", "amount": "$50k" }
88
- }
89
- }]
90
- }
91
- ```
92
-
93
- ---
94
-
95
- ### 3. `workflow` - Workflow Operations
96
-
97
- ```typescript
98
- workflow(
99
- persona_id?: string, // target persona
100
-
101
- // Generate/Modify
102
- input?: string, // natural language description
103
-
104
- // Analyze
105
- analyze?: boolean, // analyze current workflow
106
- optimize?: boolean, // suggest optimizations
107
-
108
- // Deploy
109
- workflow_def?: object, // direct workflow deployment
110
- preview?: boolean, // preview without deploying (default: true)
111
- )
112
- ```
113
-
114
- **Examples:**
115
- ```
116
- workflow(persona_id="abc", input="Add email notification")
117
- workflow(persona_id="abc", analyze=true)
118
- workflow(persona_id="abc", optimize=true, preview=false)
119
- ```
120
-
121
- ---
122
-
123
- ### 4. `reference` - All Reference Information
124
-
125
- ```typescript
126
- reference(
127
- type?: "actions" | "templates" | "patterns" | "envs" | "concepts" | "guidance",
128
-
129
- // For actions
130
- action_id?: string, // get specific action
131
- query?: string, // search
132
- suggest?: string, // suggest actions for use case
133
-
134
- // For guidance
135
- topic?: string, // guidance topic
136
-
137
- // For concepts
138
- concept?: string, // specific concept
139
-
140
- // Validation helpers
141
- check_types?: { source: string, target: string },
142
- validate_prompt?: string,
143
- )
144
- ```
145
-
146
- **Examples:**
147
- ```
148
- reference(type="actions") # list all actions
149
- reference(type="actions", query="email") # search actions
150
- reference(type="actions", suggest="IT helpdesk")
151
- reference(action_id="send_email") # get specific action
152
- reference(type="templates") # list workflow templates
153
- reference(type="patterns") # list patterns
154
- reference(type="envs") # list environments
155
- reference(type="concepts") # list concepts
156
- reference(concept="HITL") # get specific concept
157
- reference(type="guidance", topic="categorizer-routing")
158
- ```
159
-
160
- ---
161
-
162
- ### 5. `sync` - Environment Sync
163
-
164
- ```typescript
165
- sync(
166
- id?: string, // persona ID or name
167
- target?: string, // target environment
168
- dry_run?: boolean, // simulate without changes
169
-
170
- // Status
171
- mode?: "run" | "status" | "config",
172
- list_synced?: boolean, // list all synced personas
173
- )
174
- ```
175
-
176
- **Examples:**
177
- ```
178
- sync(id="IT Support", target="dev")
179
- sync(id="abc-123", target="staging", dry_run=true)
180
- sync(mode="status", id="abc-123")
181
- sync(mode="config")
182
- ```
183
-
184
- ---
185
-
186
- ## Migration Path
187
-
188
- | Old Tool | New Location |
189
- |----------|--------------|
190
- | `env` | `reference(type="envs")` |
191
- | `knowledge` | `data` |
192
- | `demo` | Removed (generate separately or future addition) |
193
- | `action` | `reference(type="actions")` |
194
- | `template` | `reference(type="templates")` / `reference(type="patterns")` |
195
-
196
- ## Mental Model
197
-
198
- ```
199
- ┌─────────────────────────────────────────┐
200
- │ PERSONA │
201
- │ ┌─────────┐ ┌──────────┐ │
202
- │ │ data │ │ workflow │ │
203
- │ └─────────┘ └──────────┘ │
204
- └─────────────────────────────────────────┘
205
- │ │
206
- └──────┬───────┘
207
-
208
- ┌───────────▼───────────┐
209
- │ reference │ (actions, templates, guidance)
210
- └───────────────────────┘
211
-
212
- ┌───────────▼───────────┐
213
- │ sync │ (copy between envs)
214
- └───────────────────────┘
215
- ```
216
-
217
- ## Implementation Checklist
218
-
219
- - [x] Update `tools-consolidated.ts` with new tool definitions
220
- - [x] Update `handlers-consolidated.ts` with routing logic
221
- - [x] Add `data` tool (wraps knowledge with simplified interface)
222
- - [x] Expand `reference` to support type="envs|actions|templates|patterns|widgets"
223
- - [x] Update tests
224
- - [x] Update documentation
225
- - [x] Keep legacy tools for backwards compatibility (they still work)
@@ -1,256 +0,0 @@
1
- # MCP Tool Response Standards
2
-
3
- Uniform structure and formatting rules for all MCP tool responses.
4
-
5
- ## Core Principles
6
-
7
- 1. **Explicit over implicit**: Always return clear status, never silently succeed/fail
8
- 2. **Actionable responses**: Include next steps, commands, or guidance
9
- 3. **Consistent shape**: Same response structure within each mode category
10
- 4. **Progressive disclosure**: Summary first, details on request
11
-
12
- ## Response Categories
13
-
14
- ### 1. Success Responses
15
-
16
- ```typescript
17
- {
18
- status: "success",
19
- // Primary result data
20
- [result_key]: data,
21
- // Optional metadata
22
- _meta?: {
23
- duration_ms?: number;
24
- cached?: boolean;
25
- }
26
- }
27
- ```
28
-
29
- ### 2. Error Responses
30
-
31
- ```typescript
32
- {
33
- status: "error",
34
- error: "Short error message",
35
- details?: "Longer explanation",
36
- suggestion?: "How to fix",
37
- code?: "ERROR_CODE"
38
- }
39
- ```
40
-
41
- ### 3. Clarification Responses
42
-
43
- When mode is omitted or ambiguous:
44
-
45
- ```typescript
46
- {
47
- status: "clarification_needed",
48
- message: "What operation would you like?",
49
- suggested_mode?: "mode_name", // If intent is detectable
50
- options: ["mode1", "mode2", ...],
51
- hint?: "Use mode='...' for direct execution",
52
- examples?: ["command1", "command2"]
53
- }
54
- ```
55
-
56
- ### 4. Analysis Responses
57
-
58
- For analyze/review/audit operations:
59
-
60
- ```typescript
61
- {
62
- status: "healthy" | "issues_found" | "critical",
63
- summary: {
64
- total_issues: number,
65
- by_severity: { critical: number, warning: number, info: number },
66
- by_category?: Record<string, number>
67
- },
68
- issues: Array<{
69
- id: string,
70
- severity: "critical" | "warning" | "info",
71
- category: string,
72
- title: string,
73
- description: string,
74
- auto_fixable: boolean,
75
- fix_description?: string
76
- }>,
77
- next_steps: {
78
- auto_fix_available: boolean,
79
- command?: string,
80
- manual_actions?: string[]
81
- }
82
- }
83
- ```
84
-
85
- ### 5. List Responses
86
-
87
- ```typescript
88
- {
89
- count: number,
90
- [items_key]: Array<item>, // e.g., "personas", "files", "templates"
91
- // Optional pagination
92
- pagination?: {
93
- offset: number,
94
- limit: number,
95
- has_more: boolean
96
- }
97
- }
98
- ```
99
-
100
- ### 6. Single Item Responses
101
-
102
- ```typescript
103
- {
104
- id: string,
105
- name?: string,
106
- // ... item-specific fields
107
- _meta?: {
108
- retrieved_at: string,
109
- source: string
110
- }
111
- }
112
- ```
113
-
114
- ## Mode + Flag Pattern
115
-
116
- ### Rule: Mode defines WHAT, flags define HOW
117
-
118
- ```typescript
119
- // Mode = the operation type
120
- mode: "analyze" | "list" | "get" | "create" | "update" | "delete" | ...
121
-
122
- // Flags modify the operation behavior
123
- fix: boolean // Auto-apply fixes (for analyze)
124
- preview: boolean // Don't persist changes (for create/update)
125
- include: string[] // What to include in response
126
- force: boolean // Skip confirmations
127
- ```
128
-
129
- ### Anti-Pattern: Mode as flag
130
-
131
- ```typescript
132
- // ❌ BAD: Using mode to toggle behavior
133
- mode: "optimize" // This is just mode="analyze" + fix=true
134
-
135
- // ✅ GOOD: Clear mode + flag
136
- mode: "analyze", fix: true
137
- ```
138
-
139
- ### Anti-Pattern: Flag that changes operation type
140
-
141
- ```typescript
142
- // ❌ BAD: Flag changes what the operation does
143
- mode: "get", optimize: true // Does this get or optimize?
144
-
145
- // ✅ GOOD: Mode is explicit
146
- mode: "analyze", fix: true // Analyze and apply fixes
147
- ```
148
-
149
- ## Severity Levels
150
-
151
- | Level | Meaning | Action |
152
- |-------|---------|--------|
153
- | `critical` | Breaks functionality, must fix | Block deployment |
154
- | `warning` | Degraded behavior, should fix | Warn on deployment |
155
- | `info` | Improvement opportunity | Optional |
156
-
157
- ## Standard Fields
158
-
159
- ### Identifiers
160
-
161
- - `id` - Primary identifier (UUID preferred)
162
- - `name` - Human-readable name
163
- - `identifier` - DEPRECATED, use `id`
164
-
165
- ### Status
166
-
167
- - `status` - Current state: "active", "inactive", "draft", "error"
168
- - `enabled` - Boolean toggle
169
-
170
- ### Timestamps
171
-
172
- - Use ISO 8601 format
173
- - Field names: `created_at`, `updated_at`, `retrieved_at`
174
-
175
- ## Tool-Specific Standards
176
-
177
- ### persona tool
178
-
179
- | Mode | Primary Response Key | Status Field |
180
- |------|---------------------|--------------|
181
- | list | `personas` | `count` |
182
- | get | (flat object) | `status` |
183
- | create | `persona_id`, `name` | `success` |
184
- | update | `updated` | `success` |
185
- | analyze | `issues` | `status` (healthy/issues_found/critical) |
186
-
187
- ### data tool
188
-
189
- | Mode | Primary Response Key | Status Field |
190
- |------|---------------------|--------------|
191
- | list | `files` | `count` |
192
- | get | (flat object) | - |
193
- | upload | `file_id` | `success` |
194
- | generate | `document` | `status` |
195
- | analyze | `issues` | `status` |
196
-
197
- ### sync tool
198
-
199
- | Mode | Primary Response Key | Status Field |
200
- |------|---------------------|--------------|
201
- | run | `synced` | `success` |
202
- | status | `sync_status` | `status` |
203
- | config | `config` | - |
204
-
205
- ## Example: Uniform Analyze Response
206
-
207
- ```json
208
- {
209
- "status": "issues_found",
210
- "summary": {
211
- "total_issues": 5,
212
- "by_severity": { "critical": 0, "warning": 2, "info": 3 },
213
- "by_category": { "workflow": 3, "config": 1, "data": 1 }
214
- },
215
- "issues": [
216
- {
217
- "id": "orphaned-node-1",
218
- "severity": "warning",
219
- "category": "workflow",
220
- "title": "Orphaned node: general_inquiry handler",
221
- "description": "Node 'call_llm_general' has no incoming connections",
222
- "auto_fixable": true,
223
- "fix_description": "Remove orphaned node"
224
- },
225
- {
226
- "id": "missing-embedding-1",
227
- "severity": "info",
228
- "category": "data",
229
- "title": "File without embedding",
230
- "description": "company-faq.pdf has embedding disabled",
231
- "auto_fixable": true,
232
- "fix_description": "Enable embedding for file"
233
- }
234
- ],
235
- "next_steps": {
236
- "auto_fix_available": true,
237
- "command": "persona(mode=\"analyze\", id=\"...\", fix=true)",
238
- "manual_actions": [
239
- "Review orphaned node before removal",
240
- "Verify FAQ file should be searchable"
241
- ]
242
- }
243
- }
244
- ```
245
-
246
- ## Checklist for New Modes
247
-
248
- When adding a new mode to any tool:
249
-
250
- - [ ] Response follows category pattern (success/error/list/analysis)
251
- - [ ] Error responses include `suggestion` field
252
- - [ ] Status field uses standard values
253
- - [ ] Identifiers use `id` not `identifier`
254
- - [ ] List responses have `count` + array field
255
- - [ ] Analysis responses have `summary` + `issues` + `next_steps`
256
- - [ ] Flags don't change operation type (only modify behavior)
@@ -1,175 +0,0 @@
1
- # Demo Kits
2
-
3
- Pre-packaged demo resources for Ema AI Employee demonstrations. Each kit includes personas, demo scripts, sample data, and validation queries.
4
-
5
- ## Available Demo Kits
6
-
7
- | Kit ID | Name | Domain | Personas | Tags |
8
- |--------|------|--------|----------|------|
9
- | `finance-ap` | Finance - Accounts Payable | Finance | 2 | `finance`, `invoice`, `automation` |
10
- | `finance-ar` | Finance - Accounts Receivable | Finance | 1 | `finance`, `billing`, `revenue` |
11
- | `sales-sdr` | Sales Development | Sales | 2 | `sales`, `outbound`, `prospecting` |
12
- | `support-tier1` | Customer Support T1 | Support | 2 | `support`, `voice`, `chat` |
13
- | `hr-assistant` | HR Policy Assistant | HR | 1 | `hr`, `policy`, `benefits` |
14
-
15
- ## Kit Structure
16
-
17
- Each demo kit contains:
18
-
19
- ```
20
- demo-kits/
21
- ├── {kit-id}/
22
- │ ├── manifest.json # Kit metadata, personas, tags
23
- │ ├── demo-script.md # Talk track, objections, ROI
24
- │ ├── sample-data/ # Demo data files
25
- │ │ ├── input.json # Sample inputs
26
- │ │ └── expected.json # Expected outputs
27
- │ └── validation/
28
- │ └── queries.json # Pre/post-demo validation queries
29
- ```
30
-
31
- ## Usage
32
-
33
- ### List Available Kits
34
-
35
- ```
36
- reference(demo_kits=true)
37
- ```
38
-
39
- ### Get Kit Details
40
-
41
- ```
42
- reference(demo_kit="finance-ap")
43
- ```
44
-
45
- ### Generate Demo for Persona
46
-
47
- ```
48
- persona(method="demo_kit", id="{persona_id}", kit="finance-ap")
49
- ```
50
-
51
- ### Validate Demo Readiness
52
-
53
- ```
54
- persona(method="validate", id="{persona_id}", checks=["demo_ready"])
55
- ```
56
-
57
- ## Tagging System
58
-
59
- Demo kits and personas use a consistent tagging system:
60
-
61
- ### Domain Tags
62
- - `finance` - Financial operations (AP, AR, Treasury)
63
- - `sales` - Sales and revenue operations
64
- - `support` - Customer support and service
65
- - `hr` - Human resources
66
- - `it` - IT operations and security
67
- - `legal` - Legal and compliance
68
- - `marketing` - Marketing operations
69
-
70
- ### Capability Tags
71
- - `voice` - Voice/phone interactions
72
- - `chat` - Chat/messaging interactions
73
- - `dashboard` - Dashboard/data processing
74
- - `document` - Document generation
75
- - `automation` - Process automation
76
- - `analysis` - Data analysis
77
-
78
- ### Use Case Tags
79
- - `invoice` - Invoice processing
80
- - `billing` - Billing operations
81
- - `onboarding` - Employee/customer onboarding
82
- - `compliance` - Compliance and audit
83
- - `reporting` - Reporting and analytics
84
-
85
- ## Creating a Demo Kit
86
-
87
- 1. Create a folder in `demo-kits/`
88
- 2. Add `manifest.json` with kit metadata
89
- 3. Add `demo-script.md` with talk track
90
- 4. Add sample data and validation queries
91
- 5. Register personas in manifest
92
-
93
- ### Manifest Schema
94
-
95
- ```json
96
- {
97
- "id": "kit-id",
98
- "name": "Kit Display Name",
99
- "version": "1.0.0",
100
- "description": "What this kit demonstrates",
101
- "domain": "finance|sales|support|hr|it|legal|marketing",
102
- "tags": ["tag1", "tag2"],
103
- "personas": [
104
- {
105
- "id": "uuid",
106
- "name": "Persona Name",
107
- "role": "primary|supporting",
108
- "description": "What this persona does in the demo"
109
- }
110
- ],
111
- "prerequisites": {
112
- "integrations": ["coupa", "salesforce"],
113
- "data": ["sample-invoices"],
114
- "environment": "demo"
115
- },
116
- "demo_flow": [
117
- {
118
- "step": 1,
119
- "title": "Setup",
120
- "duration_minutes": 2,
121
- "actions": ["Load persona", "Prepare data"]
122
- }
123
- ],
124
- "target_audience": {
125
- "primary": "AP Manager",
126
- "secondary": ["CFO", "IT Director"],
127
- "company_size": "mid-market",
128
- "industries": ["manufacturing", "retail"]
129
- },
130
- "roi_metrics": {
131
- "time_saved_per_unit": "15 minutes",
132
- "volume_per_month": 10000,
133
- "cost_per_unit_before": 12,
134
- "cost_per_unit_after": 1.5
135
- }
136
- }
137
- ```
138
-
139
- ## Bundling Multiple Kits
140
-
141
- Create meta-kits that combine related demos:
142
-
143
- ```json
144
- {
145
- "id": "finance-complete",
146
- "name": "Complete Finance Automation",
147
- "type": "bundle",
148
- "includes": ["finance-ap", "finance-ar", "finance-reporting"],
149
- "tags": ["finance", "bundle", "enterprise"]
150
- }
151
- ```
152
-
153
- ## Integration with Persona Tool
154
-
155
- The `persona` tool supports kit-related operations:
156
-
157
- ```
158
- # Tag a persona
159
- persona(method="update", id="...", tags=["finance", "invoice"])
160
-
161
- # Find personas by tag
162
- persona(method="list", tags=["finance"])
163
-
164
- # Get demo kit for persona
165
- persona(method="demo_kit", id="...")
166
- ```
167
-
168
- ## Quality Standards
169
-
170
- Each demo kit must:
171
- - [ ] Have validated sample data
172
- - [ ] Include error handling scenarios
173
- - [ ] Work in demo environment
174
- - [ ] Include realistic ROI numbers
175
- - [ ] Have tested validation queries