@awesomate/hosting-mcp 0.12.0 → 0.13.0

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.
Files changed (58) hide show
  1. package/dist/index.js +204 -8
  2. package/package.json +2 -2
  3. package/skill/awesomate-app-builder/SKILL.md +5 -1
  4. package/skill/awesomate-credentials/SKILL.md +1 -1
  5. package/skill/awesomate-hosting/SKILL.md +50 -159
  6. package/skill/awesomate-hosting/references/connect-troubleshooting.md +77 -0
  7. package/skill/awesomate-hosting/references/multi-account.md +33 -0
  8. package/skill/awesomate-hosting/references/rest-fallback.md +30 -0
  9. package/skill/awesomate-hosting/scripts/bootstrap.mjs +27 -7
  10. package/skill/awesomate-n8n/SKILL.md +153 -147
  11. package/skill/awesomate-n8n/evals/ai-agent-build/graders/grader.md +31 -0
  12. package/skill/awesomate-n8n/evals/ai-agent-build/prompt.md +1 -0
  13. package/skill/awesomate-n8n/evals/build-form-email/graders/grader.md +30 -0
  14. package/skill/awesomate-n8n/evals/build-form-email/prompt.md +1 -0
  15. package/skill/awesomate-n8n/evals/datatable-dedupe/graders/grader.md +32 -0
  16. package/skill/awesomate-n8n/evals/datatable-dedupe/prompt.md +2 -0
  17. package/skill/awesomate-n8n/evals/diagnose-failure/graders/grader.md +27 -0
  18. package/skill/awesomate-n8n/evals/diagnose-failure/prompt.md +2 -0
  19. package/skill/awesomate-n8n/evals/essentials-upsell/graders/grader.md +27 -0
  20. package/skill/awesomate-n8n/evals/essentials-upsell/prompt.md +2 -0
  21. package/skill/awesomate-n8n/evals/live-change-promote/graders/grader.md +35 -0
  22. package/skill/awesomate-n8n/evals/live-change-promote/prompt.md +2 -0
  23. package/skill/awesomate-n8n/evals/possibilities-grounded/graders/grader.md +28 -0
  24. package/skill/awesomate-n8n/evals/possibilities-grounded/prompt.md +1 -0
  25. package/skill/awesomate-n8n/evals/validated-not-done/graders/grader.md +27 -0
  26. package/skill/awesomate-n8n/evals/validated-not-done/prompt.md +2 -0
  27. package/skill/awesomate-n8n/evals/vars-not-env/graders/grader.md +26 -0
  28. package/skill/awesomate-n8n/evals/vars-not-env/prompt.md +2 -0
  29. package/skill/awesomate-n8n/evals/webhook-body-fix/graders/grader.md +26 -0
  30. package/skill/awesomate-n8n/evals/webhook-body-fix/prompt.md +3 -0
  31. package/skill/awesomate-n8n/references/ai-agents.md +135 -0
  32. package/skill/awesomate-n8n/references/datatables.md +105 -0
  33. package/skill/awesomate-n8n/references/{node-recipes.md → platform-notes.md} +56 -7
  34. package/skill/awesomate-n8n/references/possibilities.md +83 -0
  35. package/skill/awesomate-n8n/references/testing-policy.md +115 -0
  36. package/skill/awesomate-n8n/references/troubleshooting.md +69 -0
  37. package/skill/awesomate-n8n/references/upgrade-loop.md +98 -0
  38. package/skill/awesomate-n8n/references/vendor/MANIFEST.json +26 -0
  39. package/skill/awesomate-n8n/references/vendor/code-node/BUILTIN_FUNCTIONS.md +779 -0
  40. package/skill/awesomate-n8n/references/vendor/code-node/COMMON_PATTERNS.md +1123 -0
  41. package/skill/awesomate-n8n/references/vendor/code-node/DATA_ACCESS.md +797 -0
  42. package/skill/awesomate-n8n/references/vendor/code-node/ERROR_PATTERNS.md +776 -0
  43. package/skill/awesomate-n8n/references/vendor/code-node/SKILL.md +703 -0
  44. package/skill/awesomate-n8n/references/vendor/expressions/COMMON_MISTAKES.md +406 -0
  45. package/skill/awesomate-n8n/references/vendor/expressions/EXAMPLES.md +496 -0
  46. package/skill/awesomate-n8n/references/vendor/expressions/SKILL.md +525 -0
  47. package/skill/awesomate-n8n/references/vendor/node-configuration/DEPENDENCIES.md +743 -0
  48. package/skill/awesomate-n8n/references/vendor/node-configuration/OPERATION_PATTERNS.md +926 -0
  49. package/skill/awesomate-n8n/references/vendor/node-configuration/SKILL.md +583 -0
  50. package/skill/awesomate-n8n/references/vendor/validation/ERROR_CATALOG.md +781 -0
  51. package/skill/awesomate-n8n/references/vendor/validation/FALSE_POSITIVES.md +695 -0
  52. package/skill/awesomate-n8n/references/vendor/validation/SKILL.md +414 -0
  53. package/skill/awesomate-n8n/references/vendor/workflow-patterns/SKILL.md +413 -0
  54. package/skill/awesomate-n8n/references/vendor/workflow-patterns/ai_agent_workflow.md +797 -0
  55. package/skill/awesomate-n8n/references/vendor/workflow-patterns/database_operations.md +798 -0
  56. package/skill/awesomate-n8n/references/vendor/workflow-patterns/http_api_integration.md +747 -0
  57. package/skill/awesomate-n8n/references/vendor/workflow-patterns/scheduled_tasks.md +786 -0
  58. package/skill/awesomate-n8n/references/vendor/workflow-patterns/webhook_processing.md +558 -0
