Skip to main content
Glama
This connector has been deprecated

This listing duplicates LexQ (io.lexq/lexq), which follows the official MCP Registry entry. Use that listing instead.

Server Details

The Decision Operations Platform for engineering teams

Ownership verified
Status
Healthy
Uptime
76.4% over 80 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.6/5.0

Scored across 75 tools

Disambiguation4/5

Most tools target a distinct resource+action (facts vs. groups vs. versions vs. rules vs. deploy), and the long descriptions clarify boundaries well. A few pairs overlap: lexq_history_get vs. lexq_provenance_get (both return decision detail) and lexq_facts_unregistered vs. lexq_requirements (both analyze required facts of a version), which could cause occasional misselection.

Naming Consistency4/5

Strong, predictable lexq_<domain>_<action> pattern throughout (facts_create, groups_list, deploy_live, simulation_status). Minor deviations: adjective/plural forms like lexq_deploy_deployable and lexq_deploy_schedules, and bare names like lexq_requirements and lexq_whoami that break the domain_action split.

Tool Count2/5

75 tools is far beyond the 3-15 sweet spot and imposes a large selection burden. The domain is genuinely broad (schema, rules, versions, deployment, A/B, simulations, replays, webhooks, profiling, provenance), so much of it is earned, but the surface is still heavily over-scoped for one server.

Completeness5/5

Near-complete lifecycle coverage: full CRUD for facts, groups, versions, rules, and webhooks, plus publish/deploy/rollback/schedule/undeploy, A/B testing, simulations, replays, history, logs, profiling, provenance, and PII audit. No obvious dead ends for the stated policy-engine domain.

Available Tools

75 tools
lexq_ab_test_adjustAdjust A/B TestA
Destructive
Inspect

Adjust traffic rate of a running A/B test.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
trafficRateYesNew traffic percentage for challenger (1-99)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is carried structurally. The description contributes the prerequisite that the test must be running, but it never explains that the change diverts live traffic immediately, whether the adjustment is reversible, or what a failed adjustment leaves behind — meaningful gaps for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single ten-word sentence, front-loaded with the action and the constraint. There is no filler, hedging, or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (two required parameters, flat schema) and annotations cover the safety profile, so the description is close to sufficient. However, there is no output schema, so the agent has no idea what a successful adjustment returns, and a destructive mutation of live traffic deserves at least a note on effect timing and reversibility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: groupId is documented as a policy group ID and trafficRate as a 1-99 challenger traffic percentage, including bounds. The description adds only the framing that the rate belongs to a running test and does not clarify whether trafficRate is absolute or a delta from the current rate, which is the ambiguity the schema does not resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ("Adjust") with a specific attribute ("traffic rate") of a specific resource ("a running A/B test"), which separates it from siblings like lexq_ab_test_start and lexq_ab_test_stop. The word "running" adds a state qualifier that further narrows intent, though it never names the sibling tools it contrasts with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Running A/B test" implicitly tells the agent this applies only to an already-started test, so start/stop are the implied alternatives. There is no explicit when-not guidance, no statement about what happens if the test is stopped or absent, and no routing language naming the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_ab_test_startStart A/B TestA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
trafficRateYesTraffic percentage routed to challenger (1-99)
testVersionIdYesChallenger version ID. Must be a published version of this group

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint/readOnlyHint annotations: it discloses the P-016 rejection for cross-group versions, the silent 0% outcome when context.trafficKey is missing, the cancellation of a pending scheduled deployment, and that restarting replaces an existing test's challenger and rate. That is exactly the side-effect information an agent needs before invoking a destructive mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, front-loaded with the action and required inputs, then escalating to preconditions, runtime behavior, and restart semantics. No filler and every sentence carries a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should cover outcomes; it explains error behavior (P-016) and the 0% degradation case, and covers scheduling side effects. It does not say what the start call returns (e.g., test ID or status), which is a minor remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: trafficRate is a split computed per request from context.trafficKey (a field not in the schema at all), and testVersionId must be a published version from the same group. These constraints explain parameter impact rather than restating types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Start an A/B test on a policy group') and implicitly distinguishes itself from the adjust/stop siblings by describing a start operation with a challenger and traffic rate. An agent can tell what this does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives strong preconditions (challenger must be a published version of the same group, trafficKey required on execution requests) and notes the replace-on-running semantics. However, it never names the alternatives (lexq_ab_test_adjust, lexq_ab_test_stop) or says when to prefer adjust versus restart, leaving sibling routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_ab_test_stopStop A/B TestA
Destructive
Inspect

Stop a running A/B test. All traffic is restored to the control (current) version.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is largely covered. The description nevertheless adds real value beyond them by disclosing the concrete post-condition: all traffic is restored to the control (current) version. It stops short of saying whether the test can be resumed, whether variant results are retained, or how in-flight sessions are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the action stated first and its effect second. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, the definition covers what is stopped and what state results, which is what an agent needs before calling it. Minor gaps remain around resumability and result retention, but nothing essential for correct invocation is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single required groupId parameter ("Policy group ID"), so the schema carries the parameter documentation. The description adds no further meaning about groupId, such as how to obtain one or whether it refers to the policy group owning the test. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Stop a running A/B test" gives a specific verb plus resource, and the second sentence states the resulting state (traffic back to control). It is clearly distinguishable from lexq_ab_test_start and lexq_ab_test_adjust by verb alone, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "a running A/B test" implies a precondition (the test must be active), which is the only usage signal present. There is no explicit when-not guidance, no mention of what to do if the test is already stopped or not found, and no reference to lexq_ab_test_adjust as the alternative for reweighting instead of halting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_dataset_templateDownload Dataset TemplateA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
formatNoTemplate formatcsv
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful framing that generation is a preparatory step keyed to a version's required facts, but says nothing about whether the template is returned inline, as a downloadable file, or how large/complex versions affect the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the action first and the motivating use case second; no filler, no repetition of the title or schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, three-parameter generation tool, the essentials are present, but with no output schema the description should say what the caller receives (raw template text, file artifact, URL) and whether the format parameter changes the returned content or just its serialization. The title says 'Download' while the description says 'Generate', leaving the delivery mechanism ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are documented, and the description still adds meaning: the template's shape is derived from 'the required facts of a version', which explains why both groupId and versionId are mandatory, and 'CSV or JSON' ties to the format enum. Minor value beyond the schema, but genuinely clarifying.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Generate') and resource ('sample CSV or JSON template') scoped to a version, and implicitly separates itself from lexq_dataset_upload by framing the output as a format reference rather than an ingest call. An agent can distinguish it from the dataset-upload sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this to understand the expected data format before uploading a dataset' gives a clear when-to-use condition and points at the follow-up action. It stops short of naming the sibling tool explicitly or stating when-not to use it (e.g., when a dataset already uploaded validates fine).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_dataset_uploadUpload DatasetAInspect

Upload inline CSV or JSON content as a simulation dataset. The content is uploaded to S3 and a path is returned in the "path" field.

To use the returned path in lexq_simulation_start, set: dataset: { "type": "UPLOADED", "source": "S3_BUCKET", "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

JSON example: [{"userId":"user_001","paymentAmount":150000}, {"userId":"user_002","paymentAmount":50000}]

NameRequiredDescriptionDefault
contentYesCSV or JSON content as string
filenameNoFilename with extension (.csv or .json)dataset.csv

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that content is written to S3, that the returned path appears in a "path" field, and that the hosted server at mcp.lexq.io imposes a request-size limit. Those are exactly the side-effect and constraint details an agent needs for a non-readOnly upload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the single-sentence purpose, then clearly delineated usage/limit/alternative guidance and examples. The JSON example is long for the value it adds, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned "path" field and showing how to feed it downstream. Size constraints, side effects, and the alternative for large files are all covered, so an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by showing worked CSV and JSON samples that demonstrate the expected content shape and the field-per-row structure. The filename parameter's role in choosing .csv vs .json is only implied rather than stated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Upload inline CSV or JSON content as a simulation dataset") and immediately distinguishes itself from the file-based variant by qualifying "inline" and naming lexq_dataset_upload_file. An agent can tell this apart from lexq_dataset_template or lexq_simulation_start without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the use condition (small datasets, content travels inside the tool call) and the exclusion with named alternatives (larger files go to lexq_dataset_upload_file on the local server, or CLI/console). It even closes the loop by showing the exact dataset object needed to consume the returned path in lexq_simulation_start.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_deployableList Deployable VersionsA
Read-only
Inspect

List ACTIVE (published) versions that can be deployed for a group. Use this to find which versions are available before calling deploy live.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is clear. The description adds useful filtering context (ACTIVE/published, grouped by groupId) but does not disclose return format, ordering, empty-result behavior, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with zero waste. The core behavior is front-loaded and the workflow hint follows naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only, one-parameter listing tool with rich annotations and no output schema, the description is nearly complete. A minor gap is that it does not describe return shape or whether results are paginated, but the tool's purpose and usage are clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the only parameter is fully documented in the schema. The description's phrase 'for a group' reinforces that groupId scopes the result, but it adds no syntax, format, or edge-case meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: lists ACTIVE (published) versions that can be deployed for a group. The 'deployable' scope distinguishes it reasonably well from generic version-listing siblings, but it does not explicitly name or contrast with lexq_versions_list or lexq_deploy_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear when-to-use guidance: find available versions before calling deploy live. This gives the agent a workflow anchor and names the next tool, but it does not state when not to use this tool or mention alternatives such as deploy_detail or versions_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_detailDeployment DetailB
Read-only
Inspect

Get detailed info about a specific deployment including snapshot hash and integrity check.

NameRequiredDescriptionDefault
deploymentIdYesDeployment ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description does add useful content signals that the response includes a snapshot hash and an integrity check, but it says nothing about error behavior for unknown IDs or whether the integrity check is computed on demand.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the resource and scope stated first and the notable return fields appended. No filler, though 'including' leaves the field list open-ended and slightly hedges what is actually returned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description gives the essential return highlights (snapshot hash, integrity check) and the lookup scope. Given the annotations cover safety and the schema covers the parameter, this is adequate; a note on failure for missing deployments would round it out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single deploymentId parameter with 100% schema description coverage, including uuid format and a validation pattern. The description adds no meaning beyond the schema, which is the expected baseline for this coverage level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get detailed info') and resource ('a specific deployment'), making clear this is a single-item lookup rather than a list. It does not explicitly distinguish itself from close siblings such as lexq_deploy_overview, lexq_deploy_history, or lexq_deploy_live, so the differentiation is only implied by 'specific'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus lexq_deploy_overview or lexq_deploy_history, and no prerequisites or exclusions. The agent must infer from the name and sibling list that this requires a known deploymentId.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_diffDeployment DiffA
Read-only
Inspect

Compare rule snapshots between two versions. Shows added, removed, and modified rules. Useful for reviewing changes before deploying a new version.

NameRequiredDescriptionDefault
baseVersionIdYesBase version ID (typically the current live)
targetVersionIdYesTarget version ID (the one you want to deploy)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds that both inputs are snapshots of rule versions and that the result is a categorized diff, which is useful, but it says nothing about behavior with invalid/nonexistent version IDs, size limits, or ordering of the returned diff.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and output shape before the usage note. No filler, though the third sentence is generic advisory content that could have carried more routing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing the return, and it does name the diff categories. For a two-required-parameter read-only comparison this is largely sufficient; the missing piece is any note on diff structure or error behavior for bad version IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters already document their roles ('typically the current live', 'the one you want to deploy'). The description only reinforces the two-version comparison framing and adds no directionality detail (base vs target) beyond what the schema states, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Compare rule snapshots between two versions') and enumerates what the comparison produces (added, removed, modified rules). However, it never distinguishes itself from near siblings such as lexq_dry_run_compare or lexq_deploy_detail, so an agent must infer which comparison tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for reviewing changes before deploying a new version' gives a usage context, but it is phrased as a soft recommendation rather than an explicit when-to-use rule. There are no conditions for when not to use it and no named alternative among the many deploy/dry-run siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_historyDeployment HistoryC
Read-only
Inspect

List deployment history across all groups.

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size
typesNoFilter by deployment types (comma-separated: DEPLOY,ROLLBACK,UNDEPLOY)
endDateNoEnd date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts.
groupIdNoFilter by group ID
startDateNoStart date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds essentially nothing beyond that: it does not mention pagination defaults (page 0, size 20, max 100), result ordering, time windowing, or what a deployment record contains. For a list endpoint with no output schema, that leaves real behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded and free of filler, which is good, but it is under-specified rather than concise. The space saved is spent by the agent on guessing scope, ordering, and pagination behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six optional parameters, no output schema, and no annotations beyond the safety hints, the description should at least note default pagination and result ordering. Instead it stops at the resource name, leaving the agent to infer how results are paged and sorted from the input schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (page, size, types, startDate, endDate, groupId) are already fully documented in the schema, including enum-like values for types and timezone semantics for the dates. The description adds no parameter meaning; 'across all groups' arguably sits in mild tension with the existence of a groupId filter parameter. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List deployment history'), so the agent knows this is a read operation returning past deployments rather than current state. However, it gives no differentiation against the many nearby siblings such as lexq_deploy_detail, lexq_deploy_overview, or lexq_history_list, so the agent cannot tell from the text alone which of these to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no when-not-to-use guidance, and no naming of an alternative tool. The phrase 'across all groups' hints at a broad-scope listing (as opposed to per-group queries), but that implication is never stated as a selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_liveDeploy to LiveA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
memoYesDeployment memo (required)
groupIdYesPolicy group ID
versionIdYesVersion ID to deploy

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description is not carrying the safety burden alone; it still adds real value by stating deployment takes effect immediately and by disclosing the two rejection codes (P-037, P-058) and the fact that undefined facts do not block deployment. What it omits is whether the currently live version is replaced or retained, and any permission requirements — meaningful gaps for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action and its immediacy, followed by failure conditions and the sibling routing. No repetition of the tool name or title and no hedging filler; each sentence supplies a distinct decision-relevant fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter destructive mutation with no output schema, the definition covers preconditions, immediacy, error codes, and alternatives, which is most of what an agent needs. The remaining shortfall is what the caller sees on success or failure and what happens to the previously live version, which the absent output schema leaves undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all three parameters are documented in-schema, so the baseline is 3; the description earns above baseline by constraining versionId to a published/ACTIVE version and implying memo is an audit record of the deployment. It says nothing about groupId semantics or how the two IDs must relate, but the schema already covers their types and formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (deploy) plus the exact resource state (an ACTIVE/published version) and the target (live traffic). The parenthetical clarifies what 'ACTIVE' means, and the contrasting sibling lexq_deploy_schedule is named, so an agent can distinguish this from the schedule/deployable/publish siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-not conditions: versions whose effective start date has not arrived must use lexq_deploy_schedule, and versions whose effective end has passed are rejected. It also routes the agent to lexq_facts_unregistered for reviewing undefined facts, which is a genuine alternative-selection cue rather than a generic disclaimer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_overviewDeployment OverviewA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered and the description needn't repeat it. What it adds is return-shape semantics – that previousVersionName is the version a rollback restores and that canRollback accompanies it – plus a pointer to lexq_groups_get for field definitions. It stops short of stating scope limits (all environments? all versions? truncation/pagination?), which matters because there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and scope, then a compact field glossary with a cross-reference. No filler, no restatement of the title, and the rollback detail is placed where it is most useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description must carry the return-value burden, and it does name the salient fields and their meaning, including the rollback pair. It is slightly incomplete about the boundaries of the overview – whether it spans environments, how many versions are reflected, and whether results are truncated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema sets the baseline at 4 and there is nothing for the description to disambiguate. It correctly spends no words on arguments and instead puts its budget into return-value semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Show current deployment status of all groups') and enumerates the payload fields (live version, last deployment type, deployer). It is clearly an aggregate, multi-group read, but it never names the sibling it displaces (e.g. lexq_deploy_live or lexq_deploy_detail), so the distinction must be inferred from the word 'all'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'all groups' suggests a fleet-wide overview rather than a per-group detail call, which happens to contrast with lexq_deploy_detail and lexq_deploy_live. There is no explicit statement of when to pick this over those siblings, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_publishPublish VersionA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
memoYesPublish memo (required)
groupIdYesPolicy group ID
versionIdYesVersion ID to publish

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint=true annotation by explaining what the destruction means concretely: the version is locked from further edits. It also discloses three specific failure conditions with error codes (ACT-032 for unregistered targetVar, 128 KB compiled-rule ceiling, P-058 for an expired effective end) and clarifies that undefined read-only facts do not block publishing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and state transition, then prerequisites, then failure modes with remediation. Every sentence carries a distinct operational fact and there is no filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, no-output-schema mutation tool this covers what changes, what is blocked, and how to unblock it. The one gap is the return value: nothing tells the agent whether a success response contains the new version record, a status, or nothing beyond confirmation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so groupId, versionId, and memo are already documented in the schema. The description references 'the version' and 'the version's compiled rules' but adds no new per-parameter meaning such as memo conventions or cross-group constraints. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the exact state transition it performs: 'Publish a DRAFT version (DRAFT → ACTIVE).' That transition, plus the note about locking, separates it from the lexq_deploy_* siblings that operate on already-active versions. It stops short of naming which sibling to reach for instead when the goal is going live.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear preconditions are stated (at least one rule, and lexq_facts_unregistered as a voluntary pre-check) and a remediation path is named for a specific blocker (lexq_versions_update to move the end date). It gives no explicit exclusions, e.g., when to use lexq_deploy_deployable or lexq_deploy_schedule rather than publishing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_rollbackRollback DeploymentA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
memoYesRollback reason (required)
groupIdYesPolicy group ID
expectedCurrentVersionIdYescurrentVersionId from your last read of the group
expectedCurrentDeploymentIdYescurrentDeploymentId from your last read of the group

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only say destructiveHint=true; the description adds substantial context beyond that: the optimistic-concurrency contract via expected ids, the 409 rejection semantics with 'nothing changes', and the distinct P-058/P-062/P-063 failure conditions. It also tells the agent to re-read state and confirm with the user before retrying, which is exactly the behavioral guidance a destructive tool needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and precondition are front-loaded, then error handling, then retry advice — a logical order. It is dense with error codes and policy references (P-058, P-062, P-063), which is justified for a destructive operation but makes it heavier than strictly necessary for a four-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-read-only mutation with no output schema, the description covers what is required: preconditions to verify, ids to supply, failure modes, and post-failure protocol. Nothing an agent needs in order to call this safely is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by explaining where expectedCurrentVersionId and expectedCurrentDeploymentId come from (the currentVersionId/currentDeploymentId of a prior group read) and what happens when they no longer match. The memo parameter's purpose is left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb (roll back) and a specific target state (the version live before the current one), which separates it from siblings like lexq_deploy_publish and lexq_deploy_undeploy. An agent knows exactly what state the group ends in after a successful call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit prerequisite sequence ('Call lexq_groups_get first') and names the blocking condition (canRollback false, previous version must be ACTIVE with unexpired effective end). It stops short of contrasting directly with lexq_deploy_undeploy or lexq_deploy_publish, so the agent must infer when to prefer rollback over those alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_scheduleSchedule DeploymentA
Destructive
Inspect

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. The snapshot hash is sealed at scheduling and re-verified at execution (fail-closed).

