LexQ
Server Details
The Decision Operations Platform for engineering teams
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- lexq-io/lexq-cli
- GitHub Stars
- 1
- Server Listing
- LexQ
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 75 tools
Tools are organized into clear domain families, and within each family the actions are distinct (create/get/list/update/delete, start/stop/adjust, preview/apply, etc.). A few near-neighbors exist—deploy_deployable vs versions_list, history_get vs provenance_get, and dry_run vs replay_decision—but their descriptions distinguish them. No true duplicates are present.
The dominant pattern is lexq_<domain>_<action>, e.g. facts_create, rules_list, deploy_rollback, simulation_start, webhook_subscriptions_save. Minor deviations such as deploy_live, deploy_deployable, dry_run, requirements, and whoami are still readable within the convention. Overall predictable and easy to scan by domain prefix.
75 tools far exceeds the 3–15 sweet spot and creates a heavy tool-selection burden for an agent. The platform genuinely spans many subdomains, but several granular operations could be consolidated or grouped. Breadth is justified by the domain, yet the surface is still oversized.
Coverage is extensive: fact schema CRUD, group/version/rule lifecycles, deployment including publish/schedule/rollback/undeploy, A/B testing, simulations, dry runs, replay, history, logs, profiling, provenance, PII audit, webhooks, and domain templates. Remaining gaps include no A/B test status/detail tool and limited dataset lifecycle management (upload/template but no list/delete).
Available Tools
75 toolslexq_ab_test_adjustAdjust A/B TestADestructiveInspect
Adjust traffic rate of a running A/B test.
Inputs: groupId (required), trafficRate (required).
lexq_ab_test_startStart A/B TestADestructiveInspect
Start an A/B test on a policy group. Requires a challenger version ID and traffic rate. The challenger must be a published version of the same group; a version from another group is rejected with P-016. The split is computed from context.trafficKey on each execution request; requests that omit it never reach the challenger and the test stays at 0%. Starting cancels the group's pending scheduled deployment. Starting while a test is already running replaces its challenger and traffic rate.
Inputs: groupId (required), trafficRate (required), testVersionId (required).
lexq_ab_test_stopStop A/B TestADestructiveInspect
Stop a running A/B test. All traffic is restored to the control (current) version.
Inputs: groupId (required).
lexq_dataset_templateDownload Dataset TemplateARead-onlyInspect
Generate a sample CSV or JSON template based on the required facts of a version. Use this to understand the expected data format before uploading a dataset.
Inputs: groupId (required), versionId (required), format.
lexq_dataset_uploadUpload DatasetAInspect
Upload inline CSV or JSON content as a simulation dataset. The content is stored as a dataset, and its path is returned in the "path" field.
To use the returned path in lexq_simulation_start, set: dataset: { "type": "UPLOADED", "source": "UPLOADED_FILE", "path": "" }
The content travels inside the tool call, so this suits small datasets, and the hosted server at mcp.lexq.io limits the size of a request. For a larger file, use lexq_dataset_upload_file on the local server (lexq serve --mcp), or upload it with the CLI or the console and pass the returned path.
CSV example: userId,paymentAmount user_001,150000 user_002,50000
In CSV, a cell holding a JSON array, such as ["gold","vip"], is read as a list; quote the cell, as CSV requires for a value with commas.
JSON example: [{"userId":"user_001","paymentAmount":150000}, {"userId":"user_002","paymentAmount":50000}]
Inputs: content (required), filename.
lexq_deploy_deployableList Deployable VersionsARead-onlyInspect
List ACTIVE (published) versions that can be deployed for a group. Use this to find which versions are available before calling deploy live.
Inputs: groupId (required).
lexq_deploy_detailDeployment DetailBRead-onlyInspect
Get detailed info about a specific deployment including snapshot hash and integrity check.
Inputs: deploymentId (required).
lexq_deploy_diffDeployment DiffARead-onlyInspect
Compare rule snapshots between two versions. Shows added, removed, and modified rules. Useful for reviewing changes before deploying a new version.
Inputs: baseVersionId (required), targetVersionId (required).
lexq_deploy_historyDeployment HistoryCRead-onlyInspect
List deployment history across all groups.
Inputs: page, size, types, endDate, +2 more.
lexq_deploy_liveDeploy to LiveADestructiveInspect
Deploy an ACTIVE (published) version to live traffic. Takes effect immediately. Versions whose effective start date has not arrived are rejected (P-037) — use lexq_deploy_schedule for those. Versions whose effective end has passed are rejected (P-058). Undefined facts do not block deployment; use lexq_facts_unregistered to review what the version references but has not defined.
Inputs: memo (required), groupId (required), versionId (required).
lexq_deploy_overviewDeployment OverviewARead-onlyInspect
Show current deployment status of all groups — which version is live, last deployment type, and deployer. Each group also carries currentDeploymentId, previousVersionName (the version a rollback restores) and canRollback, as in lexq_groups_get.
Inputs: no named parameters.
lexq_deploy_publishPublish VersionADestructiveInspect
Publish a DRAFT version (DRAFT → ACTIVE). Locks the version from further edits. Must have at least one rule. Undefined facts that rules only read do not block publishing; call lexq_facts_unregistered first to review them. Publishing fails if an action's targetVar is not a registered fact (ACT-032), if the version's compiled rules exceed 128 KB, or if its effective end has already passed (P-058); move the end into the future with lexq_versions_update first.
Inputs: memo (required), groupId (required), versionId (required).
lexq_deploy_rollbackRollback DeploymentADestructiveInspect
Roll the group back to the version that was live before the current one. Call lexq_groups_get first: currentVersionName is live now, previousVersionName is what a rollback restores, and a rollback is rejected while canRollback is false. A rollback needs a previous version that is still ACTIVE and whose effective end has not passed (P-058).
Pass the currentVersionId and currentDeploymentId from that call as expectedCurrentVersionId and expectedCurrentDeploymentId. If anyone deployed, rolled back or undeployed in between, the rollback is rejected with 409 and nothing changes: P-062 if another version or no version is live, P-063 if the same version is live but from a newer deployment. Read the group again and check with the user before retrying.
Inputs: memo (required), groupId (required), expectedCurrentVersionId (required), expectedCurrentDeploymentId (required).
lexq_deploy_scheduleSchedule DeploymentADestructiveInspect
Schedule an ACTIVE version with a future effective start date to auto-deploy at that time (Scheduled Deployment). The time is the version's effectiveFrom, set on the DRAFT before publishing; this call takes no time of its own. One pending schedule per group; manual deploy/rollback/undeploy, starting an A/B test, or archiving the group cancels it. A scheduled deployment uses exactly the rules that were scheduled; if they do not match when it runs, it fails with HASH_MISMATCH and nothing is deployed.
Inputs: memo (required), groupId (required), versionId (required).
lexq_deploy_schedulesList Scheduled DeploymentsARead-onlyInspect
List scheduled deployments across all groups (all statuses: PENDING, EXECUTED, CANCELED, FAILED), newest first.
Inputs: page, size.
lexq_deploy_undeployUndeployADestructiveInspect
Remove the live version from traffic. The version stays ACTIVE but no longer serves requests.
Inputs: memo (required), groupId (required).
lexq_deploy_unscheduleCancel Scheduled DeploymentADestructiveInspect
Cancel the pending scheduled deployment for a group. The version itself is not affected. Fails with P-039 if no pending schedule exists.
Inputs: groupId (required).
lexq_domain_templates_applyApply Domain TemplateAInspect
Apply a domain template to the current tenant. Creates the template's fact definitions and a new policy group pre-populated with its sample rules as a DRAFT version. Apply never overwrites existing schema: a key that already exists with the same definition is kept as it is. Run lexq_domain_templates_preview first. If its factConflicts is not empty, apply fails with P-061 and creates nothing until those facts are deleted or changed to match the template. A template whose isAvailable is false cannot be applied.
Inputs: template (required), customName.
lexq_domain_templates_listList Domain TemplatesARead-onlyInspect
List all domain templates. A domain template is a starter pack of fact definitions and sample rules for a common decision, such as checkout pricing (ECOMMERCE) or transfer approval (FINTECH). Each entry reports its key, whether it can be applied (isAvailable), and how many facts and sample rules it provisions. Call this before preview or apply to see which templates exist.
Inputs: no named parameters.
lexq_domain_templates_previewPreview Domain TemplateARead-onlyInspect
Preview exactly what a domain template will provision before applying it: the fact definitions it registers (an input with a value domain carries its allowed values or range), the sample rules it creates with a description of each, and an apply plan. This is a read-only dry run; nothing is created. factConflicts lists keys this tenant already has with a different type, or with different allowed values or a different range on an input fact. While it is not empty, apply fails with P-061 and creates nothing: delete those facts or change them to match the template, then apply. plan is null for a template that cannot be applied yet.
Inputs: template (required).
lexq_dry_runDry RunARead-onlyInspect
Execute a single dry run against a version. Tests how rules evaluate given input facts without side effects. Not billed and not counted toward the plan's usage. Dry runs, dry run compares, and single-decision replays share two limits for each organization: 60 evaluations per minute and 1000 per UTC day; a compare counts as two. Past the per-minute limit, a call fails with 429 (C-007); wait a minute before trying again. Past the daily limit, a call fails with 429 (AN-041) until 00:00 UTC. A call refused by the per-minute limit does not count toward the daily limit.
Returns: inputFacts — normalized input facts mutatedFacts — input facts changed by rule actions (e.g. MUTATE_FACT mutates paymentAmount) generatedVariables — system-generated values; every fact in mutatedFacts gets a paired {factName}__delta key (signed difference) executionTraces — per-rule match status decisionTraces — per-rule decision (SELECTED / NO_MATCH / BLOCKED / etc.)
Example input: { "facts": { "paymentAmount": 100000, "customerTier": "VIP" } }
Inputs: facts (required), versionId (required), includeDebugInfo.
lexq_dry_run_compareDry Run CompareARead-onlyInspect
Compare dry run results between two versions using the same input facts. Useful for validating changes. Not billed and not counted toward the plan's usage. Dry runs, dry run compares, and single-decision replays share two limits for each organization: 60 evaluations per minute and 1000 per UTC day; a compare counts as two. Past the per-minute limit, a call fails with 429 (C-007); wait a minute before trying again. Past the daily limit, a call fails with 429 (AN-041) until 00:00 UTC. A call refused by the per-minute limit does not count toward the daily limit.
Returns: resultA / resultB — full DryRunResponse for each version diff.mutatedDiff — changes in mutatedFacts between A and B (key → {before, after}) diff.generatedDiff — changes in generatedVariables between A and B
Inputs: facts (required), versionIdA (required), versionIdB (required).
lexq_facts_action_metadataGet Action Runtime Fact MetadataARead-onlyInspect
Retrieve runtime fact requirements per Action type. For each Action, shows which input facts must be present in the execution payload — e.g. MUTATE_FACT always requires its targetVar fact, plus refVar when one is specified. The factRequired flag describes the FACT, not the parameter: refVar is an optional parameter, but if you specify it the named fact must exist. A required fact absent at runtime throws — the engine never defaults to 0. These facts must be sent in the request (P-015 otherwise), even when an earlier action in the same rule writes them. SET_FACT requires no input fact: it is the only action whose targetVar the request does not have to send, and that targetVar must be a registered fact (ACT-032). Static data, safe to cache in-session.
Inputs: no named parameters.
lexq_facts_createCreate Fact DefinitionCInspect
Register a new input variable. Key starts with a letter, then letters, numbers, and underscores (e.g. paymentAmount). Casing is not enforced. Types: STRING, NUMBER, BOOLEAN, LIST_STRING, LIST_NUMBER.
Inputs: key (required), name (required), type (required), isPii, +3 more.
lexq_facts_deleteDelete Fact DefinitionADestructiveInspect
Delete a fact definition. System facts cannot be deleted. Neither can a fact that any rule references: that call fails with FD-006 and reports the count. Rules in deleted groups do not count. Remove the references first.
Inputs: factId (required).
lexq_facts_exportExport Fact CatalogARead-onlyInspect
Export the fact catalog. The two formats carry different things: CSV is the catalog as it stands, system facts included, for reading in a spreadsheet, without value domains; JSON lists each definition with only the fields a new definition takes (key, name, type, description, isRequired, isPii, valueDomain), without IDs. Returns the file contents as text. An export longer than 100,000 characters is refused.
Inputs: format, keyword.
lexq_facts_listList Fact DefinitionsARead-onlyInspect
List all fact definitions (input variable schema): key, name, type, description, PII and system flags, and value domain. isRequired is stored on the definition only; the engine does not read it.
Inputs: page, size, keyword.
lexq_facts_unregisteredList Unregistered FactsARead-onlyInspect
List facts referenced by a version's rules but not yet defined (read-only). Keys that rules only read do not block publish/deploy; a rule whose action targetVar is not a registered fact is rejected at save and publish with ACT-032. Version-wide: covers every rule in the version. Each entry carries the inferred type, suggested name, and where it is referenced (condition/action). Registering one with lexq_facts_create before the version is published makes the engine check request values for it against its type (P-060) and any value domain (P-052).
Inputs: groupId (required), versionId (required).
lexq_facts_updateUpdate Fact DefinitionADestructiveInspect
Update a fact definition. The key is immutable. The type can change only while no rule references the fact; if any does, the call fails with FD-007 and reports the count. Rules in deleted groups do not count. Only the fields you send are changed. System facts (isBlocked, blockReason) accept changes to name, description, PII, and the value domain; isRequired is ignored, and their type cannot change (FD-003).
Inputs: factId (required), name, type, isPii, +3 more.
lexq_groups_createCreate Policy GroupAInspect
Create a new policy group. Requires name. Priority is auto-assigned (appended last, tenant-wide); use lexq_groups_reorder to change order. Optionally set conflict resolution, activation group, and description. Policy groups that share an activationGroup form a cluster and must share the same activationMode / activationStrategy / executionLimit; executionLimit is how many of those groups run, not how many rules. A tenant can have at most 20 groups that are not ARCHIVED; archive groups you no longer use to free a slot.
Inputs: name (required), description, activationMode, executionLimit, +2 more.
lexq_groups_deleteDelete Policy GroupADestructiveInspect
Delete (archive) a policy group. A deployed group cannot be deleted (P-020); undeploy it first with lexq_deploy_undeploy, which also ends a running A/B test. This cannot be undone. The group no longer appears in lexq_groups_list and its name can be reused right away. Calls that change it (settings, versions, rules, starting an A/B test, publish, deploy, rollback, scheduling a deployment) return 409 P-059. If it was ever executed, deployed, or replayed, it is kept for audit; otherwise it is permanently deleted after 30 days.
Inputs: groupId (required).
lexq_groups_getGet Policy GroupARead-onlyInspect
Get a single policy group by ID. Its currentVersionId and currentDeploymentId are what lexq_deploy_rollback expects, and previousVersionName is the version a rollback restores.
Inputs: groupId (required).
lexq_groups_listList Policy GroupsARead-onlyInspect
List policy groups (tenant-wide, priority ASC). Deleted groups are not included.
Inputs: no named parameters.
lexq_groups_reorderReorder Policy GroupsADestructiveInspect
Reorder policy groups by priority. Priority is tenant-wide and flat (1...N continuous); array index 0 = priority 1 (highest precedence). activationGroup is not affected — this only changes priority.
Inputs: groupIds (required).
lexq_groups_updateUpdate Policy GroupADestructiveInspect
Update a policy group. Only provided fields are updated; omitted fields remain unchanged. A deleted group cannot be updated (409 P-059).
Inputs: groupId (required), name, status, description, +4 more.
lexq_history_getGet Execution DetailBRead-onlyInspect
Get full execution detail including inputFacts, mutatedFacts, generatedVariables, executionTraces, and decisionTraces.
Inputs: traceId (required).
lexq_history_listList Execution HistoryBRead-onlyInspect
List policy execution history. Shows trace ID, group, version, status, match result, and latency.
Inputs: page, size, status, endDate, +4 more.
lexq_history_statsExecution StatisticsARead-onlyInspect
Get execution KPIs: total executions, success/failure counts, success rate, and average latency. Without dates the window is the last 30 days through today, in the organization time zone. At most 31 days per call; a longer range is rejected with AN-039. startDate alone runs through today.
Inputs: endDate, groupId, startDate.
lexq_logs_getGet Failure LogARead-onlyInspect
Get failure log detail by ID. Logs can be read here but not resolved or ignored. An organization admin does that in the LexQ console: Management → Failure Logs (https://console.lexq.io/management/failure-logs).
Inputs: logId (required).
lexq_logs_listList Failure LogsARead-onlyInspect
List system failure logs from background tasks (platform event webhooks, scheduled deployments). Without dates the window is 7 days back through today, in the organization time zone; pass startDate to look further back. Logs can be read here but not resolved or ignored. An organization admin does that in the LexQ console: Management → Failure Logs (https://console.lexq.io/management/failure-logs).
Inputs: page, size, status, endDate, +3 more.
lexq_pii_reveals_listList PII Reveal AuditsARead-onlyInspect
List the PII reveal audit ledger — who revealed which fact of which trace, and when. Metadata only; revealed values are never stored or returned. Use for monthly access-log inspection and SIEM collection.
Inputs: page, size, endDate, factKey, +3 more.
lexq_profile_overviewGroup Latency ProfileARead-onlyInspect
Per-rule latency profile of a policy group over a time window: group TOTAL distribution split by cacheState (HIT = calls on a version already prepared for execution, MISS = calls that had to prepare the version first and run slower), a per-rule CONDITION/ACTION percentile table, and slow-rule flags. flagged = p50 ≥ 10× median of per-rule p50s within the group; absolute thresholds are intentionally not supported. Every percentile is accompanied by its sample count n; a percentile is withheld (null) unless n×(1−q) ≥ 3 (p50 needs n ≥ 6, p95 n ≥ 60, p99 n ≥ 300 — display gate, separate from the n ≥ 100 judgment gate). Baselines report INSUFFICIENT_COHORT when fewer than 3 rules qualify. Rule detail comes from a 1% sample of calls; TOTAL is recorded for every call. Defaults: last 24h, live version, cacheState HIT.
Inputs: groupId (required), to, from, versionId, +1 more.
lexq_profile_ruleRule Latency DetailARead-onlyInspect
Single-rule latency detail: merged phase × cacheState distributions plus a per-window time series (60s windows). Missing windows are genuine gaps — never interpolated. Series points carry each window's own values; percentiles in merged distributions are withheld (null) unless n×(1−q) ≥ 3 (p50 n ≥ 6, p95 n ≥ 60, p99 n ≥ 300). flagged = p50 ≥ 10× median of per-rule p50s within the group; absolute thresholds are intentionally not supported.
Inputs: ruleId (required), groupId (required), to, from, +1 more.
lexq_provenance_getGet Decision ProvenanceARead-onlyInspect
Get the lineage of a single decision: what was decided, deterministic why per rule, input facts (PII facts are masked as •••••• with maskedKeys listing them — values are revealable only in the console, audited), the authored/published/deployed responsibility chain, and the rule snapshot fingerprint.
Inputs: traceId (required).
lexq_replay_cancelCancel Replay JobADestructiveInspect
Cancel a PENDING or RUNNING window replay job. Other states are rejected. VIEWER role cannot cancel.
Inputs: jobId (required).
lexq_replay_decisionReplay a DecisionARead-onlyInspect
Re-evaluate a past execution (traceId) against a candidate version and return the decision diff (decisionChanged, effect changes, fired rules) plus a determinism verdict. Synchronous. Not billed and not counted toward the plan's usage. Dry runs, dry run compares, and single-decision replays share two limits for each organization: 60 evaluations per minute and 1000 per UTC day; a compare counts as two. Past the per-minute limit, a call fails with 429 (C-007); wait a minute before trying again. Past the daily limit, a call fails with 429 (AN-041) until 00:00 UTC. A call refused by the per-minute limit does not count toward the daily limit. A replay sends no webhook, notification, or event: rule actions produce no outward effects.
Inputs: traceId (required), candidateVersionId (required).
lexq_replay_exportExport Replay ResultARead-onlyInspect
Export a COMPLETED window replay job; a job that has not completed is rejected. The two formats carry different things: CSV holds the effect blast radius, whose columns are fixed; JSON holds the changed samples and action parameters, which nest and whose keys differ per tenant. JSON is not a superset of CSV. Returns the file contents as text. An export longer than 100,000 characters is refused.
Inputs: jobId (required), format.
lexq_replay_listList Replay JobsARead-onlyInspect
List window replay job history (reverse-chronological). Lightweight items — use lexq_replay_status for summary and changed samples.
Inputs: page, size.
lexq_replay_startStart Window Replay (Blast Radius)ADestructiveInspect
Submit an async job that replays a date window of past executions against a candidate version and measures the blast radius (how many decisions change). Billed per replayed record (REPLAY metric); VIEWER role cannot submit. Poll with lexq_replay_status.
Inputs: to (required), from (required), candidateVersionId (required), maxRecords.
lexq_replay_statusGet Replay Job StatusARead-onlyInspect
Poll a window replay job. RUNNING shows progress 0–100; COMPLETED fills summary and changedSamples; FAILED carries errorMessage. capped=true means the window exceeded the sample cap and only part was replayed.
Inputs: jobId (required).
lexq_requirementsAnalyze RequirementsBRead-onlyInspect
Analyze which input facts a version requires. Returns required keys, types, and an example request body.
Inputs: groupId (required), versionId (required).
lexq_rules_createCreate RuleAInspect
Create a rule in a DRAFT version. It goes last in priority order; lexq_rules_reorder changes the order.
An action's targetVar must be a registered fact (ACT-032 otherwise). Keys a rule only reads (condition fields, refVar) may stay unregistered.
Condition: { type: "SINGLE", field, operator, value, valueType } or { type: "GROUP", operator: "AND"|"OR", children: [...] } Value types: STRING, NUMBER, BOOLEAN, LIST_STRING, LIST_NUMBER Limits: 25 SINGLE conditions per rule (GROUP nodes do not count), 10 levels of nesting below the root, 100 rules per version.
Operators that work on each fact type:
STRING: EQUALS, NOT_EQUALS, CONTAINS (substring), IN, NOT_IN
NUMBER: EQUALS, NOT_EQUALS, GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, IN, NOT_IN
BOOLEAN: EQUALS, NOT_EQUALS
LIST_STRING, LIST_NUMBER: HAS_ANY, HAS_ALL, HAS_NONE IN and NOT_IN test whether the fact's value is in the array. HAS_ANY, HAS_ALL and HAS_NONE match when the fact's list holds at least one, all, or none of the array's values. The array holds values of the fact's type, or for a list fact, of its element type. Example: { "type": "SINGLE", "field": "userTags", "operator": "HAS_ANY", "value": ["VIP","GOLD"], "valueType": "LIST_STRING" }
Actions: [{ type, parameters }]
MUTATE_FACT: { targetVar, operator: "ASSIGN"|"ADD"|"SUB"|"MUL"|"DIV", method: "PERCENTAGE"|"AMOUNT", operand: number, refVar?, rounding? } Reads and writes targetVar. The request must send it (P-015 otherwise), and it must hold a number when the action runs. operand may be negative, and a percent may be over 100. AMOUNT PERCENTAGE (base = refVar, or targetVar when omitted) ASSIGN targetVar = operand targetVar = base × operand/100 ADD targetVar += operand targetVar += base × operand/100 SUB targetVar -= operand targetVar -= base × operand/100 MUL targetVar *= operand targetVar *= (operand/100 + 1) DIV targetVar /= operand invalid refVar is allowed only with PERCENTAGE and ASSIGN, ADD or SUB. DIV with AMOUNT needs a nonzero operand. rounding: { scale: integer (0..34), mode?: "UP"|"DOWN"|"CEILING"|"FLOOR"|"HALF_UP"|"HALF_DOWN"|"HALF_EVEN" }. mode defaults to HALF_UP. Without rounding, the result keeps full precision.
SET_FACT: { targetVar, value: string|number|boolean }. The request does not have to send targetVar.
BLOCK: { reason? } sets isBlocked to true and blockReason to the reason, or "Policy Violation" without one. It does not stop later actions or rules; the caller enforces the block. Only BLOCK writes these two keys: a SET_FACT or MUTATE_FACT targeting either is rejected (ACT-033).
Every condition is checked against the input facts before any action runs, so a condition never sees a value an action writes in the same request. The winning rules' actions then run in priority order, each on the values the actions before it left.
Inputs: rule (required), groupId (required), versionId (required).
lexq_rules_deleteDelete RuleBDestructiveInspect
Delete a rule from a DRAFT version.
Inputs: ruleId (required), groupId (required), versionId (required).
lexq_rules_getGet Rule DetailBRead-onlyInspect
Get full rule detail including condition tree and action definitions.
Inputs: ruleId (required), groupId (required), versionId (required).
lexq_rules_listList RulesBRead-onlyInspect
List all rules in a version (priority ASC). Returns summary with conditionSummary and actionSummary.
Inputs: groupId (required), versionId (required).
lexq_rules_reorderReorder RulesADestructiveInspect
Reorder rules by specifying rule IDs in desired order. Priorities are assigned 1...N (1-based, continuous); array index 0 = priority 1 (highest precedence).
Inputs: groupId (required), ruleIds (required), versionId (required).
lexq_rules_toggleToggle RuleBDestructiveInspect
Enable or disable a rule without deleting it.
Inputs: ruleId (required), groupId (required), isEnabled (required), versionId (required).
lexq_rules_updateUpdate RuleADestructiveInspect
Update an existing rule in a DRAFT version. Only provided fields are changed. A new condition tree must stay within 25 conditions (SINGLE nodes) and 10 levels of nesting below the root. Saving re-checks every action in the rule, including ones you did not change, and fails with ACT-032 if any action's targetVar is not a registered fact.
Inputs: rule (required), ruleId (required), groupId (required), versionId (required).
lexq_simulation_cancelCancel SimulationADestructiveInspect
Cancel a running or pending simulation.
Inputs: simulationId (required).
lexq_simulation_exportExport SimulationARead-onlyInspect
Export simulation results as JSON or CSV. Returns the raw data. An export longer than 100,000 characters is refused.
Inputs: simulationId (required), format.
lexq_simulation_listList SimulationsCRead-onlyInspect
List simulation history with optional filters.
Inputs: to, from, page, size, +1 more.
lexq_simulation_startStart SimulationADestructiveInspect
Start an Impact Simulation against historical, uploaded, or inline data.
Every record a simulation processes counts toward the plan's simulation usage, including records processed before a cancel. When the plan's limit is reached, a new simulation cannot start.
dataset.type and dataset.source are BOTH required, and must be paired: HISTORICAL → source EXECUTION_LOGS, with dataset.from / dataset.to (yyyy-MM-dd, whole days in the organization time zone, both inclusive) UPLOADED → source UPLOADED_FILE, with dataset.path (the path returned by lexq_dataset_upload) MANUAL → source REQUEST_BODY, with dataset.manualData (array of fact records)
options.maxRecords: number (max 100000). When omitted, HISTORICAL and UPLOADED run at most 1000 records and MANUAL runs every record sent. options.baselinePolicyVersionId: uuid (optional, for baseline comparison) options.includeRuleStats: boolean options.metricConfig: optional — omit for plain execution count. To aggregate a fact, pass { "targetVariable": "", "aggregationType": "COUNT" | "SUM" | "AVG" }
Example (uploaded dataset): { "policyVersionId": "", "dataset": { "type": "UPLOADED", "source": "UPLOADED_FILE", "path": "" }, "options": { "baselinePolicyVersionId": "", "includeRuleStats": true, "maxRecords": 10000 } }
Example (historical): { "policyVersionId": "", "dataset": { "type": "HISTORICAL", "source": "EXECUTION_LOGS", "from": "2026-01-01", "to": "2026-01-31" }, "options": { "baselinePolicyVersionId": "", "includeRuleStats": true } }
Inputs: body (required).
lexq_simulation_statusSimulation StatusARead-onlyInspect
Get simulation status and results. Poll until status is COMPLETED or FAILED.
Inputs: simulationId (required).
lexq_versions_cloneClone Policy VersionAInspect
Clone an existing version to create a new DRAFT. Useful when the source version is already published. The new DRAFT counts toward the limit of 20 DRAFT versions per group, and a source with more than 100 rules cannot be cloned.
Inputs: groupId (required), versionId (required).
lexq_versions_createCreate Policy VersionAInspect
Create a new DRAFT version in a policy group. Optionally provide a commit message and effective date range. A group can hold at most 20 DRAFT versions at a time; published versions do not count. Publish or delete drafts to make room.
Inputs: groupId (required), effectiveTo, commitMessage, effectiveFrom.
lexq_versions_deleteDelete Policy VersionADestructiveInspect
Delete a DRAFT, ACTIVE, or EXPIRED version. A version that is live, in an A/B test (P-017), or targeted by a pending scheduled deployment (P-043) cannot be deleted. A version that has been executed is kept as ARCHIVED instead of removed: it no longer appears in lexq_versions_list and cannot be deployed, executed, simulated, replayed, cloned, or used in a dry run (P-008). Deleting it again does nothing.
Inputs: groupId (required), versionId (required).
lexq_versions_getGet Policy VersionARead-onlyInspect
Get a single version by ID, including its rules and fact requirements.
Inputs: groupId (required), versionId (required).
lexq_versions_listList Policy VersionsCRead-onlyInspect
List all versions of a policy group.
Inputs: groupId (required), page, size.
lexq_versions_updateUpdate Policy VersionADestructiveInspect
Update a DRAFT version. Only DRAFT versions can be modified. Omitted fields keep their current values. To remove an end of the effective window, set clearEffectiveFrom or clearEffectiveTo to true instead of sending a value.
Inputs: groupId (required), versionId (required), effectiveTo, commitMessage, +3 more.
lexq_webhook_subscriptions_deleteDelete Webhook SubscriptionCDestructiveInspect
Delete a webhook subscription by ID.
Inputs: id (required).
lexq_webhook_subscriptions_getGet Webhook SubscriptionBRead-onlyInspect
Get webhook subscription detail by ID.
Inputs: id (required).
lexq_webhook_subscriptions_listList Webhook SubscriptionsARead-onlyInspect
List platform event webhook subscriptions. These receive deployment lifecycle notifications: publish, deploy, rollback, and undeploy, plus a deployment being scheduled or a schedule being canceled.
Inputs: page, size.
lexq_webhook_subscriptions_saveSave Webhook SubscriptionADestructiveInspect
Create or update a webhook subscription. Omit id to create, provide id to update. Events: VERSION_PUBLISHED, DEPLOYED, ROLLED_BACK, UNDEPLOYED, DEPLOY_SCHEDULED, DEPLOY_SCHEDULE_CANCELED. Formats: GENERIC (full JSON), SLACK ({"text": "..."}).
Inputs: name (required), webhookUrl (required), subscribedEvents (required), id, +3 more.
lexq_webhook_subscriptions_testTest Webhook SubscriptionADestructiveInspect
Send a test event to verify webhook connectivity. Returns the HTTP status code and success/failure message.
Inputs: id (required).
lexq_whoamiWho Am IARead-onlyInspect
Show current authentication info (tenant ID, user ID, role) and tenantTimezone, the organization time zone that every yyyy-MM-dd date filter uses. Work out "today" or "yesterday" in that zone, not in UTC.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Decision intelligence for product teams. Turn scattered feedback into signal you can act on.
The AI orchestration agent for modern software teams.
Autonomous and governed SRE & MLOps control plane for AI agent platforms.
Agentic-AI operations platform for any business — automate sales, finance, support and back-office w
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables users to investigate infrastructure incidents in plain English, correlate observability and deploy data with runbooks, and get evidence-backed root-cause proposals with approval-gated remediation.5-
- AlicenseAqualityBmaintenanceDecision memory for teams building with AI coding agents. Captures every engineering decision once, ranks it by blast radius, and briefs every MCP-compatible agent before it acts, so agents stop making conflicting changes across repos.2010 npm12Apache 2.0
- AlicenseNot gradedqualityBmaintenanceThe decision system for agentic engineering: keeps your project's decisions, rationale, and rejected paths in plain files and surfaces them to AI coding agents before they plan or change code.11Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables evaluating AI applications, inspecting reliability evidence, and gating releases from development and CI workflows.33Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.