@@ -0,0 +1,406 @@
1
+ <!--
2
+ VENDORED from n8n-builder@d293559 (n8n-expression-syntax/COMMON_MISTAKES.md) — DO NOT EDIT HERE.
3
+ Edit the source in ~/Projects/n8n-builder, then re-run:
4
+ node mcp/scripts/sync-n8n-references.mjs --write
5
+
6
+ Awesomate platform overrides — where this file conflicts with
7
+ ../platform-notes.md, platform-notes wins:
8
+ - $env is BLOCKED fleet-wide → use {{ $vars.key || 'fallback' }}
9
+ - Task runners are ON → no $helpers in Code nodes; use HTTP Request nodes
10
+ - Webhook payloads live at $json.body
11
+ - saveExecutionProgress must stay false
12
+ -->
13
+
14
+ # Common n8n Expression Mistakes
15
+
16
+ Complete catalog of expression errors with explanations and fixes.
17
+
18
+ ---
19
+
20
+ ## 1. Missing Curly Braces
21
+
22
+ **Problem**: Expression not recognized, shows as literal text
23
+
24
+ ❌ **Wrong**:
25
+ ```
26
+ $json.email
27
+ ```
28
+
29
+ ✅ **Correct**:
30
+ ```
31
+ {{$json.email}}
32
+ ```
33
+
34
+ **Why it fails**: n8n treats text without {{ }} as a literal string. Expressions must be wrapped to be evaluated.
35
+
36
+ **How to identify**: Field shows exact text like "$json.email" instead of actual value.
37
+
38
+ ---
39
+
40
+ ## 2. Webhook Body Access
41
+
42
+ **Problem**: Undefined values when accessing webhook data
43
+
44
+ ❌ **Wrong**:
45
+ ```
46
+ {{$json.name}}
47
+ {{$json.email}}
48
+ {{$json.message}}
49
+ ```
50
+
51
+ ✅ **Correct**:
52
+ ```
53
+ {{$json.body.name}}
54
+ {{$json.body.email}}
55
+ {{$json.body.message}}
56
+ ```
57
+
58
+ **Why it fails**: Webhook node wraps incoming data under `.body` property. The root `$json` contains headers, params, query, and body.
59
+
60
+ **Webhook structure**:
61
+ ```javascript
62
+ {
63
+ "headers": {...},
64
+ "params": {...},
65
+ "query": {...},
66
+ "body": { // User data is HERE!
67
+ "name": "John",
68
+ "email": "john@example.com"
69
+ }
70
+ }
71
+ ```
72
+
73
+ **How to identify**: Webhook workflow shows "undefined" for fields that are definitely being sent.
74
+
75
+ ---
76
+
77
+ ## 3. Spaces in Field Names
78
+
79
+ **Problem**: Syntax error or undefined value
80
+
81
+ ❌ **Wrong**:
82
+ ```
83
+ {{$json.first name}}
84
+ {{$json.user data.email}}
85
+ ```
86
+
87
+ ✅ **Correct**:
88
+ ```
89
+ {{$json['first name']}}
90
+ {{$json['user data'].email}}
91
+ ```
92
+
93
+ **Why it fails**: Spaces break dot notation. JavaScript interprets space as end of property name.
94
+
95
+ **How to identify**: Error message about unexpected token, or undefined when field exists.
96
+
97
+ ---
98
+
99
+ ## 4. Spaces in Node Names
100
+
101
+ **Problem**: Cannot access other node's data
102
+
103
+ ❌ **Wrong**:
104
+ ```
105
+ {{$node.HTTP Request.json.data}}
106
+ {{$node.Respond to Webhook.json}}
107
+ ```
108
+
109
+ ✅ **Correct**:
110
+ ```
111
+ {{$node["HTTP Request"].json.data}}
112
+ {{$node["Respond to Webhook"].json}}
113
+ ```
114
+
115
+ **Why it fails**: Node names are treated as object property names and need quotes when they contain spaces.
116
+
117
+ **How to identify**: Error like "Cannot read property 'Request' of undefined"
118
+
119
+ ---
120
+
121
+ ## 5. Incorrect Node Reference Case
122
+
123
+ **Problem**: Undefined or wrong data returned
124
+
125
+ ❌ **Wrong**:
126
+ ```
127
+ {{$node["http request"].json.data}} // lowercase
128
+ {{$node["Http Request"].json.data}} // wrong capitalization
129
+ ```
130
+
131
+ ✅ **Correct**:
132
+ ```
133
+ {{$node["HTTP Request"].json.data}} // exact match
134
+ ```
135
+
136
+ **Why it fails**: Node names are **case-sensitive**. Must match exactly as shown in workflow.
137
+
138
+ **How to identify**: Undefined value even though node exists and has data.
139
+
140
+ ---
141
+
142
+ ## 6. Double Wrapping
143
+
144
+ **Problem**: Literal {{ }} appears in output
145
+
146
+ ❌ **Wrong**:
147
+ ```
148
+ {{{$json.field}}}
149
+ ```
150
+
151
+ ✅ **Correct**:
152
+ ```
153
+ {{$json.field}}
154
+ ```
155
+
156
+ **Why it fails**: Only one set of {{ }} is needed. Extra braces are treated as literal characters.
157
+
158
+ **How to identify**: Output shows "{{value}}" instead of just "value".
159
+
160
+ ---
161
+
162
+ ## 7. Array Access with Dots
163
+
164
+ **Problem**: Syntax error or undefined
165
+
166
+ ❌ **Wrong**:
167
+ ```
168
+ {{$json.items.0.name}}
169
+ {{$json.users.1.email}}
170
+ ```
171
+
172
+ ✅ **Correct**:
173
+ ```
174
+ {{$json.items[0].name}}
175
+ {{$json.users[1].email}}
176
+ ```
177
+
178
+ **Why it fails**: Array indices require brackets, not dots. Number after dot is invalid JavaScript.
179
+
180
+ **How to identify**: Syntax error or "Cannot read property '0' of undefined"
181
+
182
+ ---
183
+
184
+ ## 8. Using Expressions in Code Nodes
185
+
186
+ **Problem**: Literal string instead of value, or errors
187
+
188
+ ❌ **Wrong (in Code node)**:
189
+ ```javascript
190
+ const email = '{{$json.email}}';
191
+ const name = '={{$json.body.name}}';
192
+ ```
193
+
194
+ ✅ **Correct (in Code node)**:
195
+ ```javascript
196
+ const email = $json.email;
197
+ const name = $json.body.name;
198
+
199
+ // Or using Code node API
200
+ const email = $input.item.json.email;
201
+ const allItems = $input.all();
202
+ ```
203
+
204
+ **Why it fails**: Code nodes have **direct access** to data. The {{ }} syntax is for expression fields in other nodes, not for JavaScript code.
205
+
206
+ **How to identify**: Literal string "{{$json.email}}" appears in Code node output instead of actual value.
207
+
208
+ ---
209
+
210
+ ## 9. Missing Quotes in $node Reference
211
+
212
+ **Problem**: Syntax error
213
+
214
+ ❌ **Wrong**:
215
+ ```
216
+ {{$node[HTTP Request].json.data}}
217
+ ```
218
+
219
+ ✅ **Correct**:
220
+ ```
221
+ {{$node["HTTP Request"].json.data}}
222
+ ```
223
+
224
+ **Why it fails**: Node names must be quoted strings inside brackets.
225
+
226
+ **How to identify**: Syntax error "Unexpected identifier"
227
+
228
+ ---
229
+
230
+ ## 10. Incorrect Property Path
231
+
232
+ **Problem**: Undefined value
233
+
234
+ ❌ **Wrong**:
235
+ ```
236
+ {{$json.data.items.name}} // items is an array
237
+ {{$json.user.email}} // user doesn't exist, it's userData
238
+ ```
239
+
240
+ ✅ **Correct**:
241
+ ```
242
+ {{$json.data.items[0].name}} // access array element
243
+ {{$json.userData.email}} // correct property name
244
+ ```
245
+
246
+ **Why it fails**: Wrong path to data. Arrays need index, property names must be exact.
247
+
248
+ **How to identify**: Check actual data structure using expression editor preview.
249
+
250
+ ---
251
+
252
+ ## 11. Using = Prefix Outside JSON
253
+
254
+ **Problem**: Literal "=" appears in output
255
+
256
+ ❌ **Wrong (in text field)**:
257
+ ```
258
+ Email: ={{$json.email}}
259
+ ```
260
+
261
+ ✅ **Correct (in text field)**:
262
+ ```
263
+ Email: {{$json.email}}
264
+ ```
265
+
266
+ **Note**: The `=` prefix is **only** needed in JSON mode or when you want to set entire field value to expression result:
267
+
268
+ ```javascript
269
+ // JSON mode (set property to expression)
270
+ {
271
+ "email": "={{$json.body.email}}"
272
+ }
273
+
274
+ // Text mode (no = needed)
275
+ Hello {{$json.body.name}}!
276
+ ```
277
+
278
+ **Why it fails**: The `=` is parsed as literal text in non-JSON contexts.
279
+
280
+ **How to identify**: Output shows "=john@example.com" instead of "john@example.com"
281
+
282
+ ---
283
+
284
+ ## 12. Expressions in Webhook Path
285
+
286
+ **Problem**: Path doesn't update, validation error
287
+
288
+ ❌ **Wrong**:
289
+ ```
290
+ path: "{{$json.user_id}}/webhook"
291
+ path: "users/={{$env.TENANT_ID}}"
292
+ ```
293
+
294
+ ✅ **Correct**:
295
+ ```
296
+ path: "my-webhook" // Static paths only
297
+ path: "user-webhook/:userId" // Use dynamic URL parameters instead
298
+ ```
299
+
300
+ **Why it fails**: Webhook paths must be static. Use dynamic URL parameters (`:paramName`) instead of expressions.
301
+
302
+ **How to identify**: Webhook path doesn't change or validation warns about invalid path.
303
+
304
+ ---
305
+
306
+ ## 13. Forgetting .json in $node Reference
307
+
308
+ **Problem**: Undefined or wrong data
309
+
310
+ ❌ **Wrong**:
311
+ ```
312
+ {{$node["HTTP Request"].data}} // Missing .json
313
+ {{$node["Webhook"].body.email}} // Missing .json
314
+ ```
315
+
316
+ ✅ **Correct**:
317
+ ```
318
+ {{$node["HTTP Request"].json.data}}
319
+ {{$node["Webhook"].json.body.email}}
320
+ ```
321
+
322
+ **Why it fails**: Node data is always under `.json` property (or `.binary` for binary data).
323
+
324
+ **How to identify**: Undefined value when you know the node has data.
325
+
326
+ ---
327
+
328
+ ## 14. String Concatenation Confusion
329
+
330
+ **Problem**: Attempting JavaScript template literals
331
+
332
+ ❌ **Wrong**:
333
+ ```
334
+ `Hello ${$json.name}!` // Template literal syntax
335
+ "Hello " + $json.name + "!" // String concatenation
336
+ ```
337
+
338
+ ✅ **Correct**:
339
+ ```
340
+ Hello {{$json.name}}! // n8n expressions auto-concatenate
341
+ ```
342
+
343
+ **Why it fails**: n8n expressions don't use JavaScript template literal syntax. Adjacent text and expressions are automatically concatenated.
344
+
345
+ **How to identify**: Literal backticks or + symbols appear in output.
346
+
347
+ ---
348
+
349
+ ## 15. Empty Expression Brackets
350
+
351
+ **Problem**: Literal {{}} in output
352
+
353
+ ❌ **Wrong**:
354
+ ```
355
+ {{}}
356
+ {{ }}
357
+ ```
358
+
359
+ ✅ **Correct**:
360
+ ```
361
+ {{$json.field}} // Include expression content
362
+ ```
363
+
364
+ **Why it fails**: Empty expression brackets have nothing to evaluate.
365
+
366
+ **How to identify**: Literal "{{ }}" text appears in output.
367
+
368
+ ---
369
+
370
+ ## Quick Reference Table
371
+
372
+ | Error | Symptom | Fix |
373
+ |-------|---------|-----|
374
+ | No {{ }} | Literal text | Add {{ }} |
375
+ | Webhook data | Undefined | Add `.body` |
376
+ | Space in field | Syntax error | Use `['field name']` |
377
+ | Space in node | Undefined | Use `["Node Name"]` |
378
+ | Wrong case | Undefined | Match exact case |
379
+ | Double {{ }} | Literal braces | Remove extra {{ }} |
380
+ | .0 array | Syntax error | Use [0] |
381
+ | {{ }} in Code | Literal string | Remove {{ }} |
382
+ | No quotes in $node | Syntax error | Add quotes |
383
+ | Wrong path | Undefined | Check data structure |
384
+ | = in text | Literal = | Remove = prefix |
385
+ | Dynamic path | Doesn't work | Use static path |
386
+ | Missing .json | Undefined | Add .json |
387
+ | Template literals | Literal text | Use {{ }} |
388
+ | Empty {{ }} | Literal braces | Add expression |
389
+
390
+ ---
391
+
392
+ ## Debugging Process
393
+
394
+ When expression doesn't work:
395
+
396
+ 1. **Check braces**: Is it wrapped in {{ }}?
397
+ 2. **Check data source**: Is it webhook data? Add `.body`
398
+ 3. **Check spaces**: Field or node name has spaces? Use brackets
399
+ 4. **Check case**: Does node name match exactly?
400
+ 5. **Check path**: Is the property path correct?
401
+ 6. **Use expression editor**: Preview shows actual result
402
+ 7. **Check context**: Is it a Code node? Remove {{ }}
403
+
404
+ ---
405
+
406
+ **Related**: See [EXAMPLES.md](EXAMPLES.md) for working examples of correct syntax.