NameRequiredDescriptionDefault
memoYesSchedule memo (required)
groupIdYesPolicy group ID
versionIdYesACTIVE version ID with a future effective start date

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=true and readOnlyHint=false; the description goes well beyond them by disclosing the sealed snapshot hash re-verified at execution with fail-closed semantics, the one-schedule-per-group invariant, and the exact set of operations that silently cancel the schedule. That is exactly the kind of consequence-of-use context a destructive scheduling tool needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the action and its key constraint, and each sentence contributes a distinct fact (time source, cardinality, cancellation, integrity check). It is dense but not padded; a slightly tighter grouping of the cancellation triggers would be ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description could say what the call returns (e.g. the created schedule record or its ID), and it does not. Everything else an agent needs to decide and invoke correctly — preconditions, cardinality, cancellation behavior, integrity guarantees — is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: there is no time parameter because the fire time comes from the version's effectiveFrom, which must be set on the DRAFT before publishing. Only the required 'memo' parameter gets no elaboration, which is minor.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Schedule an ACTIVE version ... to auto-deploy at that time') and immediately qualifies the object ('ACTIVE', 'future effective start date'). It is clearly distinguishable from siblings such as lexq_deploy_deployable, lexq_deploy_publish, and lexq_deploy_unschedule without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the precondition (version must be ACTIVE with a future effectiveFrom set on the DRAFT before publishing) and the when-not conditions (one pending schedule per group; manual deploy/rollback/undeploy, A/B test start, or group archive cancels it). It never names the cancellation sibling lexq_deploy_unschedule explicitly, so routing to the removal tool is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_schedulesList Scheduled DeploymentsA
Read-only
Inspect

List scheduled deployments across all groups (all statuses: PENDING, EXECUTED, CANCELED, FAILED), newest first.

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and non-destructive annotations, the description discloses that the listing spans every group, includes PENDING, EXECUTED, CANCELED, and FAILED schedules, and is ordered newest first. These details clarify that the tool is not limited to upcoming schedules, while pagination behavior is already covered by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence front-loads the action and resource, then efficiently communicates scope, supported statuses, and sort order. There is no redundant or unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list with two optional pagination parameters, the scope, status coverage, and ordering provide enough context to invoke the tool correctly. With no output schema, a brief note about the returned schedule or page representation, or clearer differentiation from sibling deployment views, would make the definition more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with page and size documented along with their defaults and bounds, so the baseline score applies. The description does not add further parameter interpretation or pagination guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource—listing scheduled deployments—and adds useful scope, status, and ordering details. It does not explicitly differentiate this tool from siblings such as lexq_deploy_history or lexq_deploy_detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The across-all-groups, all-status scope implies that this is the broad schedule-inventory tool. However, there is no explicit when-to-use guidance or direction to alternatives for deployment history or details of an individual deployment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_undeployUndeployA
Destructive
Inspect

Remove the live version from traffic. The version stays ACTIVE but no longer serves requests.

NameRequiredDescriptionDefault
memoYesUndeploy reason (required)
groupIdYesPolicy group ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With destructiveHint=true and readOnlyHint=false already given, the description earns credit by narrowing what is actually destroyed: the version stays ACTIVE and only loses traffic. That materially softens the destructive signal. It stops short of saying whether the state is reversible or how to restore traffic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero redundant wording, and the primary effect is stated first with the important caveat second. Nothing could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema and annotations covering the safety profile, the description supplies enough to act correctly and to predict the post-state. The only gap is the pointer back to which sibling re-deploys the version.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only two parameters, both already documented (memo as undeploy reason, groupId as policy group ID). The description adds no further meaning to either parameter, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource pair ("Remove the live version from traffic") that makes the operation concrete and separable from siblings such as lexq_deploy_publish or lexq_deploy_rollback. It doesn't explicitly name an alternative sibling, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the effect: an agent can infer this is the way to take a version out of serving without deleting it. The description never says when to choose undeploy versus rollback, publish, or unschedule, which matters given a large sibling surface.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_deploy_unscheduleCancel Scheduled DeploymentA
Destructive
Inspect

Cancel the pending scheduled deployment for a group. The version itself is not affected. Fails with P-039 if no pending schedule exists.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, and the description qualifies that blast radius by stating 'The version itself is not affected' — a genuinely useful clarification the annotations do not provide. The documented P-039 failure mode is also beyond structured data. It does not cover permissions or idempotency, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences, front-loaded with the action, followed by the non-impact statement and the error condition. No filler or restated title verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, the description covers the action, the scope of destruction, and the failure case. A brief note on what a successful response confirms (e.g., that the schedule is removed) would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single required groupId already documented as 'Policy group ID'. The phrase 'for a group' in the description echoes rather than extends the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Cancel the pending scheduled deployment for a group.' This clearly separates it from lexq_deploy_schedule (create) and lexq_deploy_schedules (list), though neither sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated — the agent can infer this is the undo for lexq_deploy_schedule. The P-039 precondition ('no pending schedule exists') adds a useful guard, but there is no explicit routing such as 'check lexq_deploy_schedules first' or a named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
templateYesDomain template key to apply (e.g. ECOMMERCE).
customNameNoOptional custom name for the policy group that gets created. If omitted, the template's default name is used.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=false; the description goes well beyond them by disclosing the write effects (facts created, policy group created as DRAFT), the non-destructive merge semantics (an existing key with the same definition is kept as-is, never overwritten), and the atomic failure mode where P-061 means nothing is created.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, each front-loaded with a distinct fact: action, effects, merge semantics, prerequisite, and failure condition. There is no filler or repetition, and the most decision-relevant constraint (preview first) sits before the failure details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no output schema, the description covers effects, prerequisites, and failure modes thoroughly. The one remaining gap is that it never indicates what the call returns (e.g. created group or fact identifiers), which matters for follow-up calls since no output schema exists to fill that in.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both `template` and `customName` are already documented in the schema, including the default-name fallback behavior. The description adds no format, example, or constraint detail about these parameters beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Apply a domain template to the current tenant") and immediately enumerates the side effects: fact definitions plus a new policy group with sample rules as a DRAFT version. It also distinguishes itself from the sibling lexq_domain_templates_preview and lexq_domain_templates_list by naming the preview tool as a prerequisite step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit ordering guidance ("Run lexq_domain_templates_preview first"), a hard precondition (factConflicts must be empty or apply fails with P-061), and an exclusion (a template with isAvailable false cannot be applied). The agent knows both when to call it and when the call will be rejected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_domain_templates_listList Domain TemplatesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds value beyond that by disclosing the shape of each returned entry, including the isAvailable applicability flag, which is behaviorally meaningful for deciding whether to proceed to apply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action, followed by the definition needed to interpret results and the workflow cue. The ECOMMERCE/FINTECH examples earn their place by making an abstract concept concrete, and nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema, and a read-only annotation profile, the remaining burden is explaining what a domain template is and what a listing entry contains, and the description does both. An agent has everything needed to call it and to interpret the response before choosing preview or apply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is an empty object, so per the baseline this sits at 4. The description's account of returned fields is a bonus rather than parameter explanation, and there are no parameters that could be underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List all domain templates") and then defines the resource concretely as a starter pack of fact definitions and sample rules with named examples (ECOMMERCE checkout pricing, FINTECH transfer approval). It also enumerates what each entry reports (key, isAvailable, fact count, sample rule count), so it is unmistakable against siblings like lexq_domain_templates_apply or lexq_domain_templates_preview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions the tool in the workflow: "Call this before preview or apply to see which templates exist," naming both downstream siblings and the ordering that selects them. It does not state any when-not condition or what to do if isAvailable is false, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_domain_templates_previewPreview Domain TemplateA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
templateYesDomain template key (e.g. ECOMMERCE). Use lexq_domain_templates_list to see the keys.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so 'read-only dry run; nothing is created' is largely reinforcement. However the description adds behavior the annotations cannot express: the P-061 failure mode on apply, the factConflicts gating condition (type / allowed-value / range mismatches), and that plan is null for a non-applicable template. That failure and precondition disclosure is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then the return contents, then the conflict precondition and error behavior in a logical order. Every sentence carries information, though the factConflicts sentence is dense and slightly run-on with its stacked 'or with different ... or a different' clauses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden — and it does, naming fact definitions with value domains, sample rules with descriptions, the apply plan, factConflicts, and the null-plan case. Combined with the P-061 gating rule, an agent has everything needed to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, with the schema itself documenting that it is a domain template key and pointing at lexq_domain_templates_list for valid values. The description adds no further semantics about the template parameter, so baseline 3 applies. The allowed-values/range detail it does provide concerns output shape, not input meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Preview exactly what a domain template will provision') and defines the scope as a pre-apply dry run, which cleanly separates it from the mutating sibling lexq_domain_templates_apply. The second sentence enumerates what the preview contains, so an agent knows what it gets back without opening anything else.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is clearly framed as a step taken 'before applying it' and the description states the exact precondition for the mutating path ('While it is not empty, apply fails with P-061 ... delete those facts or change them to match the template, then apply'). It does not explicitly name lexq_domain_templates_apply or lexq_domain_templates_list as the paired tools, relying on the schema description for key discovery, so it stops short of full explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_dry_runDry RunB
Read-only
Inspect

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 a limit of 60 evaluations per minute for each organization; a compare counts as two. Past the limit, a call fails with 429 (C-007) until the next minute starts.

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" } }

NameRequiredDescriptionDefault
factsYesJSON string of facts object, e.g. {"paymentAmount":100000}
versionIdYesPolicy version ID to test against
includeDebugInfoNoInclude execution and decision traces

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description genuinely adds operational behavior the annotations cannot express: no billing or plan-usage consumption, a shared 60 evaluations/minute per-organization limit with compares counting as two, and a 429 (C-007) failure mode until the next minute. Those are solid additions, but the returns block largely duplicates the kind of information an output schema would carry, and it omits the state after failures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, followed by the billing/rate-limit caveats and then a clearly labeled returns breakdown, which is a sensible ordering. The returns list is dense but earns its place given there is no output schema; the trailing example is the weakest part because it conflicts with the schema rather than clarifying it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining the response, and it does so thoroughly, including non-obvious details like the paired {factName}__delta keys in generatedVariables and the SELECTED / NO_MATCH / BLOCKED decision states. Rate limits, billing exemptions, and the 429 error code round out the operational picture. What is missing is the path to a valid versionId and whether input facts must be registered first.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents versionId, facts, and includeDebugInfo, which would normally justify a baseline 3. The description's only parameter-level contribution is the example input, and that example renders 'facts' as a nested JSON object while the schema types it as a string containing JSON — an inconsistency an agent could easily follow into a validation failure. Because the added material is misleading rather than merely redundant, it falls below the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: execute a single dry run against a policy version and see how rules evaluate given input facts without side effects. 'Single dry run' implicitly contrasts with the sibling lexq_dry_run_compare, and the rate-limit sentence names compares and single-decision replays, so an agent can distinguish the family. It stops short of an explicit one-line distinction from those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'without side effects... not billed and not counted toward the plan's usage' framing implies when to reach for this tool rather than a live evaluation. However, it never states when to prefer lexq_dry_run_compare or lexq_replay_decision, nor any prerequisites such as whether facts must be pre-registered (the presence of lexq_facts_unregistered suggests a real prerequisite worth naming).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_dry_run_compareDry Run CompareA
Read-only
Inspect

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 a limit of 60 evaluations per minute for each organization; a compare counts as two. Past the limit, a call fails with 429 (C-007) until the next minute starts.

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

NameRequiredDescriptionDefault
factsYesJSON string of facts object
versionIdAYesBaseline version ID
versionIdBYesCandidate version ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already state that this is a read-only, non-destructive, closed-world call, and the description adds genuinely new behavioral facts: it is not billed, does not count toward plan usage, shares a 60-evaluations-per-minute org limit, costs two evaluations per compare, and fails with 429 (C-007) past the limit. That is concrete context the annotations cannot convey. It stops short of explaining failure modes such as version-not-found behavior, which keeps it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose comes first, followed by cost, rate limits, and a structured Returns block. Every section is useful, especially the Returns block, since no output schema exists. The rate-limit paragraph is dense but earns its place given the 429 behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description explains the return shape: full DryRunResponse for each version plus mutatedFacts and generatedVariables diffs keyed by field. Combined with billing and rate-limit disclosure, an agent has everything needed to call this correctly and interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents all three parameters at 100% coverage, including 'Baseline version ID' and 'Candidate version ID', so the baseline is already set. The description adds only that both versions are fed the same facts string, which clarifies intent but does not add syntax or format detail beyond the schema. This is the baseline-three case described in the rubric.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Compare dry run results between two versions using the same input facts.' This clearly distinguishes a diff-style operation from the single-version sibling lexq_dry_run, but the distinction is implied rather than stated by naming the alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for validating changes' gives an implied context for use, and the rate-limit paragraph explains the operational ceiling. However, the description never says when to prefer this over lexq_dry_run or lexq_deploy_diff, and it gives no prerequisites such as whether both versions must share a ruleset.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_facts_action_metadataGet Action Runtime Fact MetadataA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and destructiveHint already covering safety, the description adds real value: it explains that required facts absent at runtime throw and that the engine never defaults to 0, cites P-015 and ACT-032, and explicitly marks the data as static and cacheable in-session. It stops short of describing the response shape, which matters since there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence and each subsequent sentence contributes a distinct rule (conditional facts, no-default behavior, P-015, SET_FACT exemption, caching). It is dense with internal error codes and jargon, but no sentence is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only metadata lookup with no output schema, the description supplies enough for correct use: what is returned conceptually, the meaning of factRequired, and the failure mode. The remaining gap is the literal structure of the returned data, which an agent must discover at call time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema carries no semantic load and the baseline of 4 applies. The description correctly does not invent parameter guidance, instead spending its words on output semantics such as the factRequired flag and conditional refVar behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Retrieve runtime fact requirements per Action type') and elaborates on the exact content returned: which input facts must be present per action, with MUTATE_FACT and SET_FACT as concrete examples. It does not name sibling tools such as lexq_facts_list or lexq_requirements to disambiguate, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent infers it should call this to learn which facts a payload must carry. The only explicit guidance is 'Static data, safe to cache in-session', with no mention of when to prefer a sibling lookup or any preconditions for calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
keyYesVariable key. Any casing; must start with a letter.
nameYesDisplay name
typeYesValue type
isPiiNoMark as PII — masked on every read surface, revealable only in the console (audited)
isRequiredNoisRequired is stored on the definition only; the engine does not read it.
descriptionNoDescription
valueDomainNoWhich values this fact accepts. Omit for no value domain. STRING and LIST_STRING take allowedValues only; NUMBER and LIST_NUMBER take all three; BOOLEAN takes none. Declaring it lets the rule editor offer a dropdown and rejects a rule literal that could never match.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds nothing behavioral beyond that: it does not say what happens when the key already exists (reject vs overwrite), whether the new definition is immediately active for rules or requires a publish step, or what is returned. For a mutation tool in a versioned rule engine, that missing lifecycle context is a real gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded, with the core action in the first sentence. However, the second and third sentences are pure duplication of the schema's regex pattern and type enum, so those sentences do not earn their place. Trimming them would free room for the lifecycle information that is actually missing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Seven parameters, a nested valueDomain object, and no output schema make this a moderately complex definition. The rich schema compensates for most of the description's silence, but the description never touches the PII flag, the value domain, or how the created fact interacts with rules and versions. Adequate as a label, thin as guidance for a schema of this depth.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents every parameter thoroughly, including the valueDomain type-constraint matrix and the isRequired caveat that the engine ignores it. The description's key pattern and type enum merely restate what the schema already encodes, adding no new meaning. Baseline 3 applies because the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb and resource: "Register a new input variable." That is clear enough to act on, though it uses "input variable" while the tool name says "Fact Definition," and it never names the sibling it is distinct from (lexq_facts_update for existing definitions, lexq_facts_list for reading them). Purpose is clear but not differentiated from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all — nothing says to use this only for definitions that do not yet exist, or to call lexq_facts_update for existing ones. No prerequisites are stated, such as whether a draft version must exist or which scope the new fact lands in. The agent must infer the create-vs-update boundary purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_facts_deleteDelete Fact DefinitionA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
factIdYesFact definition ID

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations' destructive operation signal, the description discloses referential-integrity blocking, the FD-006 failure code, the reported reference count, and the deleted-group exception. These are substantial failure and scope details that help an agent predict and handle the call's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the operation and uses short sentences for the restrictions, error behavior, exception, and remedy. Every sentence earns its place, with no filler or repetition of structured parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with one required parameter, it covers the resource, deletion blockers, precise failure behavior, an important exception, and the corrective action. Together with the complete parameter schema and destructive annotations, this is sufficient for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the sole factId parameter, including its purpose and UUID constraints. The description adds no further parameter meaning, so the high schema coverage supports the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states the exact operation and resource: deleting a fact definition. This clearly distinguishes the tool from fact creation, update, and listing siblings, as well as from the rule and group deletion tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-not conditions: system facts and facts referenced by applicable rules cannot be deleted. "Remove the references first" supplies the prerequisite remediation, while the deleted-group exception clarifies which references matter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_facts_exportExport Fact CatalogA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
formatNoExport formatcsv
keywordNoFilter by key or name

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/non-destructive/closed-world, so the safety profile is covered. The description still adds real context the annotations don't: the return is file contents as text, the export is capped and refused above 100,000 characters, and CSV omits value domains while JSON omits IDs — exactly the kind of content-shape detail an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, purpose front-loaded, followed by the format-difference detail and the size limit. No filler, though the dense clause listing JSON fields is slightly hard to parse in one read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly states the return is raw file text, and it discloses the size cap. What's missing is any guidance on recovering from the 100,000-character refusal, which matters for a tool whose only filter is keyword.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3, but the description goes well beyond the terse 'Export format' field by spelling out exactly what each enum value contains and excludes. The keyword parameter is not mentioned in the description, but the schema documents it adequately ('Filter by key or name').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Export the fact catalog,' which an agent can distinguish from the sibling read tools like lexq_facts_list. It does not explicitly name which sibling it differs from (e.g., lexq_facts_list vs. the other *_export tools), so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful selection guidance between the two formats ('for reading in a spreadsheet' vs. 'only the fields a new definition takes'), which implies the JSON export feeds definition creation. However, it never states when to use this tool instead of lexq_facts_list or how to handle the 100,000-character refusal (e.g., narrow with keyword), leaving the when-not to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_facts_listList Fact DefinitionsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size
keywordNoSearch keyword

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that the operation is read-only and non-destructive. The description adds the returned fields and the non-obvious caveat that isRequired is stored only on the definition and ignored by the engine, though it does not clarify that the catalog is accessed through paginated responses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences front-load the operation and resource, enumerate the relevant definition fields, and then state a focused semantic caveat. There is no filler or unnecessary repetition of the input schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter read, the schema and annotations cover basic invocation and safety, while the description supplies result content and an important domain caveat. It is nearly complete, but the unqualified "all" alongside paginated inputs could lead an agent to expect the entire catalog in one call, and sibling selection remains unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with page, size, and keyword already documented, so the baseline of 3 applies. The description adds no further detail about pagination defaults, result limits, or keyword matching.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening "List all fact definitions" provides a clear verb and resource, while "input variable schema" clarifies what the definitions represent. It does not explicitly differentiate this tool from siblings such as lexq_facts_unregistered or lexq_facts_action_metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The wording implies use when inspecting the fact-definition catalog, but provides no explicit when-to-use or when-not-to-use guidance. It does not explain when keyword filtering is useful or when a sibling such as lexq_facts_unregistered is more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_facts_unregisteredList Unregistered FactsA
Read-only
Inspect

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).

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and non-destructive status, so the description uses its space well by disclosing behavior the annotations cannot: the ACT-032 rejection path at save/publish, the fact that read-only references do not block deployment, and the downstream effect that registering before publish enables P-060 type checks and P-052 domain checks. This is exactly the kind of publish-gating rule an agent cannot infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence front-loads what the tool returns and its read-only nature, followed by the operational consequence and then the shape of each entry. It is dense with domain jargon (ACT-032, P-060, P-052) but every clause carries behavioral information; only minor tightening would improve it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description compensates by describing each entry (inferred type, suggested name, reference location in condition/action), which is exactly what an agent needs to interpret results. Combined with the publish-blocking semantics and the follow-up registration path, nothing essential for calling this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both required parameters (groupId, versionId) are already documented in the schema with UUID formats. The description only adds the scoping note that the result is version-wide across every rule, which is useful but not parameter-level enrichment beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List facts referenced by a version's rules but not yet defined') and explicitly scopes it to the version, which separates it from the sibling lexq_facts_list of registered facts. An agent can tell what it returns and what it does not return without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use context: unregistered read keys do not block publish/deploy, while an unregistered action targetVar causes rejection at save/publish with ACT-032, and it points to lexq_facts_create as the follow-up action. It stops short of explicitly naming lexq_facts_list as the alternative for already-registered facts, so the routing is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_facts_updateUpdate Fact DefinitionA
Destructive
Inspect

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).

NameRequiredDescriptionDefault
nameNoDisplay name
typeNoValue type. Omit to leave it unchanged. Changing it fails with FD-007 while any rule outside a deleted group references the fact.
isPiiNoPII flag — enables/disables masking (changeable even on system facts)
factIdYesFact definition ID
isRequiredNoisRequired is stored on the definition only; the engine does not read it.
descriptionNoDescription. Send "" to remove it.
valueDomainNoWhich values this fact accepts. Three states: omit the field to leave the value domain alone, send {} to remove it, or send a populated object to replace it. Narrowing it never blocks the update and does not rewrite rules. When rules compare this fact with a value the new value domain excludes, the result ends with a warning that lists them by version: drafts and the versions currently deployed.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the mutation-oriented annotations, it discloses patch semantics, key immutability, the reference-dependent FD-007 failure and reported count, the deleted-group exception, and system-fact FD-003 behavior. These details materially affect whether and how a call succeeds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six compact sentences move from the core operation to general update semantics and then special cases. The text is dense but contains no filler, and the most important constraints are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Together with the fully documented schema, the definition covers partial updates, nested value-domain behavior, reference constraints, error codes, and system-fact exceptions. Despite the absence of an output schema, no significant ambiguity remains about how to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema description coverage is 100%, the description adds general send-only-fields patch behavior and a consolidated account of which system-fact fields are mutable, ignored, or type-restricted. Some of the type-change guidance repeats the schema, so the added value is strong but not entirely novel.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening “Update a fact definition” supplies a specific verb and resource, clearly distinguishing the operation from sibling fact creation, deletion, and listing tools. The remaining sentences stay focused on the behavior of modifying an existing definition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear situational guidance for partial updates, type changes, and system facts, including when calls fail or fields are ignored. It does not explicitly route agents to an alternative such as lexq_facts_create when a new definition is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
nameYesGroup name (unique among non-ARCHIVED)
descriptionNoGroup description
activationModeNoConflict resolution mode
executionLimitNoHow many policy groups sharing this activationGroup may run (required when mode is MAX_N). Counts groups, not rules: every rule of a winning group runs.
activationGroupNoActivation group (Execution Group) cluster key. Policy groups sharing this key compete, and group priority picks the winners.
activationStrategyNoRanking used to pick the winning groups when mode is EXCLUSIVE or MAX_N

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the non-destructive, non-open-world annotations, it discloses non-obvious behavior: priority is auto-assigned and appended last tenant-wide, groups sharing an activationGroup form a constrained cluster, and a hard limit of 20 non-ARCHIVED groups applies. What is missing is whether cluster-field mismatches fail the call or what the response returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The creation statement and required field are front-loaded, followed by ordering, cluster constraints, and the quota. It is dense but nearly every clause carries operational consequence; the cluster/quota material could be tightened into one sentence without losing content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers prerequisites, ordering side effects, cluster invariants, and quota pressure, which is most of what an agent needs. The remaining gap is failure behavior and any returned identifier, which the description never mentions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema by explaining that executionLimit counts groups rather than rules and that a shared activationGroup imposes shared activationMode/activationStrategy/executionLimit. It does not clarify defaults for activationMode or when activationStrategy is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Create a new policy group') and immediately names the required field, so it is unambiguous against siblings such as lexq_groups_update, lexq_groups_delete, and lexq_groups_list. An agent can route to it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly redirects ordering work to lexq_groups_reorder and tells the agent to archive unused groups when hitting the 20-group cap, which is actionable guidance. It stops short of stating when to prefer this over lexq_groups_update or what the cluster consequences are for choosing activationGroup values.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_groups_deleteDelete Policy GroupA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already flag destructiveHint=true, but the description adds genuine context beyond them: irreversibility, immediate name reuse, disappearance from lexq_groups_list, 409 P-059 responses for subsequent mutating calls, and the audit-retention versus 30-day permanent-deletion distinction. None of this is recoverable from the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical constraint and irreversibility warning are front-loaded, and each sentence carries distinct information. The enumeration of every mutating call type that returns 409 P-059 is somewhat dense, but it is not wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with no output schema, the description covers preconditions, side effects, error behavior, and post-deletion visibility and retention. Nothing material an agent needs before invoking it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single groupId parameter, so the schema already carries the parameter meaning. The description adds no further detail about the ID (e.g., where to obtain it), so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource, "Delete (archive) a policy group," and immediately clarifies the archive semantics, which distinguishes it from lexq_groups_update and lexq_groups_list. An agent can identify the operation without consulting the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states an explicit precondition and exclusion (a deployed group cannot be deleted, P-020) and names the alternative tool to use instead (lexq_deploy_undeploy), including the side effect that undeploying ends a running A/B test. This is exactly the when-not-plus-alternative guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_groups_getGet Policy GroupA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this as a safe, closed-world read, so the bar is lower; the description goes further by naming three returned fields and explaining what each means for rollback. It still doesn't characterize the rest of the returned group object, but the key behavioral context is supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and followed by the field-level context that justifies the call. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read with full annotation coverage, the definition is nearly sufficient; the only gap is that no output schema exists and the description names just three return fields rather than sketching the whole group payload. That is a minor shortfall for such a simple getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter with 100% schema description coverage ("Policy group ID"), so the schema carries the semantics and baseline 3 applies. The description only restates "by ID" and adds no format, sourcing, or lookup guidance beyond the UUID pattern already declared.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get a single policy group by ID" gives a specific verb (get), resource (policy group), and scope (single, by ID), which cleanly separates it from lexq_groups_list, lexq_groups_update, and lexq_groups_create. An agent can pick it out without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a usage path by tying currentVersionId/currentDeploymentId to lexq_deploy_rollback, hinting this is the lookup step before a rollback. It never states when to prefer it over lexq_groups_list or any exclusions, so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_groups_listList Policy GroupsA
Read-only
Inspect

List policy groups (tenant-wide, priority ASC). Deleted groups are not included.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and a closed-world scope, so the safety profile is covered. The description adds genuinely useful behavior beyond that: results are tenant-wide, sorted by priority ascending, and soft-deleted groups are omitted. It omits pagination or result-size behavior, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the scope and ordering constraint is front-loaded in the parenthetical and the exclusion rule follows. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list with no output schema, the description covers scope, ordering and filtering, which is most of what an agent needs to call it. It does not describe the shape of a returned group or whether results are paginated, a minor gap given there is no output schema to fall back on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline for a no-parameter tool applies; the description correctly spends no words on input semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List policy groups') plus scope ('tenant-wide') and ordering ('priority ASC'). It is clearly a list operation distinct from lexq_groups_get or lexq_groups_create, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and the word 'List', and the parenthetical clarifies scope, but there is no explicit when-to-use versus lexq_groups_get or when-not guidance. An agent can infer the routing but must do so itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_groups_reorderReorder Policy GroupsA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
groupIdsYesGroup IDs in desired priority order (index 0 = priority 1)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the bar is lower. The description does add valuable context beyond them: priority is tenant-wide and flat (1...N continuous), which explains the blast radius of the mutation, and activationGroup is explicitly left untouched. It still does not say what happens to groups omitted from the array, whether the list must be exhaustive, or the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, all load-bearing: the action, the ordering convention, and the scope exclusion. The most decision-relevant fact (index 0 = highest precedence) is front-loaded with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive mutation with no output schema, the definition covers the core semantics: ordering convention, tenant-wide flat numbering, and what is not changed. Remaining gaps are exhaustiveness of the array and any permission/response details, which keep it just short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already states 'index 0 = priority 1'. The description reinforces this and adds the meaningful constraint that priority is tenant-wide and continuous 1...N, hinting the array must be complete, but it never states that requirement outright or covers validation failures for partial lists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Reorder policy groups by priority') so the operation is unambiguous. It does not explicitly distinguish itself from nearby siblings such as lexq_rules_reorder (rules vs. groups) or explain why lexq_groups_update cannot achieve the same result, so sibling differentiation is only implied by the resource name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the agent can infer this is the tool for changing precedence, and the note that activationGroup is unaffected scopes the call. There is no explicit when-to-use/when-not guidance, no alternative named, and no statement of prerequisites such as permissions or whether every tenant group must be supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_groups_updateUpdate Policy GroupA
Destructive
Inspect

Update a policy group. Only provided fields are updated; omitted fields remain unchanged. A deleted group cannot be updated (409 P-059).

NameRequiredDescriptionDefault
nameNoNew name
statusNoDISABLED stops production execution of this group: execution calls return 403 (P-009), and a composite call that includes the group is rejected in full. The deployed version and any A/B test are kept, and dry run, Impact Simulation, and Decision Replay keep working, so a fix can be verified before setting ACTIVE again. To go back to the previous version, use lexq_deploy_rollback. To take the version out of production, use lexq_deploy_undeploy.
groupIdYesPolicy group ID
descriptionNoNew description
activationModeNoConflict resolution mode
executionLimitNoHow many policy groups sharing this activationGroup may run. Counts groups, not rules.
activationGroupNoActivation group (Execution Group) cluster key. Policy groups sharing this key compete, and group priority picks the winners.
activationStrategyNoRanking used to pick the winning groups

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavior: PATCH-style semantics (omitted fields unchanged) and a specific failure mode with status code 409 / P-059 for deleted groups. It does not say whether an update takes effect in production immediately or requires a republish, which matters for a destructive flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then the update semantics, then the error condition. No filler, no repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an eight-parameter mutation tool with no output schema, the definition covers the core semantics (partial update, deleted-group rejection) and the schema richly documents every field. The remaining gap is what a successful call returns and whether changes are staged or live, which an agent would want before invoking a destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the meaning of all eight parameters, including the detailed DISABLED side effects, enum values, and executionLimit bounds. The description body itself adds nothing parameter-specific, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Update a policy group" states a specific verb and resource, and the partial-update sentence clarifies the mutation model. It does not distinguish this from its obvious siblings (lexq_groups_create, lexq_groups_delete, lexq_rules_update); that differentiation only appears incidentally in the status parameter description via the rollback/undeploy pointers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (partial edits; omit fields to leave them unchanged) and gives one hard precondition (deleted group returns 409 P-059). It never states when to prefer a different tool, e.g. lexq_deploy_rollback or lexq_deploy_undeploy for production changes, which are only mentioned inside the status enum description rather than as routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_history_getGet Execution DetailB
Read-only
Inspect

Get full execution detail including inputFacts, mutatedFacts, generatedVariables, executionTraces, and decisionTraces.

NameRequiredDescriptionDefault
traceIdYesTrace ID from execution history

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description's contribution is enumerating the returned sections, which is useful given there is no output schema, but it says nothing about payload size, whether traces can be truncated, or behavior when a traceId is unknown or expired.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and scope, with zero filler. The enumerated field list is dense internal jargon but each item conveys real information about the response shape, so it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full annotation coverage, the main missing piece was the return payload, which the field list supplies. Still absent are any failure modes (invalid or expired traceId) and the relationship to lexq_history_list and lexq_provenance_get, which an agent choosing among ~70 siblings would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single required traceId parameter whose schema description already explains its origin. The description adds no further meaning about the ID format or scope, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get') and resource ('full execution detail') and enumerates the exact payload sections returned (inputFacts, mutatedFacts, generatedVariables, executionTraces, decisionTraces). This clearly separates it from lexq_history_list at a conceptual level, though it never names the sibling to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the alternative lexq_history_list or lexq_provenance_get. The only hint that this is a follow-up call is the schema note that traceId comes 'from execution history', which lives in the schema rather than the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_history_listList Execution HistoryB
Read-only
Inspect

List policy execution history. Shows trace ID, group, version, status, match result, and latency.

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size
statusNoFilter by execution status
endDateNoEnd date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts.
groupIdNoFilter by policy group
traceIdNoFilter by trace ID
startDateNoStart date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive.
versionIdNoFilter by version

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description's added value is the enumeration of returned fields, which compensates for the absent output schema, but it says nothing about ordering, pagination limits, or result volume.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the useful return-field summary. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 optional parameters and no output schema, listing the returned fields is a meaningful completeness contribution. However, guidance on combining filters, default paging behaviour, or how to retrieve full details after finding a trace is missing for a tool of this breadth.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including detailed semantics for startDate/endDate (tenant time zone, inclusive whole days) and the status enum, so the schema carries the parameter burden. The description adds no filtering or pagination meaning beyond it, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List policy execution history') and enumerates the fields returned (trace ID, group, version, status, match result, latency). That is clear enough to separate it from a detail fetcher, but it never contrasts itself with siblings like lexq_history_get or lexq_history_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no mention of the closely related siblings (lexq_history_get for a single record, lexq_history_stats for aggregates). The agent must infer that this is the paginated, filterable list endpoint purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_history_statsExecution StatisticsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
endDateNoEnd date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts.
groupIdNoFilter by policy group
startDateNoStart date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful non-annotation behavior: the default rolling window, the 31-day cap, and the specific error code AN-039 for over-long ranges. It stops short of describing result shape or what happens when endDate precedes startDate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, and the most decision-relevant facts (what KPIs, default window, range cap) are front-loaded. Nothing needs re-reading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly takes on the burden of naming the returned metrics, and it covers the temporal edge cases an agent is most likely to hit. It is nearly complete for a read-only stats tool; the only gap is clarifying the result type of the aggregate fields or ordering behavior, which is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (startDate, endDate, groupId) are already documented, including the time-zone semantics the description restates. What the description genuinely adds is the defaulting behavior when dates are omitted and the cross-parameter 31-day span constraint, which is not expressible in the schema — modest but real added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ("Get execution KPIs") and enumerates the exact metrics returned: total executions, success/failure counts, success rate, and average latency. It does not explicitly distinguish itself from aggregate-adjacent siblings like lexq_history_list or lexq_logs_list, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operating context: with no dates the default window is the last 30 days through today in the organization time zone, and startDate alone runs through today. It also states the hard limit (31 days per call) and the rejection behavior (AN-039), though it never points to an alternative sibling for longer ranges or raw per-execution data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_logs_getGet Failure LogA
Read-only
Inspect

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).

NameRequiredDescriptionDefault
logIdYesFailure log ID

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint, non-destructive, and closed-world, so the description is not responsible for the safety profile. It adds genuinely useful behavior beyond them: the hard capability limit (no resolve/ignore) and the human escalation route with an exact console path. It omits what the returned detail contains or what happens on an invalid/unknown ID.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the operation, followed by the capability limit and escalation target. The full URL is somewhat verbose but earns its place as an actionable pointer for an agent that must redirect the user.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with a complete schema and rich annotations, the description covers purpose, limits, and escalation. The remaining gap is minor: it never indicates what the returned 'failure log detail' comprises, which would matter since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only one parameter at 100% schema description coverage (including a UUID format and pattern constraint), the schema fully documents logId. The description's 'by ID' adds essentially nothing beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get failure log detail by ID'), which clearly separates it from the list-style sibling lexq_logs_list. It stops short of naming that sibling explicitly, so the differentiation relies on the agent inferring 'by ID' vs. listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage boundary: this tool reads logs but cannot resolve or ignore them, and it names the escalation path (org admin via the LexQ console URL). It does not explicitly say when to prefer it over lexq_logs_list, but the read-only-by-ID framing makes that implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_logs_listList Failure LogsA
Read-only
Inspect

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).

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size
statusNoLog status
endDateNoEnd date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts.
keywordNoSearch in refId, refSubId, errorMessage
taskTypeNoTask type
startDateNoStart date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful behavior the annotations do not: the implicit 7-day lookback window evaluated in organization time zone, and the fact that resolving or ignoring is not possible here. It says nothing about pagination behavior or result volume, so it stays a middle score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scoping statement comes first, followed by the default window and then the alternative location, so the most decision-relevant information is front-loaded. The console URL is somewhat bulky but earns its place by giving an actionable path for the operation this tool cannot perform.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only paged list tool with full schema coverage, the description covers the key gaps: default time window, time zone semantics, and the read-only limitation. However, with no output schema present, it never characterizes the return shape (log fields, ordering, or what pagination metadata comes back), so an agent cannot anticipate results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so page, size, status, keyword, taskType, and the date fields are all already documented in the schema. The description contributes only the implicit date-window semantics for omitted dates and the nudge toward startDate, which the schema itself does not state; that is marginal added meaning against a fully documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource ('List system failure logs') plus the scope of what produces them (platform event webhooks, scheduled deployments), which immediately distinguishes it from the singular sibling lexq_logs_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the default behavior when no dates are supplied and explicitly tells the agent to pass startDate to reach further back, which is real when-to-use guidance. It also rules out mutation by directing resolution to the console, but it never names a sibling tool or covers when to prefer a single-log lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_pii_reveals_listList PII Reveal AuditsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size
endDateNoEnd date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts.
factKeyNoFilter by fact key (partial match, case-insensitive)
traceIdNoFilter by trace ID (exact match)
startDateNoStart date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive.
revealedByNoFilter by operator ID (exact match)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly=true, destructive=false and a closed world, so the safety profile is covered. The description adds genuinely non-obvious behavior beyond that: the ledger is metadata only and revealed values are never stored or returned, which tells an agent the response cannot leak secrets. Pagination and retention behavior are still unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the scope and the key distinction (the ledger itself versus the revealed values) front-loaded. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-required-parameter list tool with fully documented filters and a rich privacy statement, an agent has enough to call it correctly without an output schema. Return-field detail is absent, but the description's "who revealed which fact of which trace, and when" implicitly sketches the record shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the careful note that startDate/endDate are whole calendar days in the organization time zone rather than UTC. The description adds no filter semantics of its own, so the baseline 3 for schema-carried parameters applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List the PII reveal audit ledger — who revealed which fact of which trace, and when" names a specific verb, a specific resource, and even enumerates the record shape (actor, fact, trace, timestamp). That detail makes it practically impossible to confuse with nearby list tools such as lexq_logs_list or lexq_history_list, even without an explicit sibling callout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use for monthly access-log inspection and SIEM collection" gives concrete usage contexts, which is exactly the 4-level bar of clear context without exclusions. It does not say when to pick this over lexq_logs_list or note that it is not a substitute for general history queries, so it stops short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_profile_overviewGroup Latency ProfileA
Read-only
Inspect

Per-rule latency profile of a policy group over a time window: group TOTAL distribution split by cache state (HIT = compiled ruleset cache hit, MISS = deep-load + compile), 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 deterministic 1% sample of calls; TOTAL is recorded for every call. Defaults: last 24h, live version, cacheState HIT.

NameRequiredDescriptionDefault
toNoWindow end, ISO-8601 instant. Default: now
fromNoWindow start, ISO-8601 instant (e.g. 2026-07-01T00:00:00Z). Default: 24h ago
groupIdYesPolicy group ID
versionIdNoVersion to inspect (default: live version)
cacheStateNoCache dimension for the rule table and judgment (default: HIT)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/non-destructive annotations, the description discloses genuinely non-obvious behavior: rule detail comes from a deterministic 1% sample while TOTAL is recorded for every call, percentiles are withheld unless n×(1−q) ≥ 3, and baselines return INSUFFICIENT_COHORT under 3 qualifying rules. That is strong disclosure; a small gap remains on pagination/response shape, which is partly covered by the output enumeration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and its three output components, then gated details. Dense and jargon-heavy but nearly every clause (cache-state semantics, gate formulas, sampling) carries actionable information; the parenthetical arithmetic is verbose but purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the burden of describing returns and does so: distribution shape, table contents, flags, null-percentile semantics and cohort failure state. For a read-only analytics tool with five parameters, an agent has enough to call it and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already carries the defaults (now, 24h ago, live version, HIT), so the description's 'Defaults:' sentence largely repeats structured data. It does add the sampling distinction between TOTAL and rule-level data, which helps interpret cacheState and the window, but adds little per-parameter meaning beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource phrase: 'Per-rule latency profile of a policy group over a time window,' and enumerates the outputs (TOTAL split by cache state, per-rule CONDITION/ACTION percentile table, slow-rule flags). It is clearly distinct from a per-rule tool, but it never names lexq_profile_rule, leaving the sibling boundary to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through defaults ('last 24h, live version, cacheState HIT') and gate conditions (n≥100 judgment gate, INSUFFICIENT_COHORT). Nothing states when to choose this over lexq_profile_rule or how to widen the window if a percentile is withheld; the agent must reason that a null p99 means increasing the time range.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_profile_ruleRule Latency DetailA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
toNoWindow end, ISO-8601 instant. Default: now
fromNoWindow start, ISO-8601 instant. Default: 24h ago
ruleIdYesRule ID (from lexq_profile_overview)
groupIdYesPolicy group ID
versionIdNoVersion to inspect (default: live version)

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/non-destructive, and the description goes well beyond them with substantive behavior: missing windows are genuine gaps and are never interpolated, series points carry each window's own values rather than being aggregated, percentiles are withheld as null unless n×(1−q) ≥ 3 (with concrete thresholds p50 ≥ 6, p95 ≥ 60, p99 ≥ 300), and 'flagged' means p50 ≥ 10× the median of per-rule p50s within the group. It even states a deliberate non-feature — absolute thresholds are intentionally unsupported — which prevents a whole class of misuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the identity of the tool and its output shape, then progressively narrower caveats. Each clause carries real information — no filler or restated name. It is very dense in the back half (percentile gating thresholds and the flagged rule packed into single clauses), which slightly hurts scanability, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain the return payload — and it does, covering both merged distributions and the per-window series, null semantics, gap handling, and the flagged marker. With all parameters documented and safety covered by annotations, an agent has everything needed to call this correctly and interpret the result. Only minor omissions (range limits, series point limits) remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter (from/to defaults, ruleId provenance, groupId, versionId defaulting to live) is already documented in the schema itself. The description contributes no additional parameter-level meaning — it does not mention time-range defaults, the live-version default, or any constraint on window length versus range. Baseline 3 applies when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause names the resource precisely — single-rule latency detail — and enumerates the two payload shapes returned: merged phase × cacheState distributions and a 60s-window time series. The word 'single-rule' implicitly separates it from the aggregate/overview sibling, and 'ruleId (from lexq_profile_overview)' reinforces that relationship. It lacks an explicit verb and never names the alternative tool to use when a whole group is wanted, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: by calling itself 'single-rule' it hints you should not use it for group-level or multi-rule analysis, and the parameter hint points to lexq_profile_overview as the way to discover ruleId. There is no explicit when-to-use / when-not-to-use statement, no guidance on choosing time ranges, and no mention of what tool to reach for instead for aggregate views.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_provenance_getGet Decision ProvenanceA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
traceIdYesTrace ID of the execution

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read profile, yet the description adds real context the annotations cannot: PII facts are masked as ••••••, maskedKeys lists which keys were masked, and values are revealable only in the console under audit. That is exactly the kind of access-control caveat an agent needs and cannot get from readOnlyHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the resource stated first, followed by an ordered list of returned components. It is dense but every clause carries information; the masking parenthetical is the only slightly heavy insertion, and it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return shape, and it does so by enumerating the five provenance components. Combined with the annotations covering safety and the one-input schema, an agent has enough to call it correctly; only the traceId acquisition path is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter and schema coverage is 100%, with 'Trace ID of the execution' already documented in the schema. The description adds no format, sourcing, or acquisition guidance for the traceId (e.g. where to obtain one), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get the lineage of a single decision'. The enumerated return contents (why per rule, input facts, responsibility chain, rule snapshot fingerprint) make the scope concrete. It does not name the nearest siblings (e.g. lexq_history_get, lexq_logs_get), so differentiation is left implicit, keeping it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'a single decision' plus the required traceId implies this is the per-execution drill-down rather than the list/aggregate tools, but it never says so explicitly. No when-not-to-use condition or alternative is offered, so the agent must infer routing from the sibling names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_replay_cancelCancel Replay JobA
Destructive
Inspect

Cooperatively cancel a PENDING or RUNNING window replay job. Other states are rejected. VIEWER role cannot cancel.

NameRequiredDescriptionDefault
jobIdYesReplay job ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the write/destructive profile is covered structurally. The description adds real behavioral context beyond that: cancellation is cooperative, is state-gated, and is blocked for VIEWER role — auth and eligibility facts an agent could not infer from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and its scope, followed by the state rejection rule and the role restriction. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, the key eligibility and permission facts are present. It omits what the final job state becomes and whether already-processed windows are retained, which would fully close the loop on a destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already carries the meaning of jobId. The description only reinforces that the ID refers to a replay job, adding no format, sourcing, or lookup guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('cancel') and resource ('window replay job'), plus the state scope where it applies. It does not explicitly distinguish itself from the sibling lexq_simulation_cancel, but the replay-vs-simulation naming keeps them separable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the conditions under which cancellation is valid ('PENDING or RUNNING') and that other states are rejected, which tells the agent when not to call it. It stops short of naming an alternative tool or what to do instead when the state is invalid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_replay_decisionReplay a DecisionA
Read-only
Inspect

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 a limit of 60 evaluations per minute for each organization; a compare counts as two. Past the limit, a call fails with 429 (C-007) until the next minute starts. A replay sends no webhook, notification, or event: rule actions produce no outward effects.

NameRequiredDescriptionDefault
traceIdYesTrace ID of the past execution to replay
candidateVersionIdYesVersion to re-evaluate against

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and non-destructive annotations, it discloses synchronous execution, no billing or plan-usage consumption, a shared organization-level rate limit, compare weighting, and the 429/C-007 failure and reset behavior. It also explicitly guarantees no webhooks, notifications, events, or other outward rule-action effects, consistent with openWorldHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and returned information are front-loaded, followed by concise operational details. Despite covering several behaviors, each sentence supplies actionable information without filler or unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool, the definition supplies everything needed for correct selection and invocation, including inputs, key outputs, execution mode, cost, throttling, and side-effect behavior. Naming the returned diff fields and determinism verdict is especially valuable because there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already explain their roles clearly. The description usefully places them in the replay workflow but adds no substantive format, validity, or selection guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description precisely states the operation: re-evaluate one past execution identified by traceId against a candidate version. It also distinguishes the result as a decision diff plus determinism verdict, while the references to past executions and single-decision replays help separate it from dry-run and broader replay siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The past-execution and candidate-version context clearly indicates when this operation applies, and 'Synchronous' sets an important usage expectation. It does not explicitly direct agents to lexq_dry_run, lexq_dry_run_compare, or lexq_replay_start when those alternatives are more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_replay_exportExport Replay ResultA
Read-only
Inspect

Export a COMPLETED window replay job. A running job is rejected — a partial result reads as the whole thing on the receiving end. 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.

NameRequiredDescriptionDefault
jobIdYesReplay job ID
formatNoExport formatjson

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare it is a safe read (readOnlyHint=true, destructiveHint=false); the description adds substantive behavior beyond that — the job must be in a completed state or the call is rejected, output is returned as text rather than a file handle, and exports over 100,000 characters are refused. These are exactly the failure modes an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the hard precondition, then the format comparison, then the return type and size cap — a sensible information hierarchy. It runs long for a two-parameter tool and the 'The two formats carry different things' clause is a throat-clearing lead-in to the more useful colon list, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly takes on the return contract (file contents as text) and the size ceiling that determines whether a call will succeed. Preconditions, format semantics, and limits are all covered, leaving nothing an agent needs in order to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns extra credit by explaining what each enum value actually yields: CSV carries the fixed-column effect blast radius, JSON carries nested changed samples and action parameters whose keys vary per tenant. That is decision-relevant meaning the schema's 'Export format' string does not convey; jobId itself is left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource — 'Export a COMPLETED window replay job' — and immediately scopes it to a state (completed) that distinguishes it from lexq_replay_status and lexq_replay_list. It also declares the payload shapes per format, so the agent knows exactly what artifact it gets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not ('A running job is rejected') and a clear decision rule for choosing between the two formats, including the non-obvious fact that JSON is not a superset of CSV. It does not name sibling tools (e.g., check lexq_replay_status first to confirm completion), which keeps it just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_replay_listList Replay JobsA
Read-only
Inspect

List window replay job history (reverse-chronological). Lightweight items — use lexq_replay_status for summary and changed samples.

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: results are ordered reverse-chronologically and items are intentionally lightweight (not full job payloads), which sets agent expectations about result shape. It does not mention how deep history goes or how pagination behaves, so it is not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler. The core purpose and ordering come first, and the disambiguation against the sibling follows, so the most decision-relevant information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, fully annotated, read-only list tool with complete schema coverage, this is close to sufficient: purpose, ordering, result weight, and the sibling alternative are all present. The only remaining gap is depth of history or pagination behavior, which an agent might want when the list is large.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (page, size with defaults and bounds), so the schema does the parameter work. The description contributes only the ordering context, not any meaning about page/size semantics, which is the expected baseline-3 outcome when the schema is already complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List window replay job history") plus the ordering guarantee (reverse-chronological), which an agent could not infer from the name alone. It also names a sibling, lexq_replay_status, so the tool is distinguishable within the replay tool family (start/status/cancel/export/decision/list).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use this for lightweight list items, use lexq_replay_status for summary and changed samples. That is a clear when-to-use-this-vs-that statement. It stops short of a full 5 because other plausible alternatives (lexq_replay_export for full payloads, or pagination guidance for large histories) are not addressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_replay_startStart Window Replay (Blast Radius)A
Destructive
Inspect

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.

NameRequiredDescriptionDefault
toYesWindow end date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts.
fromYesWindow start date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive.
maxRecordsNoSample cap (server default applies; hard cap 50k)
candidateVersionIdYesVersion to re-evaluate against

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=true and openWorldHint=false; the description adds materially new behaviour — the job is asynchronous, it is metered per replayed record under a REPLAY billing metric, and submission is role-gated. It leaves unexplained why the tool is flagged destructive (resource/cost consumption) and says nothing about cancellation via lexq_replay_cancel.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences: the operation and outcome first, then the operational constraints (billing, role, polling) in order of practical importance. No filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a job-submission tool with no output schema, the description covers the follow-up path (poll with lexq_replay_status) and the billing model. It omits what the submission returns (a job identifier) and any indication of expected duration or how to abort, which would matter for an agent managing a long-running, billed job.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the from/to timezone and inclusivity rules and the 50k maxRecords cap all documented in the schema itself. The description adds only high-level framing ('date window of past executions', 'candidate version'), no syntax or format detail beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb chain (submit an async job) plus the resource (a date window of past executions) and the outcome measured (blast radius / how many decisions change). It is unmistakably about replay rather than deployment or simulation, though it never names the near-neighbour lexq_simulation_start or lexq_dry_run_compare to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies clear operational guidance: this is async and must be polled with lexq_replay_status, and VIEWER role cannot submit. It does not say when to prefer this over lexq_simulation_start or a plain lexq_dry_run, so the exclusion set against siblings is only partial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_replay_statusGet Replay Job StatusA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
jobIdYesReplay job ID from lexq_replay_start

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare a safe read-only, non-destructive operation; the description goes well beyond that by disclosing the status state machine (RUNNING/COMPLETED/FAILED), which response fields populate in each state, the 0–100 progress scale, and the meaning of capped=true. That is substantive behavioral context an agent could not get from the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action, then state semantics, then the cap caveat. No redundant wording and no repetition of the title or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description properly assumes the burden of explaining return values and does so per status. Minor gaps remain: no mention of polling cadence/backoff or a pointer to the follow-up tool once COMPLETED, but an agent can call this correctly as-is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, and the schema already states it is the job ID from lexq_replay_start. The description adds nothing about the parameter itself, which is acceptable given the schema does the work — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Poll a window replay job." This clearly separates it from sibling mutations like lexq_replay_start, lexq_replay_cancel, and lexq_replay_list, though it never names those siblings explicitly, so differentiation is by inference rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb "Poll" implies repeated invocation until a terminal state, which is useful implicit guidance. However, there is no explicit statement of when to stop polling, how often to poll, or which sibling to call next once COMPLETED (e.g. lexq_replay_export or lexq_replay_decision) — usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_requirementsAnalyze RequirementsB
Read-only
Inspect

Analyze which input facts a version requires. Returns required keys, types, and an example request body.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a read-only, non-destructive, closed-world operation, so safety behavior needs no restating. The description usefully adds what the call returns (required keys, types, sample body), which matters because there is no output schema. It does not mention whether the version must be published or how it behaves for a nonexistent version ID.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler, and the core action is front-loaded before the return-value note. It is efficient, though it is terse enough that a small amount of additional routing context would have been worth the words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only introspection tool with full schema coverage and no output schema, the description covers both the purpose and the shape of the result, which is the main thing an agent needs. Gaps are minor: preconditions such as version state or error behavior are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: groupId is documented as the policy group ID and versionId as the version ID, both required with UUID formats. The description only implies the version scoping ('a version requires') and adds no syntax, format, or sourcing detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it analyzes which input facts a given version requires, and it names the output content (required keys, types, example request body). That is clear enough for an agent to distinguish it from listing/creating facts. It does not, however, explicitly contrast itself with nearby read tools like lexq_versions_get or lexq_rules_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance and no named alternative. An agent can infer it belongs before submitting facts for a version, but that workflow position is implied rather than stated, and nothing tells the agent how it differs from fetching the version itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
ruleYesJSON string of CreateRuleRequest: { name, condition, actions, mutexGroup?, mutexMode?, mutexStrategy?, mutexLimit?, isEnabled? }
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond the annotations: it discloses the DRAFT-only guard, that unregistered targetVars trigger ACT-032 while read-only keys may stay unregistered, limits (25 SINGLE conditions, 10 nesting levels, 100 rules/version), and the ACT-033 conflict on BLOCK-owned keys. Crucially it explains execution semantics — conditions evaluate against input facts before any action runs, and BLOCK does not halt later actions or rules. Nothing here contradicts readOnlyHint=false / destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and scope before the reference material, then organized into labeled blocks (Condition, Limits, Operators, Actions) that are scannable. The operator tables and arithmetic matrix are dense but each row disambiguates real behavior (e.g. PERCENTAGE×MUL vs AMOUNT×MUL); the tradeoff is a very long description that reads like a spec excerpt.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no output schema, the behavioral and semantic picture is essentially complete — validation rules, limits, error codes, and evaluation order are all given. The remaining gap is the mutex/isEnabled configuration surface, which is referenced only as a bare list in the schema string and never explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the dominant parameter `rule` is a JSON string whose internals are barely sketched in the schema; the description carries that burden with full condition grammar, per-type operator tables, and MUTATE_FACT semantics including the AMOUNT vs PERCENTAGE matrix. It omits the mutexGroup/mutexMode/mutexStrategy/mutexLimit/isEnabled and name fields that the schema's CreateRuleRequest summary lists, leaving those undefined in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+scope: 'Create a rule in a DRAFT version', and immediately distinguishes itself from the sibling it is not (lexq_rules_reorder changes order). An agent knows from sentence one both what it does and the constraint on where it can write.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear usage context: creation must target a DRAFT version and the new rule lands last in priority, with an explicit pointer to lexq_rules_reorder for ordering. It does not, however, route to lexq_rules_update for later modification or lexq_rules_get/list for inspection, so sibling selection is only partly closed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_rules_deleteDelete RuleB
Destructive
Inspect

Delete a rule from a DRAFT version.

NameRequiredDescriptionDefault
ruleIdYesRule ID
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds one real piece of behavioral context beyond that — the operation is scoped to DRAFT versions — but says nothing about irreversibility, whether the rule must be disabled first, or what happens to references/history after deletion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with zero filler and the key constraint front-loaded. It is efficient, though the terseness is close to the edge where brevity becomes under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter delete with fully documented schema and destructiveness already flagged by annotations, the description covers the essential scope. It still leaves gaps for a destructive mutation: no note on irreversibility, on failure modes for non-draft versions, or on any post-delete state change, and there is no output schema to cover results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with all three UUID identifiers documented in the schema, so the baseline is 3. The description adds no meaning about how groupId, versionId, and ruleId relate (e.g. that the rule must belong to the given group and version), leaving that inference to the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Delete) and resource (a rule), plus a scope qualifier ('from a DRAFT version') that distinguishes it from the rule-mutating siblings like lexq_rules_update and lexq_rules_toggle. It does not explicitly name any sibling, so it falls short of a 5, but an agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'DRAFT version' qualifier implicitly tells the agent when this tool is applicable and implies it cannot be used against published versions, which is useful when-to-use guidance. However, no alternatives are named (e.g. versions_delete, rules_update to remove a rule config differently) and no prerequisites such as required permissions or version state transitions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_rules_getGet Rule DetailB
Read-only
Inspect

Get full rule detail including condition tree and action definitions.

NameRequiredDescriptionDefault
ruleIdYesRule ID
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description contributes the payload shape (condition tree plus action definitions), which matters because no output schema exists, but says nothing about not-found behavior, permission requirements, or version scoping semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the resource and returned content in immediate view; nothing is padded or repeated. It is efficient, though the terseness leaves no room for the scoping detail an agent would benefit from.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description partially discharges its burden by naming the two major return components. However, for a tool requiring a three-level identifier path (group, version, rule) with no explanation of that hierarchy or of failure modes, the definition is only minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three UUID parameters are documented in the schema and the baseline of 3 applies. The description adds no meaning beyond the schema: it never explains that ruleId is resolved within a groupId plus versionId hierarchy, which is the one piece of semantic context the schema cannot express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Get full rule detail") and enumerates what the detail contains ("condition tree and action definitions"), which distinguishes it from lexq_rules_list. It stops short of naming the sibling it supersedes, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use is only implied: an agent can infer this is the drill-down companion to lexq_rules_list because it returns full detail rather than summaries. There is no explicit when-to-use, no mention of prerequisites such as needing groupId/versionId resolution first, and no guidance on when lexq_rules_update or lexq_groups_get would be the better call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_rules_listList RulesB
Read-only
Inspect

List all rules in a version (priority ASC). Returns summary with conditionSummary and actionSummary.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered without the description. The description adds real value by disclosing the sort order (priority ASC) and the returned summary fields (conditionSummary, actionSummary), which matters because there is no output schema — but it omits pagination behavior and whether disabled rules are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no filler, with the resource, scope, ordering and return shape all stated up front. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-required-parameter read tool with no output schema, the description covers ordering and return shape, which is most of what an agent needs. Remaining gaps — pagination/limits and whether the list includes inactive rules — are minor but real for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both groupId and versionId documented as "Policy group ID" and "Version ID", so the baseline is 3. The description adds nothing about the parameters — not even that both are required to pin the version being listed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List all rules in a version" gives a specific verb (list) and resource (rules) plus its scope (a version), which cleanly separates it from lexq_rules_get and lexq_rules_create. It stops short of naming a sibling explicitly, but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to choose this over lexq_rules_get or lexq_profile_rule, and gives no prerequisites such as needing a published version or group access. Usage is only implied by the verb "List".

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_rules_reorderReorder RulesA
Destructive
Inspect

Reorder rules by specifying rule IDs in desired order. Priorities are assigned 1...N (1-based, continuous); array index 0 = priority 1 (highest precedence).

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
ruleIdsYesRule IDs in desired priority order
versionIdYesVersion ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description does add the priority-assignment model (1...N continuous, index 0 = highest), but it does not say whether omitted rule IDs are reassigned, dropped, or rejected — a meaningful omission for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the semantics that matter; nothing redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, all-required 3-parameter mutation with no output schema, the definition covers the mechanics but leaves open whether the supplied list must be exhaustive and what happens to rules not included. That gap matters for correct and safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds real value beyond the schema by pinning the ordinal mapping (array index 0 maps to priority 1, continuous 1-based), which removes ambiguity about how ordering translates to stored priorities.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Reorder rules by specifying rule IDs in desired order." An agent can tell this apart from generic update/create siblings, though nothing distinguishes it explicitly from lexq_groups_reorder or lexq_rules_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the operation itself (you supply rule IDs in the order you want), but there is no explicit when-to-use versus lexq_rules_update, nor any stated precondition such as requiring a draft version or full rule set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_rules_toggleToggle RuleB
Destructive
Inspect

Enable or disable a rule without deleting it.

NameRequiredDescriptionDefault
ruleIdYesRule ID
groupIdYesPolicy group ID
isEnabledYestrue to enable, false to disable
versionIdYesVersion ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=false and destructiveHint=true, so the safety profile is largely supplied. The description adds the useful nuance that the rule is retained rather than removed, but it never explains why the operation is flagged destructive (e.g., disabling a rule changes live enforcement) or what permissions/scope are needed. No annotation contradiction: toggling a policy rule off can legitimately count as a destructive update even though the record survives.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler. It is efficient, though its brevity leaves little room for the scoping or effect details an agent might want.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-required-parameter mutation with no output schema, the description omits that the rule is addressed within a specific group and version, and says nothing about the result of the call. Annotations cover the safety angle, but scope and outcome are left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with every field (ruleId, groupId, versionId, isEnabled) documented in the schema itself. The description adds no meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Enable or disable a rule" states a specific verb and resource, and "without deleting it" distinguishes it from lexq_rules_delete. It does not differentiate itself from lexq_rules_update, which plausibly could also flip isEnabled, so the boundary with that closest sibling remains ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "without deleting it" implies the use case: preserve the rule when you only want to change its active state. However, there is no explicit when-to-use vs. lexq_rules_update or lexq_rules_delete, and no mention of prerequisites such as needing a specific version context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_rules_updateUpdate RuleA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
ruleYesJSON string of UpdateRuleRequest: { name?, condition?, actions?, mutexGroup?, mutexMode?, mutexStrategy?, mutexLimit?, isEnabled? }
ruleIdYesRule ID
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description discloses the validation envelope (25 SINGLE nodes, 10 nesting levels below root) and, critically, that saving re-validates every action including untouched ones and can fail with ACT-032 when a targetVar is not a registered fact. That cross-field side-effect and failure mode is exactly the kind of information an agent cannot get from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: scope first, update semantics second, validation and side effects third. No filler, no repetition of the title, and the most load-bearing constraint (re-check of all actions) is not buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description covers the version-state requirement, partial-update behavior, and the main failure mode. It leaves out permission requirements and the response shape (e.g., whether the updated rule is returned), which are minor given the strong behavioral coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds real meaning by constraining the condition tree inside the `rule` payload and reinforcing that omitted fields are preserved rather than nulled. It does not explain individual fields such as mutexStrategy or mutexLimit, which remain schema-only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update an existing rule") and scopes it to a DRAFT version, which immediately separates it from deployment/publish siblings. It also clarifies partial-update semantics ("Only provided fields are changed"). It does not name siblings like lexq_rules_toggle or lexq_rules_create, so differentiation is inferred rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"In a DRAFT version" is a concrete precondition that tells the agent when this tool is applicable, and the partial-update note tells it how to call it. There is no explicit statement of what to do when the version is not a draft (e.g., use versions_clone first) and no named alternative, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_simulation_cancelCancel SimulationA
Destructive
Inspect

Cancel a running or pending simulation.

NameRequiredDescriptionDefault
simulationIdYesSimulation ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful constraint that only running or pending simulations qualify, but says nothing about whether cancellation is idempotent, whether partial results are discarded, or whether the action is reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single eight-word sentence with the resource and scope front-loaded and no filler. Nothing in it could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, fully-annotated destructive action with no output schema, this covers the essentials: what it acts on and which states are valid targets. The only gap is post-cancellation behavior, which is a minor omission at this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage, the schema already carries the format (UUID) and required-ness. The description adds no extra meaning about how to obtain the simulationId or what happens with an unknown or already-completed ID, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Cancel a ... simulation') and narrows scope to 'running or pending', which separates it from lexq_simulation_start and lexq_simulation_status. It never names a sibling explicitly, so differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The qualifier 'running or pending' implies when the tool applies and hints that terminal simulations need no cancellation, but there is no explicit when-to-use/when-not-to-use guidance and no mention of alternatives such as checking state first via lexq_simulation_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_simulation_exportExport SimulationA
Read-only
Inspect

Export simulation results as JSON or CSV. Returns the raw data. An export longer than 100,000 characters is refused.

NameRequiredDescriptionDefault
formatNoExport formatjson
simulationIdYesSimulation ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this as a safe, read-only, closed-world operation, so the description's job is to add operational detail — which it does by disclosing a hard 100,000-character ceiling that causes a refusal. That limit is genuinely useful behavioral context an agent cannot get from the schema or annotations. It stops short of explaining what a refusal looks like or whether the payload is inline or a file reference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, no filler, with the core action and output stated first and the size limit appended as a caveat. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly covers the return format (raw data as JSON or CSV) and adds the size ceiling. For a two-parameter read tool this is nearly complete; the only gap is not stating whether an in-progress simulation can be exported or how an over-limit refusal is surfaced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema, including the csv/json enum and the uuid pattern. The description's mention of JSON or CSV merely restates the format enum and adds no syntax or format nuance beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Export simulation results") and states the supported formats, so the agent knows exactly what it produces. It distinguishes itself implicitly from the other export siblings (facts_export, replay_export) by scoping to simulation results, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent can infer this is the way to retrieve simulation output, but there is no guidance on preconditions (must the simulation be finished?) or on when to prefer a different tool such as lexq_simulation_status. No when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_simulation_listList SimulationsC
Read-only
Inspect

List simulation history with optional filters.

NameRequiredDescriptionDefault
toNoEnd date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts.
fromNoStart date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive.
pageNoPage number
sizeNoPage size
statusNoFilter by status

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered without the description. The description adds nothing beyond that: no default ordering, no statement about what a history entry contains, and no note that results are paginated or capped at 100 per page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the resource front-loaded and zero filler. It is efficient, though the terseness leaves the definition thin rather than over-written.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter, fully-optional list tool with no output schema, the description should at least indicate ordering or what a returned record represents, since no output schema exists to explain return values. Annotations cover the safety profile, so the gap is moderate rather than severe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the tenant-timezone, inclusive-day semantics for from/to and the enum for status, so the schema carries the burden. The description only gestures at "optional filters" without mapping them, which is the baseline expectation when the schema already documents every parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List simulation history with optional filters" names a specific verb (list) and resource (simulation history), so an agent knows it is a read/list operation. It does not distinguish itself from nearby siblings such as lexq_simulation_status, lexq_replay_list, or lexq_history_list, which all return list-like data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this instead of lexq_simulation_status (single run) or lexq_replay_list / lexq_history_list (adjacent histories). "Optional filters" implies you may scope results, but no conditions, prerequisites, or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_simulation_startStart SimulationA
Destructive
Inspect

Start an Impact Simulation against historical, uploaded, or inline data.

Starting checks the plan's simulation usage limit. The records a simulation processes count toward that usage when it completes or is canceled.

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 S3_BUCKET, 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": "S3_BUCKET", "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 } }

NameRequiredDescriptionDefault
bodyYesJSON string of SimulationRequest

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, and the description adds the key non-obvious behavior: starting triggers a usage-limit check and processed records are billed when the run completes or is canceled. It documents the silent truncation defaults (1000 records for HISTORICAL/UPLOADED), which is a real behavioral trap. It does not explain what the response contains or how long a run takes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and quota behavior, then a clean mode-to-field mapping matrix, then option details, then examples — a well-structured progression. It is on the long side and the two full JSON examples repeat fields already described above, but given the opaque body parameter the redundancy buys real correctness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single opaque-parameter mutation with no output schema, the description covers input construction exhaustively, including defaults and quota side effects. The remaining gap is the return/status lifecycle — no mention of the simulation identifier returned or the follow-up tools (status, cancel, export) an agent needs after starting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema exposes only an opaque `body` string labeled 'JSON string of SimulationRequest', so the description carries essentially all parameter meaning. It fully enumerates dataset.type/source pairings, date formats with time-zone and inclusivity semantics, dataset.path/manualData requirements, maxRecords bounds, and the metricConfig aggregate shape, backed by two worked examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Start an Impact Simulation') and immediately scopes it to the three supported data modes (historical, uploaded, inline). The naming of 'Impact Simulation' plus dataset typing separates it cleanly from sibling entry points such as lexq_ab_test_start, lexq_replay_start, and lexq_dry_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operating context: the call consumes simulation usage allowance, the type/source pairing is mandatory, and per-mode defaults apply when maxRecords is omitted. It also routes the agent to lexq_dataset_upload for the UPLOADED path. It stops short of explicit when-to-use-this-instead-of guidance against dry_run, replay, or AB test, and offers no instruction to poll via lexq_simulation_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_simulation_statusSimulation StatusA
Read-only
Inspect

Get simulation status and results. Poll until status is COMPLETED or FAILED.

NameRequiredDescriptionDefault
simulationIdYesSimulation ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds the genuinely useful behavior that the call must be repeated until a terminal status, but it says nothing about whether partial results are returned while running, poll-rate expectations, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler; the purpose is front-loaded and the polling instruction follows immediately. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining what 'results' looks like and what the full status set is (only COMPLETED and FAILED are named). For a polling endpoint this is adequate but leaves the agent guessing about intermediate states and result availability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema description coverage (a UUID-formatted 'Simulation ID'), so the baseline is 3. The description adds no meaning beyond the schema — it never mentions simulationId or its provenance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get simulation status and results'), which is clearly distinct from siblings such as lexq_simulation_start, lexq_simulation_cancel, and lexq_simulation_list. It does not explicitly contrast itself with those siblings, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Poll until status is COMPLETED or FAILED' gives real operational guidance for the polling loop and names the terminal states. However, it does not say how to obtain a simulationId (presumably from lexq_simulation_start), nor how frequently to poll or what to do on repeated FAILED responses.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
versionIdYesSource version ID to clone

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), and the description adds operational constraints the annotations cannot express: the 20-DRAFT-per-group quota consumption and the hard 100-rule ceiling that causes failure. It does not state whether the clone copies rules, requirements, or targeting intact, nor what permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: action, use case, then limits. The purpose is front-loaded and each following sentence contributes a distinct, non-redundant constraint with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description never says what comes back (presumably the new version identifier) or that the clone is returned in DRAFT state with copied or defaulted rules. Given the hard quotas and failure condition mentioned, an agent knows how it can fail but not what success yields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both UUIDs are already documented. The description only adds that versionId refers to the *source* being cloned and that groupId is the scope for the draft limit; that is marginal value over the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Clone an existing version') plus the resulting state ('create a new DRAFT'), which distinguishes it from the plain create path in lexq_versions_create. It stops short of naming that sibling, so an agent must infer the distinction from the word 'existing'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful when the source version is already published' gives a concrete selection condition that implies the alternative (build a new version from scratch). It never explicitly names lexq_versions_create as the alternative, and it does not say when cloning is inappropriate besides the implicit published-version case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
effectiveToNoEffective end, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected.
commitMessageNoCommit message describing this version
effectiveFromNoEffective start, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic write profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds genuinely useful behavior beyond that: the created version is a DRAFT (not live), a group is capped at 20 DRAFT versions, published versions do not count toward the cap, and the remedy is to publish or delete drafts. What is missing is whether creation can fail for other reasons or what identifier comes back.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and scope, followed by the constraint and its remedy. No filler, no repetition of schema or annotation content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter create tool with full schema coverage and no output schema, the definition covers what an agent needs to invoke it: the DRAFT nature of the result, optional inputs, and the capacity ceiling. It could go further by noting that the new version is not automatically deployed or what validation applies to the effective range.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the ISO-8601 offset requirement on the effective date fields, so the schema carries the detail. The description only restates that commit message and effective date range are optional, adding no new semantics such as ordering constraints between effectiveFrom and effectiveTo or default range behavior. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Create a new DRAFT version in a policy group'), and the DRAFT qualifier meaningfully distinguishes it from siblings like lexq_deploy_publish or lexq_versions_clone. It stops short of explicitly contrasting with those siblings, so an agent still has to infer the boundary from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the capacity rule ('Publish or delete drafts to make room'), which tells the agent what to do when the limit is hit. However, there is no explicit guidance on when to choose this over lexq_versions_clone or lexq_versions_update, and no stated prerequisites such as permissions or group existence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_versions_deleteDelete Policy VersionA
Destructive
Inspect

Delete a DRAFT version. Only DRAFT versions can be deleted.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real value by disclosing that the blast radius is limited to DRAFT versions, but it omits what happens on a rejected non-draft call (validation error vs. no-op) and whether deletion is recoverable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the actionable constraint front-loaded in the first sentence and the eligibility restriction reinforced in the second. Every word earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations cover the destructive/closed-world safety profile and the schema fully documents both required UUIDs, so the essentials are present. For a destructive operation, though, the description could say more about failure behavior or post-deletion state, leaving a modest gap relative to the tool's risk.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both groupId and versionId are already documented as policy group ID and version ID. The description adds no additional semantics about these parameters, which is the expected baseline when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Delete a DRAFT version") and narrows the scope with a hard precondition, so an agent can tell this apart from lexq_versions_update or lexq_versions_clone. It doesn't explicitly name a sibling as an alternative path, keeping it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence "Only DRAFT versions can be deleted" gives a clear eligibility rule for using the tool, implying no action is possible on published versions. However, it doesn't say what to do instead for non-draft versions (e.g., clone or create a new version) or name any alternative tool, so guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_versions_getGet Policy VersionA
Read-only
Inspect

