@fluentcommerce/fluent-mcp-extn 0.7.0 → 0.7.2
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.
- package/README.md +176 -174
- package/dist/batch-tools.js +21 -21
- package/dist/cache-tools.js +5 -5
- package/dist/config.js +1 -1
- package/dist/entity-tools.js +16 -16
- package/dist/environment-tools.js +10 -10
- package/dist/event-tools.js +26 -26
- package/dist/fluent-client.js +20 -0
- package/dist/graphql-query-tools.js +15 -15
- package/dist/graphql-schema-tools.js +14 -14
- package/dist/metrics-tools.js +40 -40
- package/dist/profile-registry.js +2 -2
- package/dist/response-shaper.js +1 -1
- package/dist/settings-tools.js +9 -9
- package/dist/test-tools.js +4 -4
- package/dist/tools.js +153 -148
- package/dist/workflow-tools.js +34 -44
- package/docs/E2E_TESTING.md +59 -59
- package/docs/HANDOVER_GITHUB_COPILOT.md +9 -9
- package/docs/HANDOVER_GITHUB_REPO_MCP_CONFIG.example.json +12 -12
- package/docs/RUNBOOK.md +38 -38
- package/docs/TOOL_REFERENCE.md +296 -296
- package/package.json +1 -1
package/docs/TOOL_REFERENCE.md
CHANGED
|
@@ -31,7 +31,7 @@ Most tools include extra fields like `event`, `response`, `job`, or `status`.
|
|
|
31
31
|
|
|
32
32
|
`error.retryable` indicates whether a caller can safely retry the same request. Non-idempotent writes intentionally avoid automatic retry behavior.
|
|
33
33
|
|
|
34
|
-
## `
|
|
34
|
+
## `config_validate`
|
|
35
35
|
|
|
36
36
|
Validates configuration and auth readiness without calling Fluent APIs.
|
|
37
37
|
|
|
@@ -44,7 +44,7 @@ Example:
|
|
|
44
44
|
{}
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
## `
|
|
47
|
+
## `health_ping`
|
|
48
48
|
|
|
49
49
|
Returns server health, SDK availability, and safe config summary.
|
|
50
50
|
|
|
@@ -57,7 +57,7 @@ Example:
|
|
|
57
57
|
{}
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
## `
|
|
60
|
+
## `event_build`
|
|
61
61
|
|
|
62
62
|
Builds a Fluent event payload only (no API call).
|
|
63
63
|
|
|
@@ -79,19 +79,19 @@ Example:
|
|
|
79
79
|
}
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
## `
|
|
82
|
+
## `event_send`
|
|
83
83
|
|
|
84
84
|
Builds and sends an event via SDK adapter. When `dryRun: true`, enriches the response with a `_workflowPreview` showing predicted outcomes from cached workflow analysis.
|
|
85
85
|
|
|
86
86
|
- **Required**: `name`, `entityRef`, `entityType`
|
|
87
|
-
- **Optional**: all `
|
|
87
|
+
- **Optional**: all `event_build` fields plus:
|
|
88
88
|
- `mode`: `async` or `sync`
|
|
89
89
|
- `dryRun`: boolean
|
|
90
90
|
- **Important**: `retailerId` must match the target entity's retailer for real sends.
|
|
91
91
|
|
|
92
92
|
### dryRun workflow preview
|
|
93
93
|
|
|
94
|
-
When `dryRun: true` and a workflow is cached (call `
|
|
94
|
+
When `dryRun: true` and a workflow is cached (call `workflow_get` first), the response includes `_workflowPreview`:
|
|
95
95
|
|
|
96
96
|
- `workflowName`: matched workflow name (e.g. `ORDER::HD`)
|
|
97
97
|
- `matchingRulesets`: array of rulesets triggered by this event at the current status
|
|
@@ -125,7 +125,7 @@ Example send:
|
|
|
125
125
|
}
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
## `
|
|
128
|
+
## `event_get`
|
|
129
129
|
|
|
130
130
|
Gets one event by ID via SDK-native `getEventById(eventId)`:
|
|
131
131
|
|
|
@@ -155,7 +155,7 @@ Typical success shape (truncated):
|
|
|
155
155
|
}
|
|
156
156
|
```
|
|
157
157
|
|
|
158
|
-
## `
|
|
158
|
+
## `event_list`
|
|
159
159
|
|
|
160
160
|
Lists/filter events via SDK-native `getEvents(params)`:
|
|
161
161
|
|
|
@@ -207,11 +207,11 @@ Typical success shape (truncated):
|
|
|
207
207
|
}
|
|
208
208
|
```
|
|
209
209
|
|
|
210
|
-
If `
|
|
210
|
+
If `event_send` does not return an `id`, use `event_list` with `name`,
|
|
211
211
|
`entityRef`, and `retailerId` to resolve the latest event ID, then call
|
|
212
|
-
`
|
|
212
|
+
`event_get`.
|
|
213
213
|
|
|
214
|
-
## `
|
|
214
|
+
## `event_flowInspect`
|
|
215
215
|
|
|
216
216
|
One-call runtime forensics for any root entity.
|
|
217
217
|
|
|
@@ -225,8 +225,8 @@ One-call runtime forensics for any root entity.
|
|
|
225
225
|
- `includeEventDetails`: include compact orchestration event rows (default `true`, full mode only)
|
|
226
226
|
- `includeAuditDetails`: include compact audit action samples (default `false`, full mode only)
|
|
227
227
|
- `includeScheduled`: fetch SCHEDULED events separately (default `true`)
|
|
228
|
-
- `inspectStatuses`: statuses to drill via `
|
|
229
|
-
- `maxDrilldowns`: cap on individual
|
|
228
|
+
- `inspectStatuses`: statuses to drill via `event_get` (defaults: `["NO_MATCH", "PENDING", "FAILED"]`)
|
|
229
|
+
- `maxDrilldowns`: cap on individual event_get calls (`0..100`, default `50`)
|
|
230
230
|
- `actionSampleLimit`: max rows for action-derived sections (`1..200`, default `100`)
|
|
231
231
|
- **Default-on flags:**
|
|
232
232
|
- `compact`: pre-analyzed summary response (default `true`)
|
|
@@ -265,7 +265,7 @@ Returns complete raw arrays:
|
|
|
265
265
|
- Custom plugin logs (when `includeCustomLogs: true`)
|
|
266
266
|
- Entity snapshots (when `includeSnapshots: true`)
|
|
267
267
|
- Cross-entity events with full events array (when `includeCrossEntity: true`)
|
|
268
|
-
- `NO_MATCH`/`PENDING`/`FAILED` drilldown with full event payload via `
|
|
268
|
+
- `NO_MATCH`/`PENDING`/`FAILED` drilldown with full event payload via `event_get`
|
|
269
269
|
- Auto-recommendations based on findings
|
|
270
270
|
|
|
271
271
|
Example (compact — recommended first call):
|
|
@@ -304,7 +304,7 @@ Example (lightweight):
|
|
|
304
304
|
}
|
|
305
305
|
```
|
|
306
306
|
|
|
307
|
-
## `
|
|
307
|
+
## `metrics_query`
|
|
308
308
|
|
|
309
309
|
Queries Prometheus metrics for Fluent runtime telemetry.
|
|
310
310
|
|
|
@@ -317,25 +317,25 @@ Queries Prometheus metrics for Fluent runtime telemetry.
|
|
|
317
317
|
- **Execution path**:
|
|
318
318
|
- instant -> GraphQL `metricInstant(query, time?)`
|
|
319
319
|
- range -> GraphQL `metricRange(query, start, end, step)`
|
|
320
|
-
- **Note**: `
|
|
320
|
+
- **Note**: `metrics_query` routes PromQL through Fluent's GraphQL proxy. Raw Prometheus REST endpoints are not relied on directly by this tool.
|
|
321
321
|
|
|
322
322
|
Label hygiene reminder:
|
|
323
323
|
- `core_event_received_total` does **not** include `status`
|
|
324
324
|
- `rubix_event_runtime_seconds_*` does include `status`
|
|
325
325
|
- histogram bucket series add `le`
|
|
326
326
|
|
|
327
|
-
Safer fixed-window counter total pattern:
|
|
328
|
-
|
|
329
|
-
```promql
|
|
330
|
-
(
|
|
331
|
-
last_over_time(metric[window])
|
|
332
|
-
-
|
|
333
|
-
last_over_time(metric[5m] offset <period>)
|
|
334
|
-
)
|
|
335
|
-
or last_over_time(metric[window])
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
Use the fallback `or` arm when the series did not exist at the offset point. Pair this with `resets(metric[window])` to decide whether the delta is trustworthy.
|
|
327
|
+
Safer fixed-window counter total pattern:
|
|
328
|
+
|
|
329
|
+
```promql
|
|
330
|
+
(
|
|
331
|
+
last_over_time(metric[window])
|
|
332
|
+
-
|
|
333
|
+
last_over_time(metric[5m] offset <period>)
|
|
334
|
+
)
|
|
335
|
+
or last_over_time(metric[window])
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
Use the fallback `or` arm when the series did not exist at the offset point. Pair this with `resets(metric[window])` to decide whether the delta is trustworthy.
|
|
339
339
|
|
|
340
340
|
Instant example:
|
|
341
341
|
|
|
@@ -358,7 +358,7 @@ Range example:
|
|
|
358
358
|
}
|
|
359
359
|
```
|
|
360
360
|
|
|
361
|
-
## `
|
|
361
|
+
## `metrics_topEvents`
|
|
362
362
|
|
|
363
363
|
Returns ranked event analytics for a time window by aggregating Event API results.
|
|
364
364
|
|
|
@@ -385,20 +385,20 @@ Example:
|
|
|
385
385
|
}
|
|
386
386
|
```
|
|
387
387
|
|
|
388
|
-
## `
|
|
388
|
+
## `metrics_healthCheck`
|
|
389
389
|
|
|
390
390
|
Runs a compact, one-call anomaly assessment.
|
|
391
391
|
|
|
392
392
|
- **Optional**:
|
|
393
393
|
- `window`: Prometheus/Event API analysis window (`1h`, `6h`, `24h`, `7d`; default `1h`)
|
|
394
|
-
- `includeTopEvents`: include ranked
|
|
394
|
+
- `includeTopEvents`: include ranked event_list in response (default `true`)
|
|
395
395
|
- `topN`: max top event rows (`1..100`, default `10`)
|
|
396
396
|
- `thresholds`: override defaults
|
|
397
397
|
- `failureRate` (default `5`)
|
|
398
398
|
- `pendingRate` (default `10`)
|
|
399
399
|
- `dominanceRate` (default `50`)
|
|
400
400
|
- **Behavior**:
|
|
401
|
-
- Prometheus-first (`
|
|
401
|
+
- Prometheus-first (`metrics_query` equivalent calls under the hood)
|
|
402
402
|
- Falls back to Event API aggregation if Prometheus is unavailable
|
|
403
403
|
|
|
404
404
|
Example:
|
|
@@ -411,7 +411,7 @@ Example:
|
|
|
411
411
|
}
|
|
412
412
|
```
|
|
413
413
|
|
|
414
|
-
## `
|
|
414
|
+
## `metrics_sloReport`
|
|
415
415
|
|
|
416
416
|
Returns a managed-services SLO snapshot with explicit KPI fields and threshold findings.
|
|
417
417
|
|
|
@@ -442,7 +442,7 @@ Example:
|
|
|
442
442
|
}
|
|
443
443
|
```
|
|
444
444
|
|
|
445
|
-
## `
|
|
445
|
+
## `metrics_labelCatalog`
|
|
446
446
|
|
|
447
447
|
Discovers what labels a metric supports so PromQL groupings are correct.
|
|
448
448
|
|
|
@@ -467,7 +467,7 @@ Example:
|
|
|
467
467
|
}
|
|
468
468
|
```
|
|
469
469
|
|
|
470
|
-
## `
|
|
470
|
+
## `metrics_metricCatalog`
|
|
471
471
|
|
|
472
472
|
Lists all documented Fluent platform metric families with labels, variants, example PromQL, and queryability flags. Optional live probing discovers active metrics and samples label values from the environment.
|
|
473
473
|
|
|
@@ -479,11 +479,11 @@ Lists all documented Fluent platform metric families with labels, variants, exam
|
|
|
479
479
|
- `includeLiveLabels`: sample live label values for the selected metric (default `false`)
|
|
480
480
|
- `maxMetrics`: max live metrics to return (default `100`)
|
|
481
481
|
- `maxValuesPerLabel`: max sample values per label (default `10`)
|
|
482
|
-
- **Behavior**:
|
|
483
|
-
- Without `metric`: returns all 10 documented families (Rubix OTel, GraphQL OTel, GraphQL Micrometer, billing/read-only usage, freshness gauge)
|
|
484
|
-
- With `metric`: deep dive into one family with labels, variants, notes, examples
|
|
485
|
-
- `includeLiveMetrics=true`: runs `count by (__name__)({__name__=~".+"})` to discover active metrics
|
|
486
|
-
- `includeLiveLabels=true`: samples label values via `last_over_time` on histogram _count + _bucket variants
|
|
482
|
+
- **Behavior**:
|
|
483
|
+
- Without `metric`: returns all 10 documented families (Rubix OTel, GraphQL OTel, GraphQL Micrometer, billing/read-only usage, freshness gauge)
|
|
484
|
+
- With `metric`: deep dive into one family with labels, variants, notes, examples
|
|
485
|
+
- `includeLiveMetrics=true`: runs `count by (__name__)({__name__=~".+"})` to discover active metrics
|
|
486
|
+
- `includeLiveLabels=true`: samples label values via `last_over_time` on histogram _count + _bucket variants
|
|
487
487
|
|
|
488
488
|
Example:
|
|
489
489
|
|
|
@@ -495,132 +495,132 @@ Example:
|
|
|
495
495
|
}
|
|
496
496
|
```
|
|
497
497
|
|
|
498
|
-
## `
|
|
498
|
+
## `metrics_planQuery`
|
|
499
499
|
|
|
500
|
-
Generates ready-to-run PromQL for any documented metric family. Validates labels, picks the right histogram variant, and returns a
|
|
500
|
+
Generates ready-to-run PromQL for any documented metric family. Validates labels, picks the right histogram variant, and returns a metrics_query-ready payload plus count-audit helpers when the query is count-like.
|
|
501
501
|
|
|
502
502
|
- **Required**: `metric`
|
|
503
|
-
- **Optional**:
|
|
504
|
-
- `goal`: `rate` (default), `increase`, `delta` (exact integer count via last_over_time-offset), `breakdown`, `topk`, `p95`, `avg`, `recency` (gauge freshness via max last_over_time), `raw`
|
|
505
|
-
- `window`: PromQL range window (default `5m`). Supports compound durations like `1h30m`
|
|
503
|
+
- **Optional**:
|
|
504
|
+
- `goal`: `rate` (default), `increase`, `delta` (exact integer count via last_over_time-offset), `breakdown`, `topk`, `p95`, `avg`, `recency` (gauge freshness via max last_over_time), `raw`
|
|
505
|
+
- `window`: PromQL range window (default `5m`). Supports compound durations like `1h30m`
|
|
506
506
|
- `groupBy`: labels to group by
|
|
507
507
|
- `filters`: label matchers (string for exact, array for regex OR)
|
|
508
508
|
- `validateLabels`: reject unsupported labels (default `true`)
|
|
509
509
|
- `topN`: for `topk` goal (default `10`)
|
|
510
510
|
- `percentile`: for `p95` goal (default `0.95`)
|
|
511
|
-
- **Behavior**:
|
|
512
|
-
- Resolves metric family → picks correct variant (_bucket for p95, _count for rate/increase/delta, _sum/_count for avg, gauge for recency)
|
|
513
|
-
- Validates groupBy/filter labels against known schema
|
|
514
|
-
- Reuses the shared duration parser so `
|
|
515
|
-
- Returns `rangeQueryHint` with `recommendedStep`, `estimatedPoints`, and a ready-to-run `
|
|
516
|
-
- For `goal=delta` and `goal=increase`, returns `countAudit` with:
|
|
517
|
-
- `resetAuditQuery`
|
|
518
|
-
- `comparisonQuery`
|
|
519
|
-
- `recommendedMethod`
|
|
520
|
-
- Returns `executeWith: { tool: "
|
|
521
|
-
|
|
522
|
-
### Practical goal mapping
|
|
523
|
-
|
|
524
|
-
- `rate`: throughput per second
|
|
525
|
-
- `increase`: extrapolated total over a window
|
|
526
|
-
- `delta`: fixed-window endpoint delta, best for near-integer counts when `resets(...) == 0`
|
|
527
|
-
- `breakdown`: grouped totals/rates by safe labels
|
|
528
|
-
- `topk`: ranked grouped results
|
|
529
|
-
- `p95`: latency percentile from histogram buckets
|
|
530
|
-
- `avg`: mean latency from `_sum / _count`
|
|
531
|
-
- `recency`: last-seen timestamp for gauge freshness metrics
|
|
532
|
-
- `raw`: raw selector, mostly for debugging
|
|
511
|
+
- **Behavior**:
|
|
512
|
+
- Resolves metric family → picks correct variant (_bucket for p95, _count for rate/increase/delta, _sum/_count for avg, gauge for recency)
|
|
513
|
+
- Validates groupBy/filter labels against known schema
|
|
514
|
+
- Reuses the shared duration parser so `metrics_planQuery`, `metrics_compare`, and `metrics_mutationAudit` interpret windows the same way
|
|
515
|
+
- Returns `rangeQueryHint` with `recommendedStep`, `estimatedPoints`, and a ready-to-run `metrics_query` range payload, snapped upward to stay within the LLM-safe point budget
|
|
516
|
+
- For `goal=delta` and `goal=increase`, returns `countAudit` with:
|
|
517
|
+
- `resetAuditQuery`
|
|
518
|
+
- `comparisonQuery`
|
|
519
|
+
- `recommendedMethod`
|
|
520
|
+
- Returns `executeWith: { tool: "metrics_query", arguments: { query, type } }` for direct handoff
|
|
521
|
+
|
|
522
|
+
### Practical goal mapping
|
|
523
|
+
|
|
524
|
+
- `rate`: throughput per second
|
|
525
|
+
- `increase`: extrapolated total over a window
|
|
526
|
+
- `delta`: fixed-window endpoint delta, best for near-integer counts when `resets(...) == 0`
|
|
527
|
+
- `breakdown`: grouped totals/rates by safe labels
|
|
528
|
+
- `topk`: ranked grouped results
|
|
529
|
+
- `p95`: latency percentile from histogram buckets
|
|
530
|
+
- `avg`: mean latency from `_sum / _count`
|
|
531
|
+
- `recency`: last-seen timestamp for gauge freshness metrics
|
|
532
|
+
- `raw`: raw selector, mostly for debugging
|
|
533
|
+
|
|
534
|
+
Example:
|
|
535
|
+
|
|
536
|
+
```json
|
|
537
|
+
{
|
|
538
|
+
"metric": "rubix_event_runtime_seconds",
|
|
539
|
+
"goal": "p95",
|
|
540
|
+
"groupBy": ["entity_type"],
|
|
541
|
+
"filters": { "account_id": "ACME" },
|
|
542
|
+
"window": "5m"
|
|
543
|
+
}
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
## `time_resolveWindow`
|
|
547
|
+
|
|
548
|
+
Resolves natural-language, shorthand, and datemath time phrases into exact ISO `from` / `to` timestamps so the LLM does not silently guess calendar intent.
|
|
549
|
+
|
|
550
|
+
- **Required**:
|
|
551
|
+
- `phrase`: natural-language, shorthand, or datemath phrase such as `last month`, `yesterday`, `last 7 days`, `7d`, `1h30m`, `now-7d/d`, or `now-7d to now`
|
|
552
|
+
- **Optional**:
|
|
553
|
+
- `timezone`: IANA timezone such as `UTC`, `Asia/Calcutta`, `Australia/Sydney` (defaults to runtime timezone)
|
|
554
|
+
- `anchor`: ISO-8601 anchor timestamp to resolve against (defaults to `now`)
|
|
555
|
+
- `mode`: `detect` (default), `calendar`, or `rolling`
|
|
556
|
+
- `weekStartsOn`: `monday` (default) or `sunday`
|
|
557
|
+
|
|
558
|
+
Behavior:
|
|
559
|
+
- unambiguous phrases resolve directly (`last 7 days`, `7d`, `previous calendar month`)
|
|
560
|
+
- compound shorthand resolves directly (`1h30m`, `2w3d`)
|
|
561
|
+
- datemath resolves directly (`now-7d`, `now/d`, `now-7d/d`, `now-7d to now`)
|
|
562
|
+
- ambiguous phrases return `valid: false`, `candidates`, and `clarificationQuestion` when `mode: "detect"`
|
|
563
|
+
- forcing `mode: "calendar"` or `mode: "rolling"` resolves the phrase without asking
|
|
564
|
+
|
|
565
|
+
Use this tool before `graphql_query`, `graphql_queryAll`, or `event_list` when the user asks for relative windows like `last month` and the underlying tool needs explicit timestamps.
|
|
566
|
+
|
|
567
|
+
Example:
|
|
568
|
+
|
|
569
|
+
```json
|
|
570
|
+
{
|
|
571
|
+
"phrase": "last month",
|
|
572
|
+
"timezone": "Asia/Calcutta"
|
|
573
|
+
}
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
Datemath example:
|
|
577
|
+
|
|
578
|
+
```json
|
|
579
|
+
{
|
|
580
|
+
"phrase": "now-7d/d",
|
|
581
|
+
"timezone": "Asia/Calcutta"
|
|
582
|
+
}
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
## `metrics_mutationAudit`
|
|
586
|
+
|
|
587
|
+
Audits GraphQL create/update mutation traffic by business domain and subdomain. This tool discovers mutation names locally, then queries each operation explicitly over the requested window so the model does not need to handcraft per-operation PromQL.
|
|
588
|
+
|
|
589
|
+
- **Optional**:
|
|
590
|
+
- `window`: fixed window for counts (default `7d`)
|
|
591
|
+
- `domain`: optional domain filter such as `inventory`, `order`, `fulfilment`, `catalog`
|
|
592
|
+
- `subdomain`: optional subdomain filter such as `position`, `quantity`, `virtual-catalogue`, `virtual-position`, `consignment`
|
|
593
|
+
- `operationTypes`: subset of `create`, `update` (default both)
|
|
594
|
+
- `statuses`: GraphQL request outcome labels to include (default `["success"]`)
|
|
595
|
+
- `operations`: explicit mutation names to audit instead of schema discovery
|
|
596
|
+
- `includeZeroCount`: include zero-count operations (default `false`)
|
|
597
|
+
- `comparePrevious`: also count the immediately preceding window and return deltas (default `true`)
|
|
598
|
+
- `includeQueries`: include the generated PromQL per operation (default `false`)
|
|
599
|
+
- `maxOperations`: safety cap for how many operations to evaluate (default `100`)
|
|
600
|
+
- `forceIntrospection`: refresh schema mutation discovery instead of using cache
|
|
601
|
+
- **Behavior**:
|
|
602
|
+
- Discovers `create*` / `update*` mutations from schema when `operations` is omitted
|
|
603
|
+
- Classifies operations into domain/subdomain using the built-in taxonomy
|
|
604
|
+
- Uses fixed-window delta counting on `graphql_request_runtime_seconds_count`
|
|
605
|
+
- Returns grouped summaries by domain, subdomain, and action, plus per-operation rows
|
|
606
|
+
- Includes `countAudit` with `resets()` and `increase()` comparison queries so you can sanity-check the totals
|
|
607
|
+
- **Caveat**:
|
|
608
|
+
- This measures GraphQL mutation request traffic, not guaranteed business-truth entity changes
|
|
609
|
+
- If the tenant does not expose a usable `operation` label on GraphQL metrics, the tool returns `valid=false` instead of pretending the split is trustworthy
|
|
533
610
|
|
|
534
611
|
Example:
|
|
535
612
|
|
|
536
613
|
```json
|
|
537
|
-
{
|
|
538
|
-
"
|
|
539
|
-
"
|
|
540
|
-
"
|
|
541
|
-
"
|
|
542
|
-
"
|
|
543
|
-
}
|
|
544
|
-
```
|
|
545
|
-
|
|
546
|
-
## `
|
|
547
|
-
|
|
548
|
-
Resolves natural-language, shorthand, and datemath time phrases into exact ISO `from` / `to` timestamps so the LLM does not silently guess calendar intent.
|
|
549
|
-
|
|
550
|
-
- **Required**:
|
|
551
|
-
- `phrase`: natural-language, shorthand, or datemath phrase such as `last month`, `yesterday`, `last 7 days`, `7d`, `1h30m`, `now-7d/d`, or `now-7d to now`
|
|
552
|
-
- **Optional**:
|
|
553
|
-
- `timezone`: IANA timezone such as `UTC`, `Asia/Calcutta`, `Australia/Sydney` (defaults to runtime timezone)
|
|
554
|
-
- `anchor`: ISO-8601 anchor timestamp to resolve against (defaults to `now`)
|
|
555
|
-
- `mode`: `detect` (default), `calendar`, or `rolling`
|
|
556
|
-
- `weekStartsOn`: `monday` (default) or `sunday`
|
|
557
|
-
|
|
558
|
-
Behavior:
|
|
559
|
-
- unambiguous phrases resolve directly (`last 7 days`, `7d`, `previous calendar month`)
|
|
560
|
-
- compound shorthand resolves directly (`1h30m`, `2w3d`)
|
|
561
|
-
- datemath resolves directly (`now-7d`, `now/d`, `now-7d/d`, `now-7d to now`)
|
|
562
|
-
- ambiguous phrases return `valid: false`, `candidates`, and `clarificationQuestion` when `mode: "detect"`
|
|
563
|
-
- forcing `mode: "calendar"` or `mode: "rolling"` resolves the phrase without asking
|
|
564
|
-
|
|
565
|
-
Use this tool before `graphql.query`, `graphql.queryAll`, or `event.list` when the user asks for relative windows like `last month` and the underlying tool needs explicit timestamps.
|
|
566
|
-
|
|
567
|
-
Example:
|
|
568
|
-
|
|
569
|
-
```json
|
|
570
|
-
{
|
|
571
|
-
"phrase": "last month",
|
|
572
|
-
"timezone": "Asia/Calcutta"
|
|
573
|
-
}
|
|
574
|
-
```
|
|
575
|
-
|
|
576
|
-
Datemath example:
|
|
577
|
-
|
|
578
|
-
```json
|
|
579
|
-
{
|
|
580
|
-
"phrase": "now-7d/d",
|
|
581
|
-
"timezone": "Asia/Calcutta"
|
|
582
|
-
}
|
|
583
|
-
```
|
|
584
|
-
|
|
585
|
-
## `metrics.mutationAudit`
|
|
586
|
-
|
|
587
|
-
Audits GraphQL create/update mutation traffic by business domain and subdomain. This tool discovers mutation names locally, then queries each operation explicitly over the requested window so the model does not need to handcraft per-operation PromQL.
|
|
588
|
-
|
|
589
|
-
- **Optional**:
|
|
590
|
-
- `window`: fixed window for counts (default `7d`)
|
|
591
|
-
- `domain`: optional domain filter such as `inventory`, `order`, `fulfilment`, `catalog`
|
|
592
|
-
- `subdomain`: optional subdomain filter such as `position`, `quantity`, `virtual-catalogue`, `virtual-position`, `consignment`
|
|
593
|
-
- `operationTypes`: subset of `create`, `update` (default both)
|
|
594
|
-
- `statuses`: GraphQL request outcome labels to include (default `["success"]`)
|
|
595
|
-
- `operations`: explicit mutation names to audit instead of schema discovery
|
|
596
|
-
- `includeZeroCount`: include zero-count operations (default `false`)
|
|
597
|
-
- `comparePrevious`: also count the immediately preceding window and return deltas (default `true`)
|
|
598
|
-
- `includeQueries`: include the generated PromQL per operation (default `false`)
|
|
599
|
-
- `maxOperations`: safety cap for how many operations to evaluate (default `100`)
|
|
600
|
-
- `forceIntrospection`: refresh schema mutation discovery instead of using cache
|
|
601
|
-
- **Behavior**:
|
|
602
|
-
- Discovers `create*` / `update*` mutations from schema when `operations` is omitted
|
|
603
|
-
- Classifies operations into domain/subdomain using the built-in taxonomy
|
|
604
|
-
- Uses fixed-window delta counting on `graphql_request_runtime_seconds_count`
|
|
605
|
-
- Returns grouped summaries by domain, subdomain, and action, plus per-operation rows
|
|
606
|
-
- Includes `countAudit` with `resets()` and `increase()` comparison queries so you can sanity-check the totals
|
|
607
|
-
- **Caveat**:
|
|
608
|
-
- This measures GraphQL mutation request traffic, not guaranteed business-truth entity changes
|
|
609
|
-
- If the tenant does not expose a usable `operation` label on GraphQL metrics, the tool returns `valid=false` instead of pretending the split is trustworthy
|
|
610
|
-
|
|
611
|
-
Example:
|
|
612
|
-
|
|
613
|
-
```json
|
|
614
|
-
{
|
|
615
|
-
"domain": "inventory",
|
|
616
|
-
"window": "7d",
|
|
617
|
-
"operationTypes": ["create", "update"],
|
|
618
|
-
"statuses": ["success"],
|
|
619
|
-
"comparePrevious": true
|
|
620
|
-
}
|
|
621
|
-
```
|
|
622
|
-
|
|
623
|
-
## `workflow.transitions`
|
|
614
|
+
{
|
|
615
|
+
"domain": "inventory",
|
|
616
|
+
"window": "7d",
|
|
617
|
+
"operationTypes": ["create", "update"],
|
|
618
|
+
"statuses": ["success"],
|
|
619
|
+
"comparePrevious": true
|
|
620
|
+
}
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
## `workflow_transitions`
|
|
624
624
|
|
|
625
625
|
Query available user actions (transitions) for entities at a given workflow state, enriched with workflow-aware predictions.
|
|
626
626
|
|
|
@@ -630,7 +630,7 @@ Calls `POST /api/v4.1/transition` to discover what events can be fired, what att
|
|
|
630
630
|
- **Optional per trigger**: `type`, `subtype`, `status`, `module`, `flexType`, `flexVersion`, `name`
|
|
631
631
|
- **Retailer behavior**: `retailerId` is required per trigger. Falls back to `FLUENT_RETAILER_ID` when omitted.
|
|
632
632
|
- **flexType auto-derive**: When `flexType` is not provided but `type` and `subtype` are, the tool auto-derives `flexType` as `{type}::{subtype}` (e.g., `CREDIT_MEMO::APPEASEMENT`). This avoids the silent empty-response problem where the Transition API returns `{"response":[]}` when `flexType` is missing.
|
|
633
|
-
- **Auto-fetch workflow**: When no cached workflow exists, automatically fetches it via `
|
|
633
|
+
- **Auto-fetch workflow**: When no cached workflow exists, automatically fetches it via `workflow_get` (deriving entityType/entitySubtype from trigger type+subtype or flexType) and caches it for future calls.
|
|
634
634
|
|
|
635
635
|
### Use cases
|
|
636
636
|
|
|
@@ -646,13 +646,13 @@ Calls `POST /api/v4.1/transition` to discover what events can be fired, what att
|
|
|
646
646
|
- `classification`: `"progression"` (advances workflow), `"terminal"` (reaches end state), or `"unknown"` (no workflow match)
|
|
647
647
|
- `targetStatus`: the predicted status the entity will reach after this action
|
|
648
648
|
- `nextSteps`: array of event names available from the predicted `targetStatus` (multi-step lookahead)
|
|
649
|
-
- **`_attributeTemplate`**: `{ eventName: { attrName: "<required>" | "<optional>" } }` — ready-to-fill templates for `
|
|
649
|
+
- **`_attributeTemplate`**: `{ eventName: { attrName: "<required>" | "<optional>" } }` — ready-to-fill templates for `event_send`
|
|
650
650
|
- **`_recommended`**: `{ eventName, reason, confidence }` — the safest next action to take
|
|
651
651
|
- `confidence`: `"high"` (single progression action), `"medium"` (non-confirmation only), `"low"` (multiple choices)
|
|
652
652
|
|
|
653
|
-
### Integration with
|
|
653
|
+
### Integration with event_send
|
|
654
654
|
|
|
655
|
-
The `eventName` from each `userAction` maps directly to `
|
|
655
|
+
The `eventName` from each `userAction` maps directly to `event_send`'s `name` parameter. The `attributes[]` tell you what to include in `event_send`'s `attributes` parameter. The `_attributeTemplate` provides a pre-built skeleton.
|
|
656
656
|
|
|
657
657
|
### Example: ORDER at CREATED status
|
|
658
658
|
|
|
@@ -736,17 +736,17 @@ Typical success shape (truncated, showing enrichment):
|
|
|
736
736
|
### Dynamic test sequence pattern
|
|
737
737
|
|
|
738
738
|
```
|
|
739
|
-
1. Create entity via
|
|
740
|
-
2.
|
|
739
|
+
1. Create entity via graphql_query (mutation)
|
|
740
|
+
2. workflow_transitions → get available actions at current status
|
|
741
741
|
3. Use _recommended for safest next action, or iterate _predictions for multi-path testing
|
|
742
742
|
4. For each action:
|
|
743
|
-
a.
|
|
743
|
+
a. event_send with eventName and attributes from _attributeTemplate
|
|
744
744
|
b. Poll entity status until transition completes
|
|
745
|
-
c.
|
|
745
|
+
c. workflow_transitions → get next available actions (use nextSteps for lookahead)
|
|
746
746
|
5. Repeat until no more userActions (terminal state)
|
|
747
747
|
```
|
|
748
748
|
|
|
749
|
-
## `
|
|
749
|
+
## `plugin_list`
|
|
750
750
|
|
|
751
751
|
List all registered orchestration rules (standard + custom) with metadata.
|
|
752
752
|
|
|
@@ -806,7 +806,7 @@ Typical success shape (truncated):
|
|
|
806
806
|
}
|
|
807
807
|
```
|
|
808
808
|
|
|
809
|
-
## `
|
|
809
|
+
## `graphql_query`
|
|
810
810
|
|
|
811
811
|
Executes a Fluent Commerce GraphQL query or mutation through the SDK.
|
|
812
812
|
|
|
@@ -850,7 +850,7 @@ Pagination args: `first`/`after` (forward), `last`/`before` (backward).
|
|
|
850
850
|
|
|
851
851
|
### Synchronous Fulfilment Options (Live Checkout)
|
|
852
852
|
|
|
853
|
-
`
|
|
853
|
+
`graphql_query` supports synchronous fulfilment options orchestration calls,
|
|
854
854
|
commonly used by checkout journeys to get plans in the same response.
|
|
855
855
|
|
|
856
856
|
```json
|
|
@@ -892,7 +892,7 @@ All list queries return connections:
|
|
|
892
892
|
|
|
893
893
|
Common query roots: `orders`, `fulfilments`, `fulfilmentChoices`, `locations`, `inventoryPositions`, `products`, `categories`, `settings`, `waves`, `articles`.
|
|
894
894
|
|
|
895
|
-
## `
|
|
895
|
+
## `batch_create`
|
|
896
896
|
|
|
897
897
|
Creates a Fluent ingestion job.
|
|
898
898
|
|
|
@@ -910,9 +910,9 @@ Example:
|
|
|
910
910
|
}
|
|
911
911
|
```
|
|
912
912
|
|
|
913
|
-
## `
|
|
913
|
+
## `batch_describePayload`
|
|
914
914
|
|
|
915
|
-
Returns entity-type-specific payload guidance for `
|
|
915
|
+
Returns entity-type-specific payload guidance for `batch_send` without making an API call.
|
|
916
916
|
|
|
917
917
|
- **Required**: `entityType`
|
|
918
918
|
- **Optional**: `action` (default: `UPSERT`)
|
|
@@ -935,9 +935,9 @@ Returns:
|
|
|
935
935
|
}
|
|
936
936
|
```
|
|
937
937
|
|
|
938
|
-
Use this before `
|
|
938
|
+
Use this before `batch_send` when the model is unsure about row shape for entity types like `PRODUCT`, `INVENTORY_POSITION`, `LOCATION`, `CUSTOMER`, or `ORDER`.
|
|
939
939
|
|
|
940
|
-
## `
|
|
940
|
+
## `batch_send`
|
|
941
941
|
|
|
942
942
|
Sends payload records to an existing batch job.
|
|
943
943
|
|
|
@@ -968,7 +968,7 @@ Example:
|
|
|
968
968
|
}
|
|
969
969
|
```
|
|
970
970
|
|
|
971
|
-
## `
|
|
971
|
+
## `batch_status`
|
|
972
972
|
|
|
973
973
|
Reads status for a previously created batch job.
|
|
974
974
|
|
|
@@ -982,7 +982,7 @@ Example:
|
|
|
982
982
|
}
|
|
983
983
|
```
|
|
984
984
|
|
|
985
|
-
## `
|
|
985
|
+
## `batch_batchStatus`
|
|
986
986
|
|
|
987
987
|
Gets the status of a specific batch within a job. Useful for troubleshooting partial failures in multi-batch jobs.
|
|
988
988
|
|
|
@@ -997,9 +997,9 @@ Example:
|
|
|
997
997
|
}
|
|
998
998
|
```
|
|
999
999
|
|
|
1000
|
-
## `
|
|
1000
|
+
## `batch_results`
|
|
1001
1001
|
|
|
1002
|
-
Gets per-record outcomes for a completed job. Call after `
|
|
1002
|
+
Gets per-record outcomes for a completed job. Call after `batch_status` reports a terminal state.
|
|
1003
1003
|
|
|
1004
1004
|
- **Required**: `jobId`
|
|
1005
1005
|
|
|
@@ -1013,9 +1013,9 @@ Example:
|
|
|
1013
1013
|
|
|
1014
1014
|
---
|
|
1015
1015
|
|
|
1016
|
-
## `
|
|
1016
|
+
## `graphql_queryAll`
|
|
1017
1017
|
|
|
1018
|
-
Executes a GraphQL query with SDK auto-pagination. Automatically follows cursors, merges all edges, and deduplicates by node ID. Use instead of `
|
|
1018
|
+
Executes a GraphQL query with SDK auto-pagination. Automatically follows cursors, merges all edges, and deduplicates by node ID. Use instead of `graphql_query` when you need ALL records from a connection.
|
|
1019
1019
|
|
|
1020
1020
|
- **Required**: `query`
|
|
1021
1021
|
- **Optional**:
|
|
@@ -1072,7 +1072,7 @@ If truncated: `truncationReason` will be `"maxPages"`, `"maxRecords"`, or `"time
|
|
|
1072
1072
|
}
|
|
1073
1073
|
```
|
|
1074
1074
|
|
|
1075
|
-
## `
|
|
1075
|
+
## `graphql_batchMutate`
|
|
1076
1076
|
|
|
1077
1077
|
Executes multiple GraphQL mutations in a single request using aliased mutations. Sends up to 50 mutations at once, each with its own input.
|
|
1078
1078
|
|
|
@@ -1138,7 +1138,7 @@ On partial failure, `errors` array includes per-mutation error details with `ali
|
|
|
1138
1138
|
}
|
|
1139
1139
|
```
|
|
1140
1140
|
|
|
1141
|
-
## `
|
|
1141
|
+
## `graphql_introspect`
|
|
1142
1142
|
|
|
1143
1143
|
Inspects the Fluent Commerce GraphQL schema via introspection. Caches schema responses locally (24h disk cache by default when cache is enabled) and supports `force` refresh. Use to discover mutations, input types, and field requirements at runtime.
|
|
1144
1144
|
|
|
@@ -1224,9 +1224,9 @@ Response:
|
|
|
1224
1224
|
1. `{ "listMutations": true }` → find `updateOrder`
|
|
1225
1225
|
2. `{ "mutation": "updateOrder" }` → see it takes `UpdateOrderInput!`
|
|
1226
1226
|
3. `{ "type": "UpdateOrderInput" }` → see all updatable fields
|
|
1227
|
-
4. Use `
|
|
1227
|
+
4. Use `graphql_query` or `graphql_batchMutate` with the discovered schema
|
|
1228
1228
|
|
|
1229
|
-
## `
|
|
1229
|
+
## `graphql_listRoots`
|
|
1230
1230
|
|
|
1231
1231
|
List all query and mutation root fields from the live GraphQL schema. Use to discover what queries and mutations are available before building them.
|
|
1232
1232
|
|
|
@@ -1250,7 +1250,7 @@ Response:
|
|
|
1250
1250
|
}
|
|
1251
1251
|
```
|
|
1252
1252
|
|
|
1253
|
-
## `
|
|
1253
|
+
## `graphql_planOperation`
|
|
1254
1254
|
|
|
1255
1255
|
Plan a query or mutation before execution. This is the best tool when the model needs help building the right GraphQL payload shape.
|
|
1256
1256
|
|
|
@@ -1274,7 +1274,7 @@ Returns:
|
|
|
1274
1274
|
- `recommendedExecutionTool`
|
|
1275
1275
|
- `document`
|
|
1276
1276
|
|
|
1277
|
-
For query roots with nested connections or aggregate-style fields, the planner also includes connection/field guidance so the caller can decide when to use `
|
|
1277
|
+
For query roots with nested connections or aggregate-style fields, the planner also includes connection/field guidance so the caller can decide when to use `graphql_queryAll`, add `first`, or select leaf fields like `sum` / `count`.
|
|
1278
1278
|
|
|
1279
1279
|
### Example
|
|
1280
1280
|
|
|
@@ -1287,12 +1287,12 @@ For query roots with nested connections or aggregate-style fields, the planner a
|
|
|
1287
1287
|
|
|
1288
1288
|
Typical follow-on flow:
|
|
1289
1289
|
|
|
1290
|
-
1. Run `
|
|
1290
|
+
1. Run `graphql_planOperation`
|
|
1291
1291
|
2. Review `requiredInputPaths` and `variablesTemplate`
|
|
1292
1292
|
3. Adjust the scaffold if needed
|
|
1293
|
-
4. Execute with `
|
|
1293
|
+
4. Execute with `graphql_query` or `graphql_queryAll`
|
|
1294
1294
|
|
|
1295
|
-
## `
|
|
1295
|
+
## `graphql_buildQuery`
|
|
1296
1296
|
|
|
1297
1297
|
Generate a GraphQL query or mutation string from structured inputs. Validates the result against the live schema by default.
|
|
1298
1298
|
|
|
@@ -1333,7 +1333,7 @@ Response:
|
|
|
1333
1333
|
}
|
|
1334
1334
|
```
|
|
1335
1335
|
|
|
1336
|
-
## `
|
|
1336
|
+
## `graphql_validate`
|
|
1337
1337
|
|
|
1338
1338
|
Validate a GraphQL document string against the live schema. Returns "OK" if valid, or a list of validation errors.
|
|
1339
1339
|
|
|
@@ -1364,7 +1364,7 @@ Response (invalid):
|
|
|
1364
1364
|
}
|
|
1365
1365
|
```
|
|
1366
1366
|
|
|
1367
|
-
## `
|
|
1367
|
+
## `graphql_generateFull`
|
|
1368
1368
|
|
|
1369
1369
|
Generate a maximal-selection query for a root field, recursively including all scalar fields and nested object fields up to the specified depth.
|
|
1370
1370
|
|
|
@@ -1396,7 +1396,7 @@ Response:
|
|
|
1396
1396
|
}
|
|
1397
1397
|
```
|
|
1398
1398
|
|
|
1399
|
-
## `
|
|
1399
|
+
## `connection_test`
|
|
1400
1400
|
|
|
1401
1401
|
Comprehensive Fluent Commerce connectivity test. Authenticates, executes a `me` query, and returns the authenticated user's details.
|
|
1402
1402
|
|
|
@@ -1433,9 +1433,9 @@ Comprehensive Fluent Commerce connectivity test. Authenticates, executes a `me`
|
|
|
1433
1433
|
}
|
|
1434
1434
|
```
|
|
1435
1435
|
|
|
1436
|
-
More thorough than `
|
|
1436
|
+
More thorough than `health_ping` — actually verifies the GraphQL endpoint works end-to-end. Use when first connecting, debugging auth issues, or verifying retailer/location context.
|
|
1437
1437
|
|
|
1438
|
-
## `
|
|
1438
|
+
## `webhook_validate`
|
|
1439
1439
|
|
|
1440
1440
|
Validates a Fluent Commerce webhook payload and optionally verifies its signature.
|
|
1441
1441
|
|
|
@@ -1507,7 +1507,7 @@ Response:
|
|
|
1507
1507
|
|
|
1508
1508
|
---
|
|
1509
1509
|
|
|
1510
|
-
## `
|
|
1510
|
+
## `entity_planCreate`
|
|
1511
1511
|
|
|
1512
1512
|
Plan an entity creation locally without making an API call.
|
|
1513
1513
|
|
|
@@ -1527,7 +1527,7 @@ Returns:
|
|
|
1527
1527
|
- `_meta.availableEdges`
|
|
1528
1528
|
- `_hints`
|
|
1529
1529
|
|
|
1530
|
-
Use this when the model knows it wants `
|
|
1530
|
+
Use this when the model knows it wants `entity_create` but needs help with required fields, retailer auto-injection, or the mutation shape first.
|
|
1531
1531
|
|
|
1532
1532
|
### Example
|
|
1533
1533
|
|
|
@@ -1539,9 +1539,9 @@ Use this when the model knows it wants `entity.create` but needs help with requi
|
|
|
1539
1539
|
|
|
1540
1540
|
---
|
|
1541
1541
|
|
|
1542
|
-
## `
|
|
1542
|
+
## `entity_planUpdate`
|
|
1543
1543
|
|
|
1544
|
-
Plan an
|
|
1544
|
+
Plan an entity_update locally without making an API call.
|
|
1545
1545
|
|
|
1546
1546
|
- **Required**: `entityType`
|
|
1547
1547
|
|
|
@@ -1557,7 +1557,7 @@ Returns:
|
|
|
1557
1557
|
- `_meta.availableEdges`
|
|
1558
1558
|
- `_hints`
|
|
1559
1559
|
|
|
1560
|
-
Use this when the model needs to know which fields are likely safe to send to `
|
|
1560
|
+
Use this when the model needs to know which fields are likely safe to send to `entity_update`, or wants a starter payload before setting `status`, `attributes`, or related fields.
|
|
1561
1561
|
|
|
1562
1562
|
### Example
|
|
1563
1563
|
|
|
@@ -1569,7 +1569,7 @@ Use this when the model needs to know which fields are likely safe to send to `e
|
|
|
1569
1569
|
|
|
1570
1570
|
---
|
|
1571
1571
|
|
|
1572
|
-
## `
|
|
1572
|
+
## `entity_create`
|
|
1573
1573
|
|
|
1574
1574
|
Type-safe entity creation with built-in validation and gotcha knowledge.
|
|
1575
1575
|
|
|
@@ -1656,7 +1656,7 @@ Response:
|
|
|
1656
1656
|
|
|
1657
1657
|
---
|
|
1658
1658
|
|
|
1659
|
-
## `
|
|
1659
|
+
## `entity_update`
|
|
1660
1660
|
|
|
1661
1661
|
Status-aware entity updates with optional transition validation.
|
|
1662
1662
|
|
|
@@ -1666,12 +1666,12 @@ Status-aware entity updates with optional transition validation.
|
|
|
1666
1666
|
- `fields`: object of fields to update (matches GraphQL update input type)
|
|
1667
1667
|
- **Optional**:
|
|
1668
1668
|
- `returnFields`: array of field names to return
|
|
1669
|
-
- `validateTransition`: if `true` and `status` is being changed, queries `
|
|
1669
|
+
- `validateTransition`: if `true` and `status` is being changed, queries `workflow_transitions` to verify the transition is allowed before executing (default `false`)
|
|
1670
1670
|
|
|
1671
1671
|
**Key behaviors:**
|
|
1672
1672
|
|
|
1673
1673
|
- Auto-detects the correct GraphQL mutation name from entity type
|
|
1674
|
-
- When `validateTransition` is `true`: fetches current entity state, queries transition API, warns if no
|
|
1674
|
+
- When `validateTransition` is `true`: fetches current entity state, queries transition API, warns if no workflow_transitions exist from the current status
|
|
1675
1675
|
- Returns the previous status for audit trail when transition validation is used
|
|
1676
1676
|
- Uses no-retry semantics (write operation)
|
|
1677
1677
|
|
|
@@ -1705,13 +1705,13 @@ If no workflow transition exists:
|
|
|
1705
1705
|
"entityType": "ORDER",
|
|
1706
1706
|
"entity": { "id": "12345", "ref": "HD-001", "status": "COMPLETE" },
|
|
1707
1707
|
"mutation": "...",
|
|
1708
|
-
"transitionWarning": "No
|
|
1708
|
+
"transitionWarning": "No workflow_transitions available from status \"BOOKED\" for ORDER. The status update may succeed as a direct mutation but will not trigger workflow orchestration."
|
|
1709
1709
|
}
|
|
1710
1710
|
```
|
|
1711
1711
|
|
|
1712
1712
|
---
|
|
1713
1713
|
|
|
1714
|
-
## `
|
|
1714
|
+
## `entity_get`
|
|
1715
1715
|
|
|
1716
1716
|
Unified entity lookup by ID or ref with optional edge inclusion.
|
|
1717
1717
|
|
|
@@ -1764,7 +1764,7 @@ Response:
|
|
|
1764
1764
|
|
|
1765
1765
|
---
|
|
1766
1766
|
|
|
1767
|
-
## `
|
|
1767
|
+
## `workflow_get`
|
|
1768
1768
|
|
|
1769
1769
|
Fetch a specific workflow definition by entity type and subtype via REST API.
|
|
1770
1770
|
|
|
@@ -1796,7 +1796,7 @@ Uses `GET /api/v4.1/workflow/{retailerId}/{entityType}::{entitySubtype}/` — wo
|
|
|
1796
1796
|
|
|
1797
1797
|
---
|
|
1798
1798
|
|
|
1799
|
-
## `
|
|
1799
|
+
## `workflow_list`
|
|
1800
1800
|
|
|
1801
1801
|
List all workflows for a retailer via REST API.
|
|
1802
1802
|
|
|
@@ -1816,20 +1816,19 @@ Uses `GET /api/v4.1/workflow?retailerId={id}&count=200`. Response is deduplicate
|
|
|
1816
1816
|
}
|
|
1817
1817
|
```
|
|
1818
1818
|
|
|
1819
|
-
**Note:** Some accounts restrict this endpoint (401 "Incorrect retailer"). In that case, use `
|
|
1819
|
+
**Note:** Some accounts restrict this endpoint (401 "Incorrect retailer"). In that case, use `workflow_get` with a specific entityType + entitySubtype instead.
|
|
1820
1820
|
|
|
1821
1821
|
---
|
|
1822
1822
|
|
|
1823
|
-
## `
|
|
1823
|
+
## `workflow_upload`
|
|
1824
1824
|
|
|
1825
|
-
Deploy a workflow JSON
|
|
1825
|
+
Deploy a workflow JSON via the Fluent REST API (`PUT /api/v4.1/workflow/{retailerId}`) with preflight safety analysis.
|
|
1826
1826
|
|
|
1827
|
-
|
|
1827
|
+
Uses PUT for idempotent upsert — deploying the same JSON twice does not create duplicate versions (unlike POST which always creates a new version). Before deploying, performs semantic risk analysis and compares with the live workflow if it exists.
|
|
1828
1828
|
|
|
1829
1829
|
- **Required**:
|
|
1830
1830
|
- `workflow`: workflow JSON definition (as object or JSON string)
|
|
1831
1831
|
- **Optional**:
|
|
1832
|
-
- `retailerId`: target retailer ID (falls back to `FLUENT_RETAILER_ID`)
|
|
1833
1832
|
- `validate`: validate structure before uploading (default `true`)
|
|
1834
1833
|
- `dryRun`: validate only, do not deploy (default `false`)
|
|
1835
1834
|
|
|
@@ -1843,7 +1842,7 @@ Uploads via REST API `POST /api/v4.1/workflow/{retailerId}` — the same endpoin
|
|
|
1843
1842
|
|
|
1844
1843
|
- **No-match zone detection**: identifies statuses that are transition targets but have no rulesets triggered from them — events sent to these statuses will NO_MATCH
|
|
1845
1844
|
- **Webhook dependency extraction**: lists all setting keys referenced by webhook rules so you can verify they exist
|
|
1846
|
-
- **Live workflow comparison**: when updating an existing workflow, fetches the current version and runs `
|
|
1845
|
+
- **Live workflow comparison**: when updating an existing workflow, fetches the current version and runs `workflow_diff` to show ruleset/status changes and risk level
|
|
1847
1846
|
- **Cross-version risk analysis**: detects removed statuses that had active rulesets and removed rulesets
|
|
1848
1847
|
|
|
1849
1848
|
**Response fields (in addition to standard success fields):**
|
|
@@ -1857,8 +1856,9 @@ Uploads via REST API `POST /api/v4.1/workflow/{retailerId}` — the same endpoin
|
|
|
1857
1856
|
|
|
1858
1857
|
**Important:**
|
|
1859
1858
|
- Preflight analysis is **non-blocking** — failures to fetch the current workflow don't prevent upload (handles first deployments and permission issues gracefully)
|
|
1859
|
+
- Deploys via REST API PUT (full replace semantics) — the uploaded JSON completely replaces the workflow definition
|
|
1860
|
+
- Does NOT update the CLI workflowlog — `fluent workflow download` may show stale data. Fix: `fluent workflowlog delete` then redeploy via CLI
|
|
1860
1861
|
- For production deployments, prefer `fluent module install` via CLI which bundles workflows with settings, rules, and data in a versioned module
|
|
1861
|
-
- Use this tool for interactive editing, hotfixes, or when CLI is unavailable
|
|
1862
1862
|
|
|
1863
1863
|
**Example** — dry-run with risk analysis:
|
|
1864
1864
|
|
|
@@ -1917,7 +1917,7 @@ Response (dry run with no-match zone detected):
|
|
|
1917
1917
|
|
|
1918
1918
|
---
|
|
1919
1919
|
|
|
1920
|
-
## `
|
|
1920
|
+
## `workflow_diff`
|
|
1921
1921
|
|
|
1922
1922
|
Compare two workflow JSON definitions and identify changes.
|
|
1923
1923
|
|
|
@@ -1967,7 +1967,7 @@ Response:
|
|
|
1967
1967
|
|
|
1968
1968
|
---
|
|
1969
1969
|
|
|
1970
|
-
## `
|
|
1970
|
+
## `workflow_simulate`
|
|
1971
1971
|
|
|
1972
1972
|
Static prediction of workflow event outcomes from workflow JSON.
|
|
1973
1973
|
|
|
@@ -1994,7 +1994,7 @@ Pure local computation — no API calls. Parses workflow JSON to find matching r
|
|
|
1994
1994
|
- **STATIC ONLY** — cannot evaluate runtime conditions, entity attributes, or settings values
|
|
1995
1995
|
- **CUSTOM RULES OPAQUE** — Java plugin rules may conditionally execute; behavior unknown without live state
|
|
1996
1996
|
- **NO CROSS-ENTITY** — does not follow SendEvent chains into child entity workflows
|
|
1997
|
-
- Use `
|
|
1997
|
+
- Use `workflow_transitions` for **authoritative live validation** of available actions
|
|
1998
1998
|
|
|
1999
1999
|
**Example** — simulate from CREATED status:
|
|
2000
2000
|
|
|
@@ -2035,14 +2035,14 @@ Response:
|
|
|
2035
2035
|
"limitations": [
|
|
2036
2036
|
"STATIC PREDICTION ONLY — does not account for runtime conditions, entity attributes, or settings values.",
|
|
2037
2037
|
"1 custom rule(s) found whose behavior cannot be predicted statically: ForwardIfOrderCoordinatesPresent.",
|
|
2038
|
-
"Use
|
|
2038
|
+
"Use workflow_transitions for AUTHORITATIVE live validation of available actions."
|
|
2039
2039
|
]
|
|
2040
2040
|
}
|
|
2041
2041
|
```
|
|
2042
2042
|
|
|
2043
2043
|
---
|
|
2044
2044
|
|
|
2045
|
-
## `
|
|
2045
|
+
## `setting_get`
|
|
2046
2046
|
|
|
2047
2047
|
Fetch one or more Fluent Commerce settings by name (supports `%` wildcards).
|
|
2048
2048
|
|
|
@@ -2093,7 +2093,7 @@ Uses the GraphQL `settings(name:)` query. Returns metadata inline (name, context
|
|
|
2093
2093
|
|
|
2094
2094
|
---
|
|
2095
2095
|
|
|
2096
|
-
## `
|
|
2096
|
+
## `setting_upsert`
|
|
2097
2097
|
|
|
2098
2098
|
Create or update a Fluent Commerce setting with upsert semantics.
|
|
2099
2099
|
|
|
@@ -2158,7 +2158,7 @@ Response (updated existing):
|
|
|
2158
2158
|
|
|
2159
2159
|
---
|
|
2160
2160
|
|
|
2161
|
-
## `
|
|
2161
|
+
## `setting_bulkUpsert`
|
|
2162
2162
|
|
|
2163
2163
|
Batch create or update multiple settings in one call.
|
|
2164
2164
|
|
|
@@ -2198,7 +2198,7 @@ Response:
|
|
|
2198
2198
|
|
|
2199
2199
|
---
|
|
2200
2200
|
|
|
2201
|
-
## `
|
|
2201
|
+
## `environment_discover`
|
|
2202
2202
|
|
|
2203
2203
|
Full environment snapshot in one call.
|
|
2204
2204
|
|
|
@@ -2237,7 +2237,7 @@ Response:
|
|
|
2237
2237
|
|
|
2238
2238
|
---
|
|
2239
2239
|
|
|
2240
|
-
## `
|
|
2240
|
+
## `environment_validate`
|
|
2241
2241
|
|
|
2242
2242
|
Pre-flight environment validation. Runs configurable checks before E2E tests or deployments.
|
|
2243
2243
|
|
|
@@ -2284,7 +2284,7 @@ Response:
|
|
|
2284
2284
|
|
|
2285
2285
|
---
|
|
2286
2286
|
|
|
2287
|
-
## `
|
|
2287
|
+
## `test_assert`
|
|
2288
2288
|
|
|
2289
2289
|
Assert entity state matches expectations with optional polling.
|
|
2290
2290
|
|
|
@@ -2364,7 +2364,7 @@ Response (fail after timeout):
|
|
|
2364
2364
|
|
|
2365
2365
|
---
|
|
2366
2366
|
|
|
2367
|
-
## `
|
|
2367
|
+
## `cache_status`
|
|
2368
2368
|
|
|
2369
2369
|
Show local cache statistics. No API call.
|
|
2370
2370
|
|
|
@@ -2394,11 +2394,11 @@ Returns:
|
|
|
2394
2394
|
- `FLUENT_CACHE_TTL_PLUGIN` — plugin TTL in ms (default 1 hour)
|
|
2395
2395
|
|
|
2396
2396
|
**Cached tools:**
|
|
2397
|
-
- `
|
|
2398
|
-
- `
|
|
2399
|
-
- `
|
|
2400
|
-
- `
|
|
2401
|
-
- `
|
|
2397
|
+
- `graphql_introspect`
|
|
2398
|
+
- `plugin_list`
|
|
2399
|
+
- `workflow_get`
|
|
2400
|
+
- `workflow_list`
|
|
2401
|
+
- `setting_get`
|
|
2402
2402
|
|
|
2403
2403
|
Example:
|
|
2404
2404
|
|
|
@@ -2410,7 +2410,7 @@ Example:
|
|
|
2410
2410
|
|
|
2411
2411
|
---
|
|
2412
2412
|
|
|
2413
|
-
## `
|
|
2413
|
+
## `cache_clear`
|
|
2414
2414
|
|
|
2415
2415
|
Clear cached entries. No API call.
|
|
2416
2416
|
|
|
@@ -2418,10 +2418,10 @@ Clear cached entries. No API call.
|
|
|
2418
2418
|
- `pattern`: string — glob-style cache key filter. Omit to clear everything.
|
|
2419
2419
|
|
|
2420
2420
|
Common patterns:
|
|
2421
|
-
- `workflow:*` — clear workflow list
|
|
2421
|
+
- `workflow:get:*` or `workflow:list:*` — clear workflow get/list cache
|
|
2422
2422
|
- `setting:get:fc.mystique.*` — clear cached manifest/settings lookups
|
|
2423
2423
|
- `introspect:*` — clear GraphQL schema cache
|
|
2424
|
-
- `plugin:list
|
|
2424
|
+
- `plugin:list:*` — clear cached plugin metadata
|
|
2425
2425
|
|
|
2426
2426
|
Response includes:
|
|
2427
2427
|
- `cleared`: number of entries removed
|
|
@@ -2446,15 +2446,15 @@ Example:
|
|
|
2446
2446
|
|
|
2447
2447
|
| Category | Tools | Retry behavior |
|
|
2448
2448
|
|------|----------|-------------|
|
|
2449
|
-
| Read operations | `
|
|
2450
|
-
| Write operations | `
|
|
2451
|
-
| Local validation / no API | `
|
|
2449
|
+
| Read operations | `event_get`, `event_list`, `event_flowInspect`, `metrics_query`, `metrics_healthCheck`, `metrics_sloReport`, `metrics_labelCatalog`, `metrics_metricCatalog`, `metrics_planQuery`, `metrics_snapshot`, `metrics_compare`, `metrics_mutationAudit`, `metrics_topEvents`, `workflow_transitions`, `workflow_get`, `workflow_list`, `graphql_query` (query), `graphql_queryAll`, `batch_status`, `batch_batchStatus`, `batch_results`, `graphql_introspect`, `graphql_listRoots`, `graphql_validate`, `graphql_generateFull`, `connection_test`, `entity_get`, `setting_get`, `environment_discover`, `environment_validate`, `test_assert`, `plugin_list` | retry + backoff |
|
|
2450
|
+
| Write operations | `event_send`, `batch_create`, `batch_send`, `graphql_query` (mutation), `graphql_batchMutate`, `entity_create`, `entity_update`, `workflow_upload`, `setting_upsert`, `setting_bulkUpsert` | timeout-only (no automatic retry) |
|
|
2451
|
+
| Local validation / no API | `config_validate`, `health_ping`, `time_resolveWindow`, `event_build`, `webhook_validate`, `workflow_diff`, `workflow_simulate`, `graphql_buildQuery` (validate=false), `cache_status`, `cache_clear`, `connection_list`, `connection_add`, `connection_remove`, `connection_switch` | not applicable |
|
|
2452
2452
|
|
|
2453
2453
|
## Connection Management
|
|
2454
2454
|
|
|
2455
2455
|
These tools manage the multi-profile registry at runtime. They do not require a `profile` parameter themselves.
|
|
2456
2456
|
|
|
2457
|
-
### `
|
|
2457
|
+
### `connection_list`
|
|
2458
2458
|
|
|
2459
2459
|
List all registered profiles with auth strategy, init status, and default marker.
|
|
2460
2460
|
|
|
@@ -2498,7 +2498,7 @@ Response:
|
|
|
2498
2498
|
}
|
|
2499
2499
|
```
|
|
2500
2500
|
|
|
2501
|
-
### `
|
|
2501
|
+
### `connection_add`
|
|
2502
2502
|
|
|
2503
2503
|
Add a new profile at runtime. Supports CLI profile names or explicit credentials.
|
|
2504
2504
|
|
|
@@ -2519,7 +2519,7 @@ Each registered slot resolves auth independently, so one server session can mix:
|
|
|
2519
2519
|
- explicit OAuth
|
|
2520
2520
|
- explicit static bearer token
|
|
2521
2521
|
|
|
2522
|
-
`TOKEN_COMMAND` is not currently a `
|
|
2522
|
+
`TOKEN_COMMAND` is not currently a `connection_add` option; token-command auth is configured at server startup via environment variables.
|
|
2523
2523
|
|
|
2524
2524
|
Example — add by CLI profile:
|
|
2525
2525
|
|
|
@@ -2554,7 +2554,7 @@ Example — add with static bearer token:
|
|
|
2554
2554
|
}
|
|
2555
2555
|
```
|
|
2556
2556
|
|
|
2557
|
-
### `
|
|
2557
|
+
### `connection_remove`
|
|
2558
2558
|
|
|
2559
2559
|
Remove a non-default profile from the registry.
|
|
2560
2560
|
|
|
@@ -2569,7 +2569,7 @@ Example:
|
|
|
2569
2569
|
}
|
|
2570
2570
|
```
|
|
2571
2571
|
|
|
2572
|
-
### `
|
|
2572
|
+
### `connection_switch`
|
|
2573
2573
|
|
|
2574
2574
|
Change the default profile. Subsequent tool calls that omit `profile` will use this profile.
|
|
2575
2575
|
|
|
@@ -2589,63 +2589,63 @@ Example:
|
|
|
2589
2589
|
|
|
2590
2590
|
| Tool | Category | Requires SDK | Retry | Description |
|
|
2591
2591
|
|------|----------|:------------:|:-----:|-------------|
|
|
2592
|
-
| `
|
|
2593
|
-
| `
|
|
2594
|
-
| `
|
|
2595
|
-
| `
|
|
2596
|
-
| `
|
|
2597
|
-
| `
|
|
2598
|
-
| `
|
|
2599
|
-
| `
|
|
2600
|
-
| `
|
|
2601
|
-
| `
|
|
2602
|
-
| `
|
|
2603
|
-
| `
|
|
2604
|
-
| `
|
|
2605
|
-
| `
|
|
2606
|
-
| `
|
|
2607
|
-
| `
|
|
2608
|
-
| `
|
|
2609
|
-
| `
|
|
2610
|
-
| `
|
|
2611
|
-
| `
|
|
2612
|
-
| `
|
|
2613
|
-
| `
|
|
2614
|
-
| `
|
|
2615
|
-
| `
|
|
2616
|
-
| `
|
|
2617
|
-
| `
|
|
2618
|
-
| `
|
|
2619
|
-
| `
|
|
2620
|
-
| `
|
|
2621
|
-
| `
|
|
2622
|
-
| `
|
|
2623
|
-
| `
|
|
2624
|
-
| `
|
|
2625
|
-
| `
|
|
2626
|
-
| `
|
|
2627
|
-
| `
|
|
2628
|
-
| `
|
|
2629
|
-
| `
|
|
2630
|
-
| `
|
|
2631
|
-
| `
|
|
2632
|
-
| `
|
|
2633
|
-
| `
|
|
2634
|
-
| `
|
|
2635
|
-
| `
|
|
2636
|
-
| `
|
|
2637
|
-
| `
|
|
2638
|
-
| `
|
|
2639
|
-
| `
|
|
2640
|
-
| `
|
|
2641
|
-
| `
|
|
2642
|
-
| `
|
|
2643
|
-
| `
|
|
2644
|
-
| `
|
|
2645
|
-
| `
|
|
2646
|
-
| `
|
|
2647
|
-
| `
|
|
2648
|
-
| `
|
|
2649
|
-
| `
|
|
2650
|
-
| `
|
|
2592
|
+
| `config_validate` | Diagnostics | No | — | Validate auth/base URL configuration |
|
|
2593
|
+
| `health_ping` | Diagnostics | No | — | Quick health check with config summary |
|
|
2594
|
+
| `connection_test` | Diagnostics | Yes | Yes | Full auth + GraphQL end-to-end test (returns user/account context) |
|
|
2595
|
+
| `connection_list` | Connection | No | — | List registered profiles with auth strategy and init status |
|
|
2596
|
+
| `connection_add` | Connection | No | — | Add a profile at runtime (CLI profile or explicit credentials) |
|
|
2597
|
+
| `connection_remove` | Connection | No | — | Remove a non-default profile |
|
|
2598
|
+
| `connection_switch` | Connection | No | — | Switch the default profile |
|
|
2599
|
+
| `event_build` | Events | No | — | Build event payload (no API call) |
|
|
2600
|
+
| `event_send` | Events | Yes | No | Send event (async/sync, supports dryRun) |
|
|
2601
|
+
| `event_get` | Events | Yes | Yes | Get single event by ID |
|
|
2602
|
+
| `event_list` | Events | Yes | Yes | List/filter events with pagination and optional analysis mode |
|
|
2603
|
+
| `event_flowInspect` | Events | Yes | Yes | One-call root-entity flow forensics with compact/full modes |
|
|
2604
|
+
| `metrics_query` | Metrics | Yes | Yes | Query Prometheus metrics (instant/range) |
|
|
2605
|
+
| `metrics_healthCheck` | Metrics | Yes | Yes | One-call anomaly assessment with Prometheus + Event API fallback |
|
|
2606
|
+
| `metrics_sloReport` | Metrics | Yes | Yes | SLO snapshot with rates, latency, and threshold findings |
|
|
2607
|
+
| `metrics_labelCatalog` | Metrics | Yes | Yes | Label discovery for a metric (live sampling + known hints) |
|
|
2608
|
+
| `metrics_metricCatalog` | Metrics | Yes | Yes | Documented Fluent metric families with labels, examples, live probing |
|
|
2609
|
+
| `metrics_planQuery` | Metrics | No | No | Generate validated PromQL for any documented metric family |
|
|
2610
|
+
| `metrics_snapshot` | Metrics | Yes | Yes | One-call dashboard snapshot for volume, failures, and latency |
|
|
2611
|
+
| `metrics_compare` | Metrics | Yes | Yes | Compare two adjacent windows for a metric and highlight deltas |
|
|
2612
|
+
| `time_resolveWindow` | Time | Yes | Yes | Resolve natural-language time phrases into exact `from` / `to` timestamps |
|
|
2613
|
+
| `metrics_mutationAudit` | Metrics | Yes | Yes | Audit GraphQL create/update mutation traffic by domain, subdomain, and operation |
|
|
2614
|
+
| `metrics_topEvents` | Metrics | Yes | Yes | Ranked event analytics using Event API aggregation |
|
|
2615
|
+
| `workflow_transitions` | Orchestration | Yes | Yes | Query available user actions/transitions at any entity state |
|
|
2616
|
+
| `plugin_list` | Orchestration | Yes | Yes | List registered rules with optional name filter |
|
|
2617
|
+
| `graphql_query` | GraphQL | Yes | Varies | Execute single-page query or mutation (retries for queries only) |
|
|
2618
|
+
| `graphql_queryAll` | GraphQL | Yes | Yes | Auto-paginated query — follows cursors across all pages |
|
|
2619
|
+
| `graphql_batchMutate` | GraphQL | Yes | No | Execute up to 50 aliased mutations in one request |
|
|
2620
|
+
| `graphql_introspect` | GraphQL | Yes | Yes | Schema introspection (types, mutations, queries) with force-refresh |
|
|
2621
|
+
| `graphql_listRoots` | GraphQL | Yes | Yes | List all query and mutation root fields from the live schema |
|
|
2622
|
+
| `graphql_planOperation` | GraphQL | Yes | Yes | Plan a query or mutation: required args, variables skeleton, selection template, execution guidance |
|
|
2623
|
+
| `graphql_buildQuery` | GraphQL | Yes | Varies | Generate query/mutation from structured inputs with optional validation |
|
|
2624
|
+
| `graphql_validate` | GraphQL | Yes | Yes | Validate a GraphQL document against the live schema |
|
|
2625
|
+
| `graphql_generateFull` | GraphQL | Yes | Yes | Generate maximal-selection query for a root field (depth-limited) |
|
|
2626
|
+
| `batch_create` | Batch | Yes | No | Create ingestion job |
|
|
2627
|
+
| `batch_describePayload` | Batch | No | — | Describe entity-type-specific payload shape and example rows for batch_send |
|
|
2628
|
+
| `batch_send` | Batch | Yes | No | Send records to job |
|
|
2629
|
+
| `batch_status` | Batch | Yes | Yes | Check job status |
|
|
2630
|
+
| `batch_batchStatus` | Batch | Yes | Yes | Check specific batch within a job |
|
|
2631
|
+
| `batch_results` | Batch | Yes | Yes | Get per-record job outcomes |
|
|
2632
|
+
| `webhook_validate` | Webhooks | No | — | Validate webhook payload + optional signature verification |
|
|
2633
|
+
| `entity_planCreate` | Entity | No | — | Plan an entity_create mutation locally with required fields, skeleton, and gotchas |
|
|
2634
|
+
| `entity_planUpdate` | Entity | No | — | Plan an entity_update mutation locally with updatable fields, skeleton, and guidance |
|
|
2635
|
+
| `entity_create` | Entity | Yes | No | Type-safe entity creation with field validation and gotcha knowledge (12 entity types) |
|
|
2636
|
+
| `entity_update` | Entity | Yes | No | Status-aware entity updates with optional transition validation |
|
|
2637
|
+
| `entity_get` | Entity | Yes | Yes | Unified entity lookup by ID or ref with optional edge inclusion |
|
|
2638
|
+
| `workflow_get` | Workflow Mgmt | Yes | Yes | Fetch specific workflow by entityType + entitySubtype via REST API |
|
|
2639
|
+
| `workflow_list` | Workflow Mgmt | Yes | Yes | List all workflows for a retailer (deduplicated to latest versions) |
|
|
2640
|
+
| `workflow_upload` | Workflow Mgmt | Yes | Yes | Deploy workflow JSON via REST API PUT (idempotent upsert) with structure validation and preflight safety analysis |
|
|
2641
|
+
| `workflow_diff` | Workflow Mgmt | No | — | Compare two workflows — rulesets, statuses, risk assessment, mermaid output |
|
|
2642
|
+
| `workflow_simulate` | Workflow Mgmt | No | — | Static prediction of event outcomes from workflow JSON |
|
|
2643
|
+
| `setting_get` | Settings | Yes | Yes | Fetch settings by name (wildcards supported), optionally save to local file |
|
|
2644
|
+
| `setting_upsert` | Settings | Yes | No | Create or update a setting with upsert semantics |
|
|
2645
|
+
| `setting_bulkUpsert` | Settings | Yes | No | Batch create/update up to 50 settings with per-setting error handling |
|
|
2646
|
+
| `environment_discover` | Environment | Yes | Yes | Full environment snapshot — retailer, locations, networks, catalogues, settings, modules |
|
|
2647
|
+
| `environment_validate` | Environment | Yes | Yes | Pre-flight validation checks: auth, retailer, locations, inventory, workflows |
|
|
2648
|
+
| `test_assert` | Test | Yes | Yes | Assert entity state with status, attribute, and edge assertions + polling mode |
|
|
2649
|
+
| `cache_status` | Cache | No | — | Show local cache statistics — entry count, size, hit/miss rate, per-category breakdown |
|
|
2650
|
+
| `cache_clear` | Cache | No | — | Clear cached entries by pattern or all — no API call, local filesystem only |
|
|
2651
2651
|
|