Get a single version by ID, including its rules and fact requirements.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
versionIdYesVersion ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds only that the response embeds rules and fact requirements; it says nothing about error behavior for missing IDs or whether the returned rules are the resolved or raw set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the resource, the lookup key, and the payload contents all appear in the first clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return-value burden, and it does partially by naming rules and fact requirements as included content. For a two-parameter read-only getter with full annotation coverage, that is close to sufficient, with only the enumeration of other returned fields left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with groupId and versionId fully documented as UUIDs with patterns, so the baseline is 3. The description adds no meaning beyond that — it says "by ID" without clarifying that both a group and a version identifier must be supplied together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get a single version by ID") and implicitly contrasts with the list sibling via "single version." It also names the payload contents (rules and fact requirements), so the agent knows this is the detailed view rather than a summary, though it never names lexq_versions_list explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer it should call this when it already has a groupId and versionId and needs full version detail. There is no explicit when-to-use versus lexq_versions_list, lexq_versions_get's clone/update siblings, or any note about what to do when the version doesn't exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_versions_listList Policy VersionsC
Read-only
Inspect

List all versions of a policy group.

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size
groupIdYesPolicy group ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: no note on pagination defaults (page=0, size=20), ordering, or whether a missing groupId yields an error versus an empty list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single eight-word sentence with zero filler, and the resource scope is front-loaded after the verb. It is concise, though it is so terse that nothing beyond the bare purpose is conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only list tool with full schema coverage and clear annotations, so the minimum is met. However, with no output schema and no statement about pagination or the returned version records, an agent must infer how to page through results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (groupId, page, size) are documented in the schema itself, establishing a baseline of 3. The description mentions only the policy group and says nothing about pagination parameters or how to iterate pages, so it adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (versions of a policy group), which distinguishes it from sibling mutations like lexq_versions_create or lexq_versions_delete. It does not explicitly differentiate itself from lexq_versions_get or lexq_deploy_history, which keeps it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus lexq_versions_get (single version) or the deploy history tools. The word 'all' implies a full enumeration, but no prerequisites, exclusions, or alternative routing are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_versions_updateUpdate Policy VersionA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
groupIdYesPolicy group ID
versionIdYesVersion ID
effectiveToNoEffective end, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected. Omit it to keep the current end.
commitMessageNoNew commit message
effectiveFromNoEffective start, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected. Omit it to keep the current start.
clearEffectiveToNoSet to true to remove the effective end. Do not send effectiveTo with it.
clearEffectiveFromNoSet to true to remove the effective start. Do not send effectiveFrom with it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already flag this as a non-read-only, destructive mutation, and the description adds meaningful behavior on top: partial-update semantics ("Omitted fields keep their current values") and the clearEffectiveFrom/clearEffectiveTo escape hatch for removing timestamps. It does not say what an invalid-state attempt returns or whether updating a version affects anything downstream, so it stops short of fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying one distinct rule: action, precondition, partial-update contract, and clearing mechanism. Front-loaded with the action and precondition, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, partly-optional mutation with no output schema, the description covers the eligibility gate, merge semantics, and the non-obvious clearing path. It omits only the response shape and failure behavior, which are secondary given the annotations already declare the destructive write profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already spells out the ISO-8601 format, the omit-to-keep behavior, and the clear-flag conflict rules. The description's last sentence largely restates the clearEffectiveFrom/clearEffectiveTo schema text, adding little new meaning beyond the general partial-update rule. Baseline 3 is appropriate when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update a DRAFT version") and immediately narrows the scope with the DRAFT-only precondition. It never names the nearest siblings (lexq_versions_create, lexq_versions_clone, lexq_versions_delete), so an agent must infer the boundary from the tool name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a hard when-not rule ("Only DRAFT versions can be modified") and a concrete usage instruction for clearing window bounds instead of sending a null value. It lacks an explicit alternative for non-DRAFT versions (e.g. clone then update), leaving that routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_webhook_subscriptions_deleteDelete Webhook SubscriptionC
Destructive
Inspect

Delete a webhook subscription by ID.

NameRequiredDescriptionDefault
idYesWebhook subscription ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, so the safety profile is known from structured data; the description adds nothing on top. It does not say whether deletion is permanent, whether in-flight deliveries are cancelled, or whether a 404 results for unknown IDs — all material for a destructive call. It does not contradict the annotations, though.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no filler or repetition of the title. Nothing is wasted, though the terseness reflects a lack of content rather than disciplined editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, irreversible-sounding mutation, the description omits permanence, side effects on queued deliveries, and error behavior. Annotations and the schema cover safety flags and the ID format, but the agent still lacks the operational context needed to call this confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single required parameter whose UUID format and pattern are fully documented in the schema. The description only echoes 'by ID' and adds no format or sourcing information, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Delete') and resource ('webhook subscription') plus the lookup key ('by ID'), which is enough to distinguish it from lexq_webhook_subscriptions_get/list/save/test. It does not name any sibling, so differentiation relies on the agent scanning names rather than the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this rather than lexq_webhook_subscriptions_save (which may also alter a subscription) or how to first confirm a subscription exists via lexq_webhook_subscriptions_get. No prerequisites, no confirmation step, and no mention that the ID must be a valid UUID as required by the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_webhook_subscriptions_getGet Webhook SubscriptionB
Read-only
Inspect

Get webhook subscription detail by ID.

NameRequiredDescriptionDefault
idYesWebhook subscription ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds nothing beyond that — no error behavior for missing/invalid IDs, no note on what fields the detail contains, no permission context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the verb and resource, with zero filler. It is efficient but borders on under-specification rather than achieving conciseness with substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with full schema coverage and annotations, most of what an agent needs is in structured fields. With no output schema, however, the description does not say what a "detail" response contains or how failures surface, leaving a real informational gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single id parameter is documented as "Webhook subscription ID" with a UUID pattern. The description only restates that lookup is by ID, adding no meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get webhook subscription detail") scoped "by ID", which implicitly separates it from the sibling lexq_webhook_subscriptions_list. It never names that sibling explicitly, so sibling differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "by ID" phrasing implies this is the lookup path when an identifier is already known, distinguishing it in practice from the list tool. There is no explicit when-to-use guidance, no mention of the list alternative, and no note about what happens when the ID is unknown.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_webhook_subscriptions_listList Webhook SubscriptionsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
pageNoPage number
sizeNoPage size

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile needs no restating. The description adds genuine domain context by enumerating the event categories (publish, deploy, rollback, undeploy, scheduling/cancellation). It says nothing about result ordering, default page size behavior, or whether inactive subscriptions are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and followed by the domain clarification; every clause carries information. The event enumeration is slightly list-heavy but earns its place by telling the agent what the subscriptions are for. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only list tool with full schema coverage, safety annotations and no output schema, the description covers purpose and resource semantics adequately. The only meaningful omission is a pagination cue, which the schema already supplies. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (page, size) carry their own descriptions plus defaults and bounds, so the schema does the heavy lifting. The description adds no meaning beyond that — it never mentions pagination, so an agent must read the schema to learn the result set is paged. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('List platform event webhook subscriptions'), which the agent can immediately place against siblings such as lexq_webhook_subscriptions_get, _save, _delete and _test. The second sentence clarifies the resource's domain meaning (deployment lifecycle notifications). It stops short of explicitly naming the sibling it is not, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the verb: read-only enumeration of configured subscriptions, useful before calling _get, _delete or _test. The description explains what kinds of events the listed subscriptions receive, which helps an agent judge relevance. However, there is no explicit when-to-use statement, no exclusions, and no named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_webhook_subscriptions_saveSave Webhook SubscriptionA
Destructive
Inspect

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": "..."}).

NameRequiredDescriptionDefault
idNoSubscription ID (omit to create, provide to update)
nameYesSubscription name (unique per tenant)
secretNoHMAC-SHA256 signing secret
isActiveNoWhether the subscription is active
webhookUrlYesWebhook endpoint URL
payloadFormatNoPayload formatGENERIC
subscribedEventsYesEvents to subscribe to

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond that — it does not warn that updating overwrites the existing subscription's event set, that the secret is used for HMAC signing at delivery time, or that the subscription causes outbound calls to the external URL. The GENERIC/SLACK payload explanation is the only added semantic content.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and decision rule, then the enumerated event and format lists which need no surrounding prose. Nothing is repeated or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, network-facing mutation with 7 parameters and no output schema, the description covers inputs but says nothing about the response (whether it returns the subscription id or the full object) or about the replace-versus-merge behavior on update. An agent can invoke it correctly but cannot anticipate the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns a bump by explaining what SLACK format actually emits ({"text": "..."}) versus GENERIC full JSON — context the enum in the schema does not provide. The id create/update semantics are restated from the schema description, so the gain is modest rather than transformative.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Create or update a webhook subscription') and immediately disambiguates the two modes via the id rule, so an agent knows exactly what the tool does. It does not explicitly differentiate from siblings like lexq_webhook_subscriptions_test or _delete, but the create/update framing is distinctive enough on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Omit id to create, provide id to update' is an explicit selection rule that removes ambiguity between two modes of the same tool. What is missing is guidance on when to reach for this versus lexq_webhook_subscriptions_test (to validate an endpoint) or _list (to find an id), which would push it to a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_webhook_subscriptions_testTest Webhook SubscriptionA
Destructive
Inspect

Send a test event to verify webhook connectivity. Returns the HTTP status code and success/failure message.

NameRequiredDescriptionDefault
idYesWebhook subscription ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=true, so the agent knows this is a side-effecting outbound call. The description adds the useful facts that it sends an actual event to the endpoint and returns an HTTP status code, but it never explains the consequences of the destructive/open-world hints — e.g. whether a real payload fires downstream consumer logic or whether delivery state is mutated. Nothing here contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and followed by the return contract; every clause carries information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple single-parameter tool and the description covers action and return shape. However, with destructiveHint=true and no output schema, the description should clarify the real-world side effect of firing a test event and whether the HTTP status is returned inline on failure or only on success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'id' parameter is documented as the webhook subscription ID with a UUID format and pattern. The description adds nothing about which subscription should be targeted or what the ID identifies, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and object ('Send a test event to verify webhook connectivity') plus the return signal, so the agent knows exactly what the tool does. It does not distinguish this from the many sibling webhook tools (get/list/save/delete), which is the only thing keeping it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the phrase 'verify webhook connectivity' — an agent can infer this is a post-configuration validation step. There is no explicit guidance on when to use it versus lexq_webhook_subscriptions_get or lexq_webhook_subscriptions_save, and no prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lexq_whoamiWho Am IA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-structured context: that the returned tenantTimezone governs every yyyy-MM-dd date filter and that relative dates must be computed in that zone, not UTC — an important behavioral rule an agent would otherwise get wrong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the return contents come first, then the operational consequence (timezone-correct date math). Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description names the fields returned (tenant ID, user ID, role, tenantTimezone) and explains how to use the timezone value. For a zero-parameter, read-only tool this is sufficient to invoke and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline is 4. The description correctly says nothing about inputs and instead spends its words on the return payload, which is the right allocation for a zero-argument call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ("Show") plus a precise resource ("current authentication info") and enumerates the returned fields (tenant ID, user ID, role, tenantTimezone). No sibling tool does anything comparable, so an agent can identify this as the identity/timezone lookup without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear situational guidance: use it to obtain the tenant time zone and to resolve "today"/"yesterday" relative to it rather than UTC. It does not name alternative tools or explicit exclusions, but with zero parameters and no functional siblings there is little to disambiguate against.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Changedlexq_facts_create1 field changed
      • changedInput schema / properties / isRequired / description
        Previous value: -"Whether this fact is required for rule evaluation"New value: +"isRequired is stored on the definition only; the engine does not read it."
    • Changedlexq_facts_update1 field changed
      • changedInput schema / properties / isRequired / description
        Previous value: -"Required flag"New value: +"isRequired is stored on the definition only; the engine does not read it."
    • Removedlexq_logs_action
    • Removedlexq_logs_bulk_action
    • Changedlexq_rules_delete1 field changed
      • removedInput schema / properties / force
        Removed value: -{
        -  "default": false,
        -  "description": "Skip confirmation (for the last rule in a version)",
        -  "type": "boolean"
        -}
  2. 1 tool update
    • Changedlexq_deploy_rollback3 fields changed
      • addedInput schema / properties / expectedCurrentDeploymentId
        Added value: +{
        +  "description": "currentDeploymentId from your last read of the group",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / properties / expectedCurrentVersionId
        Added value: +{
        +  "description": "currentVersionId from your last read of the group",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "groupId",
        -  "memo"
        -]New value: +[
        +  "groupId",
        +  "expectedCurrentVersionId",
        +  "expectedCurrentDeploymentId",
        +  "memo"
        +]
  3. 1 tool update
    • Changedlexq_ab_test_start1 field changed
      • changedInput schema / properties / testVersionId / description
        Previous value: -"Challenger version ID to test"New value: +"Challenger version ID. Must be a published version of this group"
  4. 2 tool updates
    • Changedlexq_facts_create2 fields changed
      • changedInput schema / properties / valueDomain / description
        Previous value: -"Which values this fact accepts. Omit for no constraint. STRING and LIST_STRING take allowedValues only; NUMBER and LIST_NUMBER take all three; BOOLEAN takes none. Declaring it lets the rule editor offer a dropdown and rejects a rule literal that could never match."New value: +"Which values this fact accepts. Omit for no value domain. STRING and LIST_STRING take allowedValues only; NUMBER and LIST_NUMBER take all three; BOOLEAN takes none. Declaring it lets the rule editor offer a dropdown and rejects a rule literal that could never match."
      • changedInput schema / properties / valueDomain / properties / allowedValues / description
        Previous value: -"Accepted values. For list types the constraint applies to each element, not to the list as a whole."New value: +"Accepted values. For list types the value domain applies to each element, not to the list as a whole."
    • Changedlexq_facts_update3 fields changed
      • changedInput schema / properties / description / description
        Previous value: -"Description"New value: +"Description. Send \"\" to remove it."
      • changedInput schema / properties / valueDomain / description
        Previous value: -"Which values this fact accepts. Three states: omit the field to leave the constraint alone, send {} to remove it, or send a populated object to replace it. Narrowing it does not rewrite rules that already reference this fact — they keep working, and the next save is judged against the new constraint."New value: +"Which values this fact accepts. Three states: omit the field to leave the value domain alone, send {} to remove it, or send a populated object to replace it. Narrowing it never blocks the update and does not rewrite rules. When rules compare this fact with a value the new value domain excludes, the result ends with a warning that lists them by version: drafts and the versions currently deployed."
      • changedInput schema / properties / valueDomain / properties / allowedValues / description
        Previous value: -"Accepted values. For list types the constraint applies to each element, not to the list as a whole."New value: +"Accepted values. For list types the value domain applies to each element, not to the list as a whole."
  5. 1 tool update
    • Changedlexq_domain_templates_preview1 field changed
      • changedInput schema / properties / template / description
        Previous value: -"Domain template key (e.g. ECOMMERCE). Use lexq_domain_templates_list to see available keys — currently only ECOMMERCE is ACTIVE."New value: +"Domain template key (e.g. ECOMMERCE). Use lexq_domain_templates_list to see the keys."
  6. 2 tool updates
    • Changedlexq_facts_update1 field changed
      • changedInput schema / properties / type / description
        Previous value: -"Value type. Omit to leave it unchanged. Changing it fails with FD-007 while any rule references the fact."New value: +"Value type. Omit to leave it unchanged. Changing it fails with FD-007 while any rule outside a deleted group references the fact."
    • Changedlexq_groups_update1 field changed
      • changedInput schema / properties / status / description
        Previous value: -"Status (DISABLED = emergency stop)"New value: +"DISABLED stops production execution of this group: execution calls return 403 (P-009), and a composite call that includes the group is rejected in full. The deployed version and any A/B test are kept, and dry run, Impact Simulation, and Decision Replay keep working, so a fix can be verified before setting ACTIVE again. To go back to the previous version, use lexq_deploy_rollback. To take the version out of production, use lexq_deploy_undeploy."
  7. 1 tool update
    • Changedlexq_versions_update4 fields changed
      • addedInput schema / properties / clearEffectiveFrom
        Added value: +{
        +  "description": "Set to true to remove the effective start. Do not send effectiveFrom with it.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / clearEffectiveTo
        Added value: +{
        +  "description": "Set to true to remove the effective end. Do not send effectiveTo with it.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / effectiveFrom / description
        Previous value: -"Effective start, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected. Omit it and the start is cleared."New value: +"Effective start, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected. Omit it to keep the current start."
      • changedInput schema / properties / effectiveTo / description
        Previous value: -"Effective end, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected. Omit it and the end is cleared."New value: +"Effective end, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected. Omit it to keep the current end."
  8. 9 tool updates
    • Changedlexq_deploy_history2 fields changed
      • changedInput schema / properties / endDate / description
        Previous value: -"End date (yyyy-MM-dd)"New value: +"End date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts."
      • changedInput schema / properties / startDate / description
        Previous value: -"Start date (yyyy-MM-dd)"New value: +"Start date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive."
    • Changedlexq_history_list2 fields changed
      • changedInput schema / properties / endDate / description
        Previous value: -"End date (yyyy-MM-dd)"New value: +"End date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts."
      • changedInput schema / properties / startDate / description
        Previous value: -"Start date (yyyy-MM-dd)"New value: +"Start date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive."
    • Changedlexq_history_stats2 fields changed
      • changedInput schema / properties / endDate / description
        Previous value: -"End date (yyyy-MM-dd)"New value: +"End date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts."
      • changedInput schema / properties / startDate / description
        Previous value: -"Start date (yyyy-MM-dd)"New value: +"Start date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive."
    • Changedlexq_logs_list2 fields changed
      • changedInput schema / properties / endDate / description
        Previous value: -"End date (yyyy-MM-dd)"New value: +"End date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts."
      • changedInput schema / properties / startDate / description
        Previous value: -"Start date (yyyy-MM-dd)"New value: +"Start date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive."
    • Changedlexq_pii_reveals_list2 fields changed
      • changedInput schema / properties / endDate / description
        Previous value: -"End date (yyyy-MM-dd)"New value: +"End date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts."
      • changedInput schema / properties / startDate / description
        Previous value: -"Start date (yyyy-MM-dd)"New value: +"Start date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive."
    • Changedlexq_replay_start2 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"Window start date (yyyy-MM-dd)"New value: +"Window start date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive."
      • changedInput schema / properties / to / description
        Previous value: -"Window end date (yyyy-MM-dd)"New value: +"Window end date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts."
    • Changedlexq_simulation_list2 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"Start date (yyyy-MM-dd)"New value: +"Start date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive."
      • changedInput schema / properties / to / description
        Previous value: -"End date (yyyy-MM-dd)"New value: +"End date, yyyy-MM-dd, a whole calendar day in the organization time zone (tenantTimezone in whoami), not UTC. Inclusive: the whole day counts."
    • Changedlexq_versions_create2 fields changed
      • changedInput schema / properties / effectiveFrom / description
        Previous value: -"Effective start date (ISO 8601)"New value: +"Effective start, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected."
      • changedInput schema / properties / effectiveTo / description
        Previous value: -"Effective end date (ISO 8601)"New value: +"Effective end, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected."
    • Changedlexq_versions_update2 fields changed
      • changedInput schema / properties / effectiveFrom / description
        Previous value: -"New effective start date"New value: +"Effective start, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected. Omit it and the start is cleared."
      • changedInput schema / properties / effectiveTo / description
        Previous value: -"New effective end date"New value: +"Effective end, ISO-8601 instant with Z or an offset, e.g. 2026-10-01T00:00:00Z or 2026-10-01T09:00:00+09:00. A bare date or a time without an offset is rejected. Omit it and the end is cleared."
  9. 2 tool updates
    • Changedlexq_facts_create1 field changed
      • addedInput schema / properties / valueDomain
        Added value: +{
        +  "description": "Which values this fact accepts. Omit for no constraint. STRING and LIST_STRING take allowedValues only; NUMBER and LIST_NUMBER take all three; BOOLEAN takes none. Declaring it lets the rule editor offer a dropdown and rejects a rule literal that could never match.",
        +  "properties": {
        +    "allowedValues": {
        +      "description": "Accepted values. For list types the constraint applies to each element, not to the list as a whole.",
        +      "items": {
        +        "type": [
        +          "string",
        +          "number"
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "max": {
        +      "description": "Upper bound, inclusive. Numeric types only.",
        +      "type": "number"
        +    },
        +    "min": {
        +      "description": "Lower bound, inclusive. Numeric types only.",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlexq_facts_update1 field changed
      • addedInput schema / properties / valueDomain
        Added value: +{
        +  "description": "Which values this fact accepts. Three states: omit the field to leave the constraint alone, send {} to remove it, or send a populated object to replace it. Narrowing it does not rewrite rules that already reference this fact — they keep working, and the next save is judged against the new constraint.",
        +  "properties": {
        +    "allowedValues": {
        +      "description": "Accepted values. For list types the constraint applies to each element, not to the list as a whole.",
        +      "items": {
        +        "type": [
        +          "string",
        +          "number"
        +        ]
        +      },
        +      "type": "array"
        +    },
        +    "max": {
        +      "description": "Upper bound, inclusive. Numeric types only.",
        +      "type": "number"
        +    },
        +    "min": {
        +      "description": "Lower bound, inclusive. Numeric types only.",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
  10. 82 tool updates
    • Changedlexq_ab_test_adjust3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_ab_test_start4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / testVersionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_ab_test_stop3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_dataset_template4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_dataset_upload2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlexq_deploy_deployable3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_deploy_detail3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / deploymentId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_deploy_diff4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / baseVersionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / targetVersionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_deploy_history4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
    • Changedlexq_deploy_live4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_deploy_overview1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlexq_deploy_publish4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_deploy_rollback3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_deploy_schedule4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_deploy_schedules3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
    • Changedlexq_deploy_undeploy3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_deploy_unschedule3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_domain_templates_apply2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlexq_domain_templates_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlexq_domain_templates_preview2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlexq_dry_run5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / facts / description
        Previous value: -"JSON string of facts object, e.g. {\"payment_amount\":100000}"New value: +"JSON string of facts object, e.g. {\"paymentAmount\":100000}"
      • removedInput schema / properties / mockExternalCalls
        Removed value: -{
        -  "default": true,
        -  "description": "Mock external integration calls",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_dry_run_compare4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / versionIdA / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionIdB / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_facts_action_metadata1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlexq_facts_create4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / key / description
        Previous value: -"Variable key (snake_case)"New value: +"Variable key. Any casing; must start with a letter."
      • changedInput schema / properties / key / pattern
        Previous value: -"^[a-z][a-z0-9_]*$"New value: +"^[a-zA-Z][a-zA-Z0-9_]*$"
    • Changedlexq_facts_delete3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / factId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Addedlexq_facts_export
    • Changedlexq_facts_list3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
    • Changedlexq_facts_unregistered4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_facts_update4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / factId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Value type. Omit to leave it unchanged. Changing it fails with FD-007 while any rule references the fact.",
        +  "enum": [
        +    "STRING",
        +    "NUMBER",
        +    "BOOLEAN",
        +    "LIST_STRING",
        +    "LIST_NUMBER"
        +  ],
        +  "type": "string"
        +}
    • Changedlexq_groups_create7 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / activationGroup / description
        Previous value: -"Activation group name"New value: +"Activation group (Execution Group) cluster key. Policy groups sharing this key compete, and group priority picks the winners."
      • changedInput schema / properties / activationStrategy / description
        Previous value: -"Strategy when mode is EXCLUSIVE or MAX_N"New value: +"Ranking used to pick the winning groups when mode is EXCLUSIVE or MAX_N"
      • changedInput schema / properties / activationStrategy / enum
        Previous value: -[
        -  "FIRST_MATCH",
        -  "HIGHEST_PRIORITY",
        -  "MAX_BENEFIT"
        -]New value: +[
        +  "HIGHEST_PRIORITY"
        +]
      • changedInput schema / properties / executionLimit / description
        Previous value: -"Max rule executions (required when mode is MAX_N)"New value: +"How many policy groups sharing this activationGroup may run (required when mode is MAX_N). Counts groups, not rules: every rule of a winning group runs."
      • addedInput schema / properties / executionLimit / maximum
        Added value: +9007199254740991
    • Changedlexq_groups_delete3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_groups_get3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_groups_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlexq_groups_reorder3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupIds / items / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_groups_update8 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / activationGroup / description
        Previous value: -"Activation group (Execution Group) cluster key"New value: +"Activation group (Execution Group) cluster key. Policy groups sharing this key compete, and group priority picks the winners."
      • changedInput schema / properties / activationStrategy / description
        Previous value: -"Strategy"New value: +"Ranking used to pick the winning groups"
      • changedInput schema / properties / activationStrategy / enum
        Previous value: -[
        -  "FIRST_MATCH",
        -  "HIGHEST_PRIORITY",
        -  "MAX_BENEFIT"
        -]New value: +[
        +  "HIGHEST_PRIORITY"
        +]
      • changedInput schema / properties / executionLimit / description
        Previous value: -"Max rule executions"New value: +"How many policy groups sharing this activationGroup may run. Counts groups, not rules."
      • addedInput schema / properties / executionLimit / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_history_get2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlexq_history_list5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_history_stats3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Removedlexq_integrations_config_spec
    • Removedlexq_integrations_delete
    • Removedlexq_integrations_get
    • Removedlexq_integrations_list
    • Removedlexq_integrations_save
    • Changedlexq_logs_action4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "RETRY",
        -  "IGNORE",
        -  "RESOLVE"
        -]New value: +[
        +  "IGNORE",
        +  "RESOLVE"
        +]
      • addedInput schema / properties / logId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_logs_bulk_action4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "RETRY",
        -  "IGNORE",
        -  "RESOLVE"
        -]New value: +[
        +  "IGNORE",
        +  "RESOLVE"
        +]
      • addedInput schema / properties / logIds / items / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_logs_get3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / logId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_logs_list5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / category
        Removed value: -{
        -  "description": "Task category",
        -  "enum": [
        -    "INTEGRATION",
        -    "INTERNAL"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
      • changedInput schema / properties / taskType / enum
        Previous value: -[
        -  "COUPON_ISSUE",
        -  "COUPON_CANCEL",
        -  "POINT_EARN",
        -  "POINT_USE",
        -  "POINT_REFUND",
        -  "NOTIFICATION_SEND",
        -  "CRM_SYNC_USER",
        -  "CRM_ADD_TAG",
        -  "WEBHOOK_EXECUTE",
        -  "IMAGE_PROCESSING",
        -  "DAILY_SETTLEMENT",
        -  "PLATFORM_WEBHOOK",
        -  "SCHEDULED_DEPLOYMENT"
        -]New value: +[
        +  "PLATFORM_WEBHOOK",
        +  "SCHEDULED_DEPLOYMENT"
        +]
    • Changedlexq_pii_reveals_list3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
    • Changedlexq_profile_overview4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_profile_rule5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / ruleId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_provenance_get2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlexq_replay_cancel2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlexq_replay_decision3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / candidateVersionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Addedlexq_replay_export
    • Changedlexq_replay_list3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
    • Changedlexq_replay_start4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / candidateVersionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / maxRecords / maximum
        Added value: +9007199254740991
    • Changedlexq_replay_status2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlexq_requirements4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_rules_create4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_rules_delete5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / ruleId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_rules_get5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / ruleId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_rules_list4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_rules_reorder5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / ruleIds / items / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_rules_toggle5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / ruleId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_rules_update5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / ruleId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_simulation_cancel3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / simulationId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_simulation_export4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / format / enum
        Previous value: -[
        -  "json",
        -  "csv"
        -]New value: +[
        +  "csv",
        +  "json"
        +]
      • addedInput schema / properties / simulationId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_simulation_list3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
    • Changedlexq_simulation_start2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlexq_simulation_status3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / simulationId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_versions_clone4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_versions_create3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_versions_delete4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_versions_get4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_versions_list4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
    • Changedlexq_versions_update4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / groupId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / versionId / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_webhook_subscriptions_delete3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / id / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_webhook_subscriptions_get3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / id / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_webhook_subscriptions_list3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
    • Changedlexq_webhook_subscriptions_save3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / id / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_webhook_subscriptions_test3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / id / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • Changedlexq_whoami1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  11. 6 tool updates
    • Changedlexq_deploy_history1 field changed
      • changedInput schema / properties / types / description
        Previous value: -"Filter by deployment types (comma-separated: PUBLISH,DEPLOY,ROLLBACK,UNDEPLOY)"New value: +"Filter by deployment types (comma-separated: DEPLOY,ROLLBACK,UNDEPLOY)"
    • Addedlexq_deploy_schedule
    • Addedlexq_deploy_schedules
    • Addedlexq_deploy_unschedule
    • Changedlexq_logs_list1 field changed
      • changedInput schema / properties / taskType / enum
        Previous value: -[
        -  "COUPON_ISSUE",
        -  "COUPON_CANCEL",
        -  "POINT_EARN",
        -  "POINT_USE",
        -  "POINT_REFUND",
        -  "NOTIFICATION_SEND",
        -  "CRM_SYNC_USER",
        -  "CRM_ADD_TAG",
        -  "WEBHOOK_EXECUTE",
        -  "IMAGE_PROCESSING",
        -  "DAILY_SETTLEMENT",
        -  "PLATFORM_WEBHOOK"
        -]New value: +[
        +  "COUPON_ISSUE",
        +  "COUPON_CANCEL",
        +  "POINT_EARN",
        +  "POINT_USE",
        +  "POINT_REFUND",
        +  "NOTIFICATION_SEND",
        +  "CRM_SYNC_USER",
        +  "CRM_ADD_TAG",
        +  "WEBHOOK_EXECUTE",
        +  "IMAGE_PROCESSING",
        +  "DAILY_SETTLEMENT",
        +  "PLATFORM_WEBHOOK",
        +  "SCHEDULED_DEPLOYMENT"
        +]
    • Changedlexq_webhook_subscriptions_save1 field changed
      • changedInput schema / properties / subscribedEvents / items / enum
        Previous value: -[
        -  "VERSION_PUBLISHED",
        -  "DEPLOYED",
        -  "ROLLED_BACK",
        -  "UNDEPLOYED"
        -]New value: +[
        +  "VERSION_PUBLISHED",
        +  "DEPLOYED",
        +  "ROLLED_BACK",
        +  "UNDEPLOYED",
        +  "DEPLOY_SCHEDULED",
        +  "DEPLOY_SCHEDULE_CANCELED"
        +]

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables 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
    -
  • A
    license
    A
    quality
    B
    maintenance
    Decision 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.
    20
    9 npm
    11
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    The 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.
    11
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources