plith
Server Details
AI agent infrastructure: dedup, cost prediction, validation, governance, failure intelligence.
- Status
- Healthy
- Uptime
- 99.9% over 75 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
TDQS
Scored across 15 tools
Within each module prefix the tools are clearly distinct (e.g. burnrate_budget vs burnrate_track, dedupq_check vs dedupq_complete). Cross-module overlap exists between burnrate_estimate and rigor_plan (both free pre-execution cost previews) and between dedupq_check and pitfalldb_query (both pre-task checks), but descriptions make the boundaries readable.
Strong, predictable module-prefix pattern: burnrate_*, dedupq_*, guardrail_*, pitfalldb_*, qualitygate_*, rigor_*. Minor deviations exist — burnrate_budget is a noun while sibling tools use verbs, and rigor_workflows is a plural noun — but overall it is consistent and readable.
At 15 tools it sits at the upper edge of a well-scoped set, but the server covers six distinct capabilities (cost, dedup, governance, pitfalls, quality, workflows) with 1-4 tools each. Each tool appears to earn its place without redundancy.
Cost tracking and dedup modules have full lifecycles, but there are notable gaps: guardrail policies are said to persist 'until explicitly deleted' yet no delete/list/update tool exists, and qualitygate_validate explicitly points to a qualitygate_trends tool that is not in the set. These dead-end references may cause agent failures.
Available Tools
15 toolsburnrate_budgetARead-onlyIdempotentInspect
Get today's tracked LLM spend, per-model breakdown, projection, and budget alerts. Free — no credits charged.
| Name | Required | Description | Default |
|---|---|---|---|
| daily_limit | No | Optional. Daily budget in USD (e.g., 10.0 for a $10/day cap). Enables budget alerts and remaining-balance calculation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| spend | No | |
| alerts | No | |
| projection | No | |
| request_id | No | |
| credits_used | No | |
| credits_remaining | No | |
| fallback_behavior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context: 'Free — no credits charged' clarifies cost implications, and 'today's' scopes the operation. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver all core information without filler. The first sentence leads with the primary action and output, and the second adds cost context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (1 optional param, output schema exists), and the description covers its purpose and scope. However, it does not clarify why one would choose this over the closely related burnrate_track, leaving a minor completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single optional daily_limit parameter, which fully explains the parameter's meaning. The description itself does not add parameter details, but the schema carries the burden, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves today's tracked LLM spend, per-model breakdown, projection, and budget alerts. The verb 'get' plus the resource (budget info) is specific and differentiates it from siblings like burnrate_track or burnrate_estimate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning budget alerts and spend tracking, but it does not explicitly state when to use this tool versus alternatives like burnrate_track or burnrate_optimize. No exclusion criteria or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
burnrate_estimateAIdempotentInspect
Before executing a multi-step agent plan, estimate the total LLM cost. Returns per-step breakdown and optimization suggestions. If the estimate exceeds your budget, pipe the same plan into burnrate_optimize. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | Array of plan steps with provider, model, and token estimates. |
Output Schema
| Name | Required | Description |
|---|---|---|
| estimate | No | |
| request_id | No | |
| credits_used | No | |
| credits_remaining | No | |
| fallback_behavior | No | |
| optimization_suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds a non-annotation behavioral trait: 'Costs 1 credit', which is not in the annotations. Also describes the output ('per-step breakdown and optimization suggestions'), adding context beyond the idempotentHint and destructiveHint annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary purpose. Each sentence adds distinct value: purpose, return value, and conditional alternative with cost. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description adequately covers the use case, output, and costs. The schema and output schema handle parameter and result details, so the description is sufficient. Could be more complete with e.g. explanation of 'credit', but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so the description does not need to add parameter-level detail. The description only refers to the 'multi-step agent plan' conceptually, without explaining parameter syntax or semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'estimate the total LLM cost' for a 'multi-step agent plan' before execution. It also mentions the return of a per-step breakdown and optimization suggestions, distinguishing it from a generic estimation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Before executing a multi-step agent plan'. Provides an explicit alternative: 'If the estimate exceeds your budget, pipe the same plan into burnrate_optimize'. This gives clear context and a condition for switching to a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
burnrate_optimizeAIdempotentInspect
Get a cheaper equivalent plan by substituting models with lower-cost alternatives. Call after burnrate_estimate if the estimated cost exceeds your budget. Returns the optimized plan with substituted models, new per-step costs, total savings, and whether the target_budget is met. Optionally set target_budget to constrain the optimization. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | Array of plan steps. Same schema as burnrate_estimate: each step needs step, provider, model, estimated_input_tokens, estimated_output_tokens. | |
| target_budget | No | Optional. Target total cost in USD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| steps | No | |
| original | No | |
| optimized | No | |
| request_id | No | |
| suggestions | No | |
| credits_used | No | |
| credits_remaining | No | |
| fallback_behavior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotentHint=true, destructiveHint=false), the description discloses that the tool costs 1 credit, returns an optimized plan with specific components, and implies a non-mutating operation ('Returns the optimized plan'). This adds useful context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with purpose. Each sentence adds essential information: what, when, return value, optional parameter, and cost. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the tool's function, usage context, inputs, outputs, and side effects (credit cost). The description is especially complete given the schema annotations and output schema presence, leaving minimal ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already has 100% coverage, but description enhances meaning by stating the plan parameter uses 'Same schema as burnrate_estimate' and explains target_budget's role ('constrain the optimization'). This goes beyond simple field definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and result: 'Get a cheaper equivalent plan by substituting models with lower-cost alternatives.' This clearly distinguishes the tool from siblings like burnrate_estimate and burnrate_track.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage condition: 'Call after burnrate_estimate if the estimated cost exceeds your budget.' Also gives optional parameter guidance ('Optionally set target_budget to constrain the optimization') and references the predecessor tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
burnrate_trackAIdempotentInspect
Log the actual cost of an LLM call after execution. Call this after every LLM request to build calibration data that improves burnrate_estimate accuracy over time. Free — no credits charged. Returns the recorded cost entry with computed margin versus the prior estimate when one exists for this model and token range.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model identifier as returned by the provider. Examples: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, mistral-large-latest. Unknown models are accepted but cost may show as $0. | |
| task_id | No | Optional task ID for cross-referencing spend with DedupQ deduplication results. Use the same task_id passed to dedupq_check to link cost tracking with deduplication. | |
| provider | Yes | LLM provider identifier. Supported: anthropic, openai, google, mistral, cohere, deepseek, together, fireworks, groq. Must match the provider of the model used. | |
| input_tokens | Yes | Actual prompt tokens used. Must be >= 0. | |
| output_tokens | Yes | Actual completion tokens used. Must be >= 0. | |
| cache_read_tokens | No | Optional. Cache-read tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| model | No | |
| tracked | No | |
| provider | No | |
| record_id | No | |
| request_id | No | |
| credits_used | No | |
| input_tokens | No | |
| output_tokens | No | |
| pricing_found | No | |
| actual_cost_usd | No | |
| credits_remaining | No | |
| fallback_behavior | No | |
| actual_cost_usd_formatted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false. The description adds valuable context beyond these: 'Free — no credits charged' and 'Returns the recorded cost entry with computed margin versus the prior estimate,' disclosing both cost implications and return behavior. This is a good supplement to annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: action, usage guidance, and return behavior. Information is front-loaded, concise, and free of fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the essential aspects: what it does, when to use it, return value, and cost. The output schema exists, so return details are further specified. No significant gaps remain for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all parameters. The description adds meaning by mentioning 'this model and token range' when computing margins, linking the parameters (model, input_tokens, output_tokens) to the tool's estimation logic. This provides extra context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action with a specific verb and resource: 'Log the actual cost of an LLM call after execution.' It distinguishes from sibling tools like burnrate_estimate by positioning this as recording actuals for calibration, and the title 'Record actual LLM spend' reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage timing: 'Call this after every LLM request to build calibration data.' It references burnrate_estimate as the beneficiary of the data, implying an alternative use case (estimating vs. recording). However, it does not explicitly state when NOT to use the tool or name alternatives directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dedupq_checkAIdempotentInspect
Before executing any LLM task, check if an identical or semantically similar task has already been completed. Returns cached result on hit, saving one LLM call. On a miss, execute your task and call dedupq_complete to cache the result for future hits. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The task content to check for duplicates. This is hashed and embedded for matching. | |
| task_id | No | Optional caller task ID for tracing and cross-referencing with BurnRate. | |
| hash_only | No | If true, skip vector similarity search and use exact hash matching only. Default: false. | |
| similarity_threshold | No | Cosine similarity threshold for semantic matching, 0.0 to 1.0. Default: 0.80. |
Output Schema
| Name | Required | Description |
|---|---|---|
| match | No | |
| status | No | hit | miss | in_progress |
| cache_hit | No | |
| request_id | No | |
| content_hash | No | |
| credits_used | No | |
| cache_age_seconds | No | |
| credits_remaining | No | |
| fallback_behavior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the hit/miss behavior, the cost of 1 credit, and the complementary dedupq_complete flow, adding value beyond the annotations (readOnlyHint=false, idempotentHint=true). It does not mention potential side effects on the cache or error conditions, but those are not critical given the simple check purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each conveying distinct information: purpose, hit/miss behavior, and cost. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core workflow (check, execute, complete), mentions cost, and relies on the output schema for return values. It is adequate for a tool with 4 parameters and 100% schema coverage, though it could mention edge cases like cache misses on similar content or stale results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add significant parameter semantics beyond what the schema already provides, such as the hashing behavior for content, which is already in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool checks for identical or semantically similar tasks before executing LLM tasks, and differentiates from dedupq_complete by explaining that on a miss, the user should execute the task and call dedupq_complete to cache the result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Before executing any LLM task, check...' providing clear when-to-use. It also gives an alternative—calling dedupq_complete after a miss—but does not mention explicit conditions when not to use the tool, so it falls short of fully explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dedupq_completeAIdempotentInspect
After executing a task, store the result so future identical or similar tasks return a cache hit via dedupq_check. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes | The task result to cache. Can be any JSON value. | |
| content | Yes | Original task content. Used to compute hash and embedding for future matching. | |
| task_id | No | Optional task ID. Used as the database row ID if provided. | |
| hash_only | No | If true, skip embedding generation. Default: false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stored | No | |
| task_id | No | |
| request_id | No | |
| content_hash | No | |
| credits_used | No | |
| has_embedding | No | |
| credits_remaining | No | |
| fallback_behavior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false (write operation), idempotentHint=true, and destructiveHint=false. The description adds the credit cost (2 credits) and explains the cache mechanism, providing useful behavioral context beyond annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys purpose, mechanism, and cost without wasted words. Every clause earns its place, making it concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple cache store tool with full schema and an output schema, the description covers the essential purpose, cost, and relationship to dedupq_check. However, the workflow order (e.g., calling after a cache miss) is only implied, not explicitly stated, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with each parameter (content, result, task_id, hash_only) already well-described. The description does not add significant meaning beyond mapping 'content' to original task content and 'result' to the stored result. Baseline 3 is appropriate because the schema handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: store the task result after execution, with a specific purpose (future cache hits via dedupq_check). It distinguishes this tool from siblings by naming the complementary dedupq_check tool. The verb 'store' combined with the resource 'result' gives unambiguous intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use: after executing a task, to enable future cache hits. It references dedupq_check as the corresponding lookup tool, implying a usage workflow. However, it does not explicitly state when not to use the tool or compare it to alternatives beyond the companion tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guardrail_checkAIdempotentInspect
Evaluate a proposed agent action against your governance policies. Returns allow or deny with the matched policy reason. Requires at least one active policy created via guardrail_create_policy. Deterministic rule evaluation — no LLM. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Agent identifier. | |
| proposed_action | Yes | Action to evaluate. Must contain a 'type' field. Example: {"type": "http_request", "url": "https://external.example.com"} or {"type": "file_write", "path": "/etc/config"}. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | |
| audit_id | No | |
| decision | No | |
| policy_id | No | |
| request_id | No | |
| credits_used | No | |
| credits_remaining | No | |
| fallback_behavior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral details beyond annotations: it is deterministic, uses no LLM, and costs 1 credit. It also states the return type (allow/deny with reason). The annotation idempotentHint and destructiveHint are consistent, and no contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—four sentences, each adding information: purpose, return value, prerequisite, and behavioral traits. It is front-loaded with the core function and avoids fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations are present, the description covers necessary context: what the tool does, what it requires, and its cost/determinism. It is complete enough for an agent to decide whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed descriptions and an example for proposed_action, so the description need not repeat parameter semantics. The only param-related addition is the prerequisite mention, which applies to the overall call rather than to a specific parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool evaluates a proposed agent action against governance policies, using a specific verb ('Evaluate') and resource ('your governance policies'). It distinguishes itself from siblings by focusing on policy-based allow/deny, unlike dedupq_check or qualitygate_validate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an essential prerequisite: at least one active policy created via guardrail_create_policy, which tells the agent when the tool is usable. It does not explicitly name alternatives or exclusion cases, but the context implies this is the policy-checking tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guardrail_create_policyAInspect
Create a persistent governance policy that guardrail_check evaluates on every subsequent call. Define rules using and/or/not operators over action types, resource patterns, and budget thresholds. Call this before using guardrail_check — checks require at least one active policy. Policies persist until explicitly deleted. Duplicate policy names return an error. Returns the created policy with its ID and active status.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique policy name per org. Examples: 'no-delete-in-prod', 'budget-cap-50', 'pii-block'. | |
| rules | Yes | Array of rule objects evaluated against the proposed_action in guardrail_check. Leaf operators: eq, starts_with, contains, gt, lt (compare field to value). Compound operators: and, or, not (nest sub-rules in a rules array). Example: [{operator:'eq', field:'type', value:'file_write'}] blocks all file writes. Nested example: [{operator:'and', rules:[{operator:'eq',field:'type',value:'api_call'},{operator:'contains',field:'url',value:'prod'}]}] blocks prod API calls. | |
| priority | No | Optional. Evaluation order. Default: 0. | |
| description | No | Optional human-readable summary of what this policy enforces. Returned in guardrail_check responses and guardrail_list_policies output for auditability. | |
| action_types | No | Optional. Restrict this policy to only evaluate when proposed_action.type matches one of these values. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply the policy to all action types regardless of type field. |
Output Schema
| Name | Required | Description |
|---|---|---|
| policy | No | |
| request_id | No | |
| credits_used | No | |
| credits_remaining | No | |
| fallback_behavior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the minimal annotations by disclosing persistence ('Policies persist until explicitly deleted'), error behavior ('Duplicate policy names return an error'), and return value ('Returns the created policy with its ID and active status'). These details add significant context beyond the annotations, which only provide basic hints. However, it doesn't mention potential authorization requirements or the interaction of multiple policies, so it's not fully comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses six short, informative sentences with no redundancy. It is front-loaded with the primary purpose, followed by usage, persistence, error handling, and return value. Every sentence earns its place, and there is no padding or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return value details are covered separately. The description explains prerequisite ('Call this before using guardrail_check'), persistence, error condition, and return behavior. It lacks specifics on how multiple policies are evaluated together, but given the priority parameter in the schema and the companion guardrail_check tool, this is a minor gap. Overall, the description provides enough context for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning all parameters have descriptions. The description adds a high-level summary of rule syntax ('Define rules using and/or/not operators over action types, resource patterns, and budget thresholds'), but the schema already provides detailed examples for each parameter. Thus the description adds marginal value beyond the schema, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Create a persistent governance policy' with a specific verb and resource. It explicitly explains that guardrail_check evaluates the policy on subsequent calls, distinguishing it from sibling tools like guardrail_check itself, which presumably evaluates policies. The tool's role as a policy creator is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Call this before using guardrail_check — checks require at least one active policy.' This directly tells the agent when to use this tool relative to its sibling, and the note about duplicate policy names returning an error also informs the agent to avoid name collisions. This is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pitfalldb_queryAIdempotentInspect
Check for known failure patterns before executing a task type. Returns pitfalls with severity, fix suggestions, and confidence scores. After your agent runs, submit failures via pitfalldb_report so others benefit. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | Optional filters. | |
| task_type | Yes | Task category: code_generation, web_search, data_analysis, etc. | |
| task_description | No | Optional. Natural-language task description for semantic search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| pitfalls | No | |
| request_id | No | |
| credits_used | No | |
| total_matching | No | |
| credits_remaining | No | |
| fallback_behavior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the credit cost ('Costs 2 credits'), a behavioral trait not present in annotations. It also summarizes the return contents (severity, fix suggestions, confidence scores). This adds meaningful context beyond the annotations, which already indicate read-only and idempotent behavior, but the cost is an important non-obvious effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, and includes the return format, cost, and a pointer to the sibling reporting tool. Every sentence contributes novel information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich input schema, an output schema, and annotations, the description sufficiently covers the tool's behavior. It specifies when to use it, what it returns, and the associated cost, leaving no critical gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for parameters, so the baseline is 3. The description does not elaborate on parameter usage beyond what the schema already provides; the only hint is the notion of 'task type' which is a schema field. No additional semantic clarification is offered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Check for known failure patterns before executing a task type.' It also specifies the output ('pitfalls with severity, fix suggestions, and confidence scores'), which distinguishes it from sibling tools like pitfalldb_report. This is a specific verb-resource pair with clear scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using the tool 'before executing a task type,' providing clear usage context. It also suggests the complement: 'After your agent runs, submit failures via pitfalldb_report.' While it does not mention all alternative tools, it gives a concrete usage pattern and a related action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pitfalldb_reportAIdempotentInspect
Report an agent failure. PII-scrubbed before storage. Linked to existing pitfalls if similar. Free — no credits charged.
| Name | Required | Description | Default |
|---|---|---|---|
| failure | Yes | Failure details. | |
| task_type | Yes | Task category. | |
| task_description | Yes | Description of the failed task. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| verified | No | |
| report_id | No | |
| request_id | No | |
| credits_used | No | |
| credits_remaining | No | |
| fallback_behavior | No | |
| linked_pitfall_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds valuable behavioral context: PII scrubbing before storage, linking to existing pitfalls, and the fact that it's free. These disclose important privacy and deduplication behaviors that are not stated in annotations, enriching the agent's understanding of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: four short sentences, each adding distinct information (action, privacy, deduplication, cost). No fluff or redundancy exists; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 params, nested object) and the presence of output schema and annotations, the description covers the essential behavioral points: purpose, PII handling, linking, and cost. It could mention explicit usage scenarios relative to sibling tools, but the current description is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with meaningful descriptions for every parameter, including nested fields. The tool description does not add any parameter-specific details beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb-resource pair 'Report an agent failure,' which clearly states the tool's purpose. This distinguishes it from sibling tools like pitfalldb_query, which is for querying, not reporting. The additional context about PII scrubbing and linking further clarifies the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for reporting agent failures, which is a distinct usage context from sibling tools. It does not explicitly mention alternatives or exclusions, but the differentiation from pitfalldb_query is implicit and clear, qualifying it as 'clear context, no exclusions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qualitygate_validateAIdempotentInspect
After your agent generates output, validate it against your rules before shipping. Runs deterministic checks (regex, JSON schema, syntax) plus optional LLM-powered tone and factual analysis. Returns a structured verdict (pass, warn, or fail) with a 0-100 score and per-check issue details. Use qualitygate_trends to spot recurring failure patterns over time. Variable cost: 1 credit per deterministic check, 8 credits per LLM check.
| Name | Required | Description | Default |
|---|---|---|---|
| output | Yes | The agent output text to validate. | |
| schema | No | JSON Schema to validate output against. | |
| language | No | Code language for syntax check: json, python, javascript, typescript. | |
| override | No | Force pass. Requires override_reason. | |
| directives | No | Directive objects. Types: must_include, must_not_include, must_match, must_not_match, must_contain, must_not_contain, min_length, max_length. | |
| check_types | No | Checks to run. Auto-inferred if omitted. | |
| override_reason | No | Required when override is true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | No | |
| summary | No | |
| verdict | No | |
| checks_run | No | |
| request_id | No | |
| credits_used | No | |
| credits_remaining | No | |
| fallback_behavior | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the return structure (verdict with pass/warn/fail, 0-100 score, per-check issue details) and variable costs per check type. It also highlights optional LLM-powered tone and factual analysis, giving the agent useful behavioral context. The description does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each packed with essential information: when to use, what it does, what it returns, a pointer to a related tool, and cost structure. It is front-loaded and contains no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers the core purpose, usage window, return format, and cost, while the output schema handles verdict/score details. It omits discussion of the 'override' parameter and filter directives, but the schema covers those. The presence of output schema and annotations reduces the burden on the description, making it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds some context by grouping checks into deterministic vs LLM-powered and mentioning cost implications, but it does not elaborate on specific parameters like 'override' or 'directives'. The schema itself carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates agent output against user-defined rules, using deterministic checks and optional LLM analysis. It explicitly distinguishes itself from related tools like qualitygate_trends, which is for spotting recurring failure patterns. The verb 'validate' plus the resource 'agent output' makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear timing guidance ('After your agent generates output, validate it ... before shipping') and an explicit alternative for trend analysis. However, it does not mention when *not* to use this tool or compare it with other validation-like sibling tools, so it lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rigor_executeAInspect
Execute a structured workflow end-to-end. Call rigor_plan first (free) to preview the step sequence and cost estimate before committing credits. Classifies the task, selects the optimal tool sequence, and executes each step with the right LLM model. Returns a complete deliverable — solution designs, competitive analyses, governance documents, and more. Supports SSE streaming for real-time progress, webhook callback, or polling. For atomic work — classification, scoring, ranking, entity extraction, query parsing — set preferences.execution to 'direct' and declare preferences.output_contract to get validated JSON records from a single call, routed to the cheapest model that holds the schema.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Additional context for the workflow. | |
| delivery | No | Delivery method. Default: polling (MCP clients typically can't handle SSE). | |
| task_type | No | Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, compose, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape. | |
| preferences | No | Optional workflow preferences. | |
| context_fields | No | Optional, with prior_workflow_id: the fields to carry over. Pass ["full_step_results"] for every step output in full. | |
| task_description | Yes | Natural language description of the task, at most 4,000 characters. Be specific — include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.' | |
| prior_workflow_id | No | Optional: the workflow_id (wr_…) of a finished workflow in your workspace to build on. Its results are passed to this run as context. It is charged as a new run at the normal quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| status | No | |
| poll_url | No | |
| execution | No | Present with value 'direct' when direct execution ran. Absent for standard multi-call execution. |
| task_type | No | |
| value_class | No | |
| workflow_id | No | |
| delivery_mode | No | |
| available_modes | No | |
| estimated_credits | No | |
| execution_fallback | No | True when you explicitly requested direct execution and it could not be honoured — the workflow ran as standard multi-call instead. Never set for an auto-selected attempt, since you did not ask. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only the safety profile (readOnly=false, idempotent=false, openWorld=true, destructive=false); the description goes well beyond by disclosing the credit/billing model (prior_workflow_id 'is charged as a new run at the normal quote'), the 402 max_budget_exceeded refusal that fires before anything runs or is charged, delivery semantics (SSE/webhook/polling, with polling the MCP default), and the execution-mode fallbacks. These are the operational traits an agent most needs and none are in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then the rigor_plan prerequisite, then the direct-execution branch — a sensible ordering. However, the execution-mode sentence is a very long run-on packing several edge cases, and the direct/output_contract guidance largely duplicates what the schema fields already say, so a bit of it does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description needn't explain return values, and it correctly spends its length on routing, cost, delivery, and refusal behavior instead. Annotations, a fully documented 7-param schema, and this description together leave nothing an agent needs missing before invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all 7 parameters, including the nested output_contract and delivery objects. The description restates the same guidance (direct execution, output_contract validation, delivery methods) rather than adding syntax, formats, or defaults the schema lacks. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb+resource ('Execute a structured workflow end-to-end') and immediately scopes what the tool produces (solution designs, competitive analyses, governance documents) and how it routes work (classifies the task, selects a tool sequence, executes each step). It also distinguishes itself from the sibling rigor_plan by naming it as the free preview step. An agent can separate this from rigor_status/rigor_workflows 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call rigor_plan first to preview sequence and cost before committing credits, and gives an explicit branch: for atomic work set preferences.execution='direct' with an output_contract. It also states fallback conditions (attachments or prior_workflow_id force standard execution). This is when-to-use, when-not, and alternative-selection guidance all in one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rigor_planARead-onlyIdempotentInspect
Before executing a complex task, get a structured workflow plan with per-step cost estimates. Classifies your task, selects the optimal framework sequence, and returns the full plan without executing anything. The response's allowed_modes tells you whether this plan is eligible for direct execution. Free — no credits charged.
| Name | Required | Description | Default |
|---|---|---|---|
| task_type | No | Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, compose, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape. | |
| preferences | No | Optional workflow preferences. | |
| context_fields | No | Optional, with prior_workflow_id: the fields to carry over. Pass ["full_step_results"] for every step output in full. | |
| task_description | Yes | Natural language description of the task, at most 4,000 characters. Be specific — include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.' | |
| prior_workflow_id | No | Optional: the workflow_id (wr_…) of a finished workflow in your workspace to build on. Its results are passed to this run as context. It is charged as a new run at the normal quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| plan | No | |
| generated_title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: it explicitly does not execute, it is free with no credits charged, and allowed_modes in the response signals execution eligibility — cost and side-effect behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and scope, then the classification/selection behavior, then the eligibility signal, then cost. Every sentence earns its place with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a planning tool with an output schema, the description covers the essentials: what it produces, that it does not execute, cost, and how to read execution eligibility. It stops short of explaining the follow-up path to rigor_execute, a minor gap given the rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested parameters (task_type, preferences, output_contract, prior_workflow_id) are thoroughly self-documented in the schema. The description adds no parameter-level detail beyond the response field allowed_modes, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('get a structured workflow plan with per-step cost estimates') and delineates scope precisely: classifies, selects a framework sequence, and returns the plan 'without executing anything' — which cleanly separates it from the rigor_execute sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening phrase 'Before executing a complex task' gives clear temporal context for when to call it, and the non-execution clause implies the plan-then-execute handoff. However, it never names rigor_execute (or rigor_status/rigor_workflows) as the alternative, so the routing 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.
rigor_statusARead-onlyIdempotentInspect
Check the status of a running or completed Rigor workflow. Returns progress, step results, and the full deliverable when complete. Use after rigor_execute with polling delivery to retrieve results.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | Yes | The workflow ID returned by rigor_execute (format: wr_xxx). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| workflow | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety bar is low. The description adds real value beyond that by disclosing what the call surfaces (progress, step results, full deliverable once complete) and that it is the retrieval half of a polling pattern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the purpose front-loaded and the usage rule last. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only status tool with an output schema and full schema coverage, nothing an agent needs is missing. The polling-lifecycle context is supplied and return values are covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single workflow_id parameter already documents its origin and 'wr_xxx' format. The description adds no parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Check') and resource ('status of a running or completed Rigor workflow'), and names the sibling it depends on (rigor_execute). An agent can distinguish this polling/status tool from rigor_plan, rigor_workflows, and rigor_execute 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition: 'Use after rigor_execute with polling delivery to retrieve results.' That is enough to route correctly, though it does not state when NOT to use it (e.g. synchronous delivery, or if the workflow ID is unknown).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rigor_workflowsARead-onlyIdempotentInspect
List and search Rigor workflows for your organization, with filtering and pagination. Returns status, progress, capacity usage, and available actions per workflow. Use to monitor workflow state, understand concurrent limit usage, identify stuck or completed workflows, and — via q — find prior work on a subject before commissioning it again. Pair a q hit with rigor_status to read that workflow's deliverable.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search the workflow title and task description. Every whitespace-separated term must appear in one or the other, as a case-insensitive substring — so "vector search postgres" matches a task described as "add vector search to an existing Postgres-backed SaaS app". Substring matching, not full-text: there is no stemming and no ranking, so "migrating" does not match "migration". Max 200 characters and 8 terms; punctuation is treated as a separator and wildcards are not supported. | |
| limit | No | Page size (default 20, max 100) | |
| cursor | No | Pagination cursor (created_at timestamp from previous page) | |
| status | No | Filter by status (comma-separated). Valid values: executing, step_executing, completed, failed, halted, pending_approval, cancelled. E.g. "halted,failed,pending_approval" | |
| folder_id | No | Filter by folder ID. Pass "unassigned" for workflows in no folder | |
| task_type | No | Filter by classified task type | |
| created_after | No | ISO timestamp — only workflows created after this time | |
| created_before | No | ISO timestamp — only workflows created before this time | |
| counts_toward_limit | No | Filter to workflows counting toward the concurrent limit |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| workflows | No | |
| pagination | No | |
| credits_remaining | No | |
| concurrent_summary | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description goes beyond annotations by disclosing that it lists and searches workflows, returns per-workflow status/progress/capacity usage/available actions, and supports filtering/pagination. It also reveals the tool surfaces data that could be used to infer concurrency limits and find prior work, which is useful context. It does not claim any side effects and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact paragraph that front-loads the core function, then lists returned data, then gives use cases, then a sibling-routing tip. Every sentence contributes either scope, use-case, or navigation guidance. There is no repetition of schema details and no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a read-only list/search operation with an output schema, full parameter docs, and strong annotations. The description covers why the tool exists, what it returns, and how to route to rigor_status. There is no missing information needed for an agent to select and invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all nine parameters are already documented well, especially q which has a detailed substring-matching explanation. The description adds meaning by framing the q parameter's practical purpose (find prior work on a subject before commissioning it again) and framing the tool's overall filtering/pagination behavior. It also highlights status as a filter relevant to identifying stuck workflows, which complements the schema's parameter list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (list/search), a specific resource (Rigor workflows), and enumerates the returned fields (status, progress, capacity usage, available actions) plus pagination and filtering. It clearly distinguishes itself from siblings like rigor_status by positioning itself as the workflow-level discovery tool and telling the agent to pair a q hit with rigor_status for deliverable reads, and differs from rigor_execute/rigor_plan which create/run workflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states explicit use cases: monitor workflow state, understand concurrent limit usage, identify stuck/completed workflows, and find prior work via q before commissioning it again. It gives a concrete routing rule: pair a q hit with rigor_status to read the deliverable. It does not explicitly say when not to use it, but the openWorldHint:false and the clear scope make the guidance strong and actionable.
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.
2 tool updates
- Changed
rigor_execute3 fields changed- added
Input schema / properties / context_fieldsAdded value: +{ + "description": "Optional, with prior_workflow_id: the fields to carry over. Pass [\"full_step_results\"] for every step output in full.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / preferences / properties / execution / descriptionPrevious value: -"Set to 'direct' to compose the plan's content frameworks into a single LLM call and route cost-first, using a per-task-type model floor that moves when a cheaper model earns the work. Research steps, process steps (classification-verify, review protocol, synthesis) and the quality review each remain separate calls, so this is not a one-call-per-workflow guarantee: for atomic task types, which have a single content framework, the call count matches standard execution and the saving is the model. Supplying output_contract replaces the quality-review call with deterministic validation, which is one fewer call. No intermediate outputs. Available at every tier. Auto-selected for atomic task types when no execution preference is given. Falls back to standard execution when combined with require_approval or interactive mode, or when the plan exceeds the composition size limit. Attachments and prior_workflow_id chaining are NOT applied — use standard execution for those."New value: +"Set to 'direct' to compose the plan's content frameworks into a single LLM call and route cost-first, using a per-task-type model floor that moves when a cheaper model earns the work. Research steps, process steps (classification-verify, review protocol, synthesis) and the quality review each remain separate calls, so this is not a one-call-per-workflow guarantee: for atomic task types, which have a single content framework, the call count matches standard execution and the saving is the model. Supplying output_contract replaces the quality-review call with deterministic validation, which is one fewer call. No intermediate outputs. Available at every tier. Auto-selected for atomic task types when no execution preference is given. Falls back to standard execution when combined with require_approval or interactive mode, or when the plan exceeds the composition size limit. With attachments or prior_workflow_id, the workflow runs as standard execution instead, so the attachments and the earlier results are applied." - added
Input schema / properties / prior_workflow_idAdded value: +{ + "description": "Optional: the workflow_id (wr_…) of a finished workflow in your workspace to build on. Its results are passed to this run as context. It is charged as a new run at the normal quote.", + "type": "string" +}
- Changed
rigor_plan3 fields changed- added
Input schema / properties / context_fieldsAdded value: +{ + "description": "Optional, with prior_workflow_id: the fields to carry over. Pass [\"full_step_results\"] for every step output in full.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / preferences / properties / execution / descriptionPrevious value: -"Set to 'direct' to compose the plan's content frameworks into a single LLM call and route cost-first, using a per-task-type model floor that moves when a cheaper model earns the work. Research steps, process steps (classification-verify, review protocol, synthesis) and the quality review each remain separate calls, so this is not a one-call-per-workflow guarantee: for atomic task types, which have a single content framework, the call count matches standard execution and the saving is the model. Supplying output_contract replaces the quality-review call with deterministic validation, which is one fewer call. No intermediate outputs. Available at every tier. Auto-selected for atomic task types when no execution preference is given. Falls back to standard execution when combined with require_approval or interactive mode, or when the plan exceeds the composition size limit. Attachments and prior_workflow_id chaining are NOT applied — use standard execution for those."New value: +"Set to 'direct' to compose the plan's content frameworks into a single LLM call and route cost-first, using a per-task-type model floor that moves when a cheaper model earns the work. Research steps, process steps (classification-verify, review protocol, synthesis) and the quality review each remain separate calls, so this is not a one-call-per-workflow guarantee: for atomic task types, which have a single content framework, the call count matches standard execution and the saving is the model. Supplying output_contract replaces the quality-review call with deterministic validation, which is one fewer call. No intermediate outputs. Available at every tier. Auto-selected for atomic task types when no execution preference is given. Falls back to standard execution when combined with require_approval or interactive mode, or when the plan exceeds the composition size limit. With attachments or prior_workflow_id, the workflow runs as standard execution instead, so the attachments and the earlier results are applied." - added
Input schema / properties / prior_workflow_idAdded value: +{ + "description": "Optional: the workflow_id (wr_…) of a finished workflow in your workspace to build on. Its results are passed to this run as context. It is charged as a new run at the normal quote.", + "type": "string" +}
1 tool update
- Changed
rigor_status1 field changed- added
Output schema / properties / workflow / properties / quality_breakdownAdded value: +{ + "properties": { + "could_not_verify": { + "type": [ + "object", + "null" + ] + }, + "evidence": { + "type": "object" + }, + "requirements": { + "type": "object" + }, + "schema_version": { + "type": "number" + }, + "score": { + "type": "object" + }, + "summary": { + "type": "string" + } + }, + "type": "object" +}
2 tool updates
- Changed
rigor_execute1 field changed- changed
Input schema / properties / task_description / descriptionPrevious value: -"Natural language description of the task. Be specific — include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'"New value: +"Natural language description of the task, at most 4,000 characters. Be specific — include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'"
- Changed
rigor_plan3 fields changed- changed
Input schema / properties / preferences / properties / only_frameworks / descriptionPrevious value: -"Restrict plan to only these frameworks (mutex with skip_frameworks)."New value: +"Restrict the plan to these frameworks (display name or ID). Applied before skip_frameworks; unknown names are reported in warnings." - changed
Input schema / properties / preferences / properties / skip_frameworks / descriptionPrevious value: -"Framework names to exclude from the plan."New value: +"Frameworks to exclude, by the display name the plan shows or by ID, any case. Unknown names are reported in warnings." - changed
Input schema / properties / task_description / descriptionPrevious value: -"Natural language description of the task. Be specific — include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'"New value: +"Natural language description of the task, at most 4,000 characters. Be specific — include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'"
2 tool updates
- Changed
rigor_execute1 field changed- changed
Input schema / properties / preferences / properties / max_budget_usd / descriptionPrevious value: -"Maximum budget in USD."New value: +"Spending ceiling in USD. If the plan's quote is still above it after Rigor fits the plan (cheaper models, optional steps dropped), rigor_plan returns a max_budget_exceeded warning and rigor_execute refuses with 402 max_budget_exceeded before anything runs or is charged."
- Changed
rigor_plan1 field changed- changed
Input schema / properties / preferences / properties / max_budget_usd / descriptionPrevious value: -"Budget ceiling in USD. Triggers warning if plan exceeds this."New value: +"Spending ceiling in USD. If the plan's quote is still above it after Rigor fits the plan (cheaper models, optional steps dropped), rigor_plan returns a max_budget_exceeded warning and rigor_execute refuses with 402 max_budget_exceeded before anything runs or is charged."
2 tool updates
- Changed
rigor_execute1 field changed- changed
Input schema / properties / task_type / descriptionPrevious value: -"Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape."New value: +"Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, compose, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape."
- Changed
rigor_plan1 field changed- changed
Input schema / properties / task_type / descriptionPrevious value: -"Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape."New value: +"Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, compose, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape."
1 tool update
- Changed
rigor_workflows6 fields changed- added
Input schema / properties / created_afterAdded value: +{ + "description": "ISO timestamp — only workflows created after this time", + "type": "string" +} - added
Input schema / properties / created_beforeAdded value: +{ + "description": "ISO timestamp — only workflows created before this time", + "type": "string" +} - added
Input schema / properties / folder_idAdded value: +{ + "description": "Filter by folder ID. Pass \"unassigned\" for workflows in no folder", + "type": "string" +} - added
Input schema / properties / qAdded value: +{ + "description": "Search the workflow title and task description. Every whitespace-separated term must appear in one or the other, as a case-insensitive substring — so \"vector search postgres\" matches a task described as \"add vector search to an existing Postgres-backed SaaS app\". Substring matching, not full-text: there is no stemming and no ranking, so \"migrating\" does not match \"migration\". Max 200 characters and 8 terms; punctuation is treated as a separator and wildcards are not supported.", + "type": "string" +} - added
Output schema / properties / workflows / items / properties / history_lockedAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / workflows / items / properties / task_excerptAdded value: +{ + "type": "string" +}
2 tool updates
- Changed
rigor_execute5 fields changed- added
Input schema / properties / preferences / properties / executionAdded value: +{ + "description": "Set to 'direct' to compose the plan's content frameworks into a single LLM call and route cost-first, using a per-task-type model floor that moves when a cheaper model earns the work. Research steps, process steps (classification-verify, review protocol, synthesis) and the quality review each remain separate calls, so this is not a one-call-per-workflow guarantee: for atomic task types, which have a single content framework, the call count matches standard execution and the saving is the model. Supplying output_contract replaces the quality-review call with deterministic validation, which is one fewer call. No intermediate outputs. Available at every tier. Auto-selected for atomic task types when no execution preference is given. Falls back to standard execution when combined with require_approval or interactive mode, or when the plan exceeds the composition size limit. Attachments and prior_workflow_id chaining are NOT applied — use standard execution for those.", + "enum": [ + "direct" + ], + "type": "string" +} - added
Input schema / properties / preferences / properties / output_contractAdded value: +{ + "description": "Only read when execution is \"direct\". Declares the JSON shape you want back, so the answer is generated against your schema and validated against it before return, instead of returned as prose you have to parse. A conforming run also skips the quality-review call, costing 1 LLM call rather than 2. The schema is closed: a record carrying an undeclared key is rejected exactly like one missing a required key.", + "properties": { + "count": { + "description": "Bounds on the number of entries. Only read when shape is \"array\".", + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "type": "object" + }, + "fields": { + "description": "The schema for 1 record.", + "items": { + "properties": { + "description": { + "description": "Passed to the model as the field's description.", + "type": "string" + }, + "enum": { + "description": "Restricts a string field to a fixed set of values.", + "items": { + "type": "string" + }, + "type": "array" + }, + "maximum": { + "description": "Upper bound for a numeric field.", + "type": "number" + }, + "minimum": { + "description": "Lower bound for a numeric field.", + "type": "number" + }, + "name": { + "description": "The JSON key.", + "type": "string" + }, + "required": { + "description": "Defaults to true. Set false for a field that may be absent.", + "type": "boolean" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "number", + "integer", + "boolean", + "array", + "object" + ], + "type": "string" + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "selection": { + "description": "Use when you want the model to over-generate candidates and Rigor to sort, threshold, and cap them before the count bounds are checked.", + "properties": { + "maxCount": { + "type": "number" + }, + "minCount": { + "type": "number" + }, + "minScore": { + "type": "number" + }, + "scoreField": { + "type": "string" + } + }, + "type": "object" + }, + "shape": { + "description": "\"object\" for 1 record, \"array\" for 1 entry per input item.", + "enum": [ + "object", + "array" + ], + "type": "string" + }, + "task_type": { + "description": "Your own label for the work. Echoed into telemetry. Not read as a framework name and does not change routing.", + "type": "string" + } + }, + "required": [ + "task_type", + "shape", + "fields" + ], + "type": "object" +} - changed
Input schema / properties / task_type / descriptionPrevious value: -"Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation."New value: +"Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape." - added
Output schema / properties / executionAdded value: +{ + "description": "Present with value 'direct' when direct execution ran. Absent for standard multi-call execution.", + "type": "string" +} - added
Output schema / properties / execution_fallbackAdded value: +{ + "description": "True when you explicitly requested direct execution and it could not be honoured — the workflow ran as standard multi-call instead. Never set for an auto-selected attempt, since you did not ask.", + "type": "boolean" +}
- Changed
rigor_plan4 fields changed- added
Input schema / properties / preferences / properties / executionAdded value: +{ + "description": "Set to 'direct' to compose the plan's content frameworks into a single LLM call and route cost-first, using a per-task-type model floor that moves when a cheaper model earns the work. Research steps, process steps (classification-verify, review protocol, synthesis) and the quality review each remain separate calls, so this is not a one-call-per-workflow guarantee: for atomic task types, which have a single content framework, the call count matches standard execution and the saving is the model. Supplying output_contract replaces the quality-review call with deterministic validation, which is one fewer call. No intermediate outputs. Available at every tier. Auto-selected for atomic task types when no execution preference is given. Falls back to standard execution when combined with require_approval or interactive mode, or when the plan exceeds the composition size limit. Attachments and prior_workflow_id chaining are NOT applied — use standard execution for those.", + "enum": [ + "direct" + ], + "type": "string" +} - added
Input schema / properties / preferences / properties / output_contractAdded value: +{ + "description": "Only read when execution is \"direct\". Declares the JSON shape you want back, so the answer is generated against your schema and validated against it before return, instead of returned as prose you have to parse. A conforming run also skips the quality-review call, costing 1 LLM call rather than 2. The schema is closed: a record carrying an undeclared key is rejected exactly like one missing a required key.", + "properties": { + "count": { + "description": "Bounds on the number of entries. Only read when shape is \"array\".", + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "type": "object" + }, + "fields": { + "description": "The schema for 1 record.", + "items": { + "properties": { + "description": { + "description": "Passed to the model as the field's description.", + "type": "string" + }, + "enum": { + "description": "Restricts a string field to a fixed set of values.", + "items": { + "type": "string" + }, + "type": "array" + }, + "maximum": { + "description": "Upper bound for a numeric field.", + "type": "number" + }, + "minimum": { + "description": "Lower bound for a numeric field.", + "type": "number" + }, + "name": { + "description": "The JSON key.", + "type": "string" + }, + "required": { + "description": "Defaults to true. Set false for a field that may be absent.", + "type": "boolean" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "number", + "integer", + "boolean", + "array", + "object" + ], + "type": "string" + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "selection": { + "description": "Use when you want the model to over-generate candidates and Rigor to sort, threshold, and cap them before the count bounds are checked.", + "properties": { + "maxCount": { + "type": "number" + }, + "minCount": { + "type": "number" + }, + "minScore": { + "type": "number" + }, + "scoreField": { + "type": "string" + } + }, + "type": "object" + }, + "shape": { + "description": "\"object\" for 1 record, \"array\" for 1 entry per input item.", + "enum": [ + "object", + "array" + ], + "type": "string" + }, + "task_type": { + "description": "Your own label for the work. Echoed into telemetry. Not read as a framework name and does not change routing.", + "type": "string" + } + }, + "required": [ + "task_type", + "shape", + "fields" + ], + "type": "object" +} - changed
Input schema / properties / task_type / descriptionPrevious value: -"Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation."New value: +"Optional hint to bypass automatic classification. Passing it also removes the slowest classification tiers from the critical path, so send it whenever you know the shape. Multi-step deliverable types: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation. Atomic single-call types, which auto-select direct execution: tag, score, rerank, extract_entities, parse_query, quick_research, quick_classification, quick_extraction, quick_scoring. Call GET /api/rigor/task-types for the full vocabulary with each type's shape." - added
Output schema / properties / plan / properties / allowed_modesAdded value: +{ + "description": "Execution modes available for this plan beyond the standard multi-call default. Contains 'direct' when the plan is eligible for direct execution; empty array when it is not.", + "items": { + "type": "string" + }, + "type": "array" +}
1 tool update
- Changed
rigor_status1 field changed- added
Output schema / properties / workflow / properties / completed_step_summaries / items / properties / frameworkAdded value: +{ + "type": "string" +}
15 tool updates
- Changed
burnrate_budget1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "alerts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "date": { + "type": "string" + }, + "fallback_behavior": { + "type": "string" + }, + "projection": { + "properties": { + "hourly_rate_usd": { + "type": "number" + }, + "hours_remaining": { + "type": "number" + }, + "projected_day_total_usd": { + "type": "number" + } + }, + "type": "object" + }, + "request_id": { + "type": "string" + }, + "spend": { + "properties": { + "by_model": { + "items": { + "type": "object" + }, + "type": "array" + }, + "total_calls": { + "type": "number" + }, + "total_usd": { + "type": "number" + }, + "total_usd_formatted": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" +}
- Changed
burnrate_estimate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "estimate": { + "properties": { + "estimate_complete": { + "type": "boolean" + }, + "pricing_as_of": { + "type": "string" + }, + "pricing_source": { + "type": "string" + }, + "recognized_step_count": { + "type": "number" + }, + "step_count": { + "type": "number" + }, + "steps": { + "items": { + "type": "object" + }, + "type": "array" + }, + "total_cost_usd": { + "type": "number" + }, + "total_cost_usd_formatted": { + "type": "string" + }, + "unrecognized_models": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "fallback_behavior": { + "type": "string" + }, + "optimization_suggestions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "request_id": { + "type": "string" + } + }, + "type": "object" +}
- Changed
burnrate_optimize1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "fallback_behavior": { + "type": "string" + }, + "optimized": { + "properties": { + "total_cost_usd": { + "type": "number" + }, + "total_cost_usd_formatted": { + "type": "string" + }, + "total_savings_pct": { + "type": "number" + }, + "total_savings_usd": { + "type": "number" + } + }, + "type": "object" + }, + "original": { + "properties": { + "total_cost_usd": { + "type": "number" + }, + "total_cost_usd_formatted": { + "type": "string" + } + }, + "type": "object" + }, + "request_id": { + "type": "string" + }, + "steps": { + "items": { + "type": "object" + }, + "type": "array" + }, + "suggestions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
burnrate_track1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "actual_cost_usd": { + "type": "number" + }, + "actual_cost_usd_formatted": { + "type": "string" + }, + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "fallback_behavior": { + "type": "string" + }, + "input_tokens": { + "type": "number" + }, + "model": { + "type": "string" + }, + "output_tokens": { + "type": "number" + }, + "pricing_found": { + "type": "boolean" + }, + "provider": { + "type": "string" + }, + "record_id": { + "type": "string" + }, + "request_id": { + "type": "string" + }, + "tracked": { + "type": "boolean" + } + }, + "type": "object" +}
- Changed
dedupq_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "cache_age_seconds": { + "type": "number" + }, + "cache_hit": { + "type": "string" + }, + "content_hash": { + "type": "string" + }, + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "fallback_behavior": { + "type": "string" + }, + "match": { + "properties": { + "cached_at": { + "type": "string" + }, + "match_type": { + "type": "string" + }, + "similarity": { + "type": "number" + }, + "task_id": { + "type": "string" + } + }, + "type": "object" + }, + "request_id": { + "type": "string" + }, + "status": { + "description": "hit | miss | in_progress", + "type": "string" + } + }, + "type": "object" +}
- Changed
dedupq_complete1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "content_hash": { + "type": "string" + }, + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "fallback_behavior": { + "type": "string" + }, + "has_embedding": { + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "stored": { + "type": "boolean" + }, + "task_id": { + "type": "string" + } + }, + "type": "object" +}
- Changed
guardrail_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "audit_id": { + "type": "string" + }, + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "decision": { + "enum": [ + "allow", + "deny", + "stub" + ], + "type": "string" + }, + "fallback_behavior": { + "type": "string" + }, + "policy_id": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "request_id": { + "type": "string" + } + }, + "type": "object" +}
- Changed
guardrail_create_policy1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "fallback_behavior": { + "type": "string" + }, + "policy": { + "properties": { + "action_types": { + "items": { + "type": "string" + }, + "type": "array" + }, + "created_at": { + "type": "string" + }, + "description": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "rules": { + "type": "array" + } + }, + "type": "object" + }, + "request_id": { + "type": "string" + } + }, + "type": "object" +}
- Changed
pitfalldb_query1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "fallback_behavior": { + "type": "string" + }, + "pitfalls": { + "items": { + "properties": { + "description": { + "type": "string" + }, + "fix": { + "type": "string" + }, + "fix_confidence": { + "type": "number" + }, + "frequency": { + "type": "string" + }, + "id": { + "type": "string" + }, + "reports": { + "type": "number" + }, + "severity": { + "type": "string" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "request_id": { + "type": "string" + }, + "total_matching": { + "type": "number" + } + }, + "type": "object" +}
- Changed
pitfalldb_report1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "fallback_behavior": { + "type": "string" + }, + "linked_pitfall_id": { + "type": "string" + }, + "message": { + "type": "string" + }, + "report_id": { + "type": "string" + }, + "request_id": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" +}
- Changed
qualitygate_validate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "checks_run": { + "items": { + "type": "string" + }, + "type": "array" + }, + "credits_remaining": { + "type": "number" + }, + "credits_used": { + "type": "number" + }, + "fallback_behavior": { + "type": "string" + }, + "issues": { + "items": { + "properties": { + "message": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "request_id": { + "type": "string" + }, + "summary": { + "properties": { + "errors": { + "type": "number" + }, + "total": { + "type": "number" + }, + "warnings": { + "type": "number" + } + }, + "type": "object" + }, + "verdict": { + "enum": [ + "pass", + "warn", + "fail" + ], + "type": "string" + } + }, + "type": "object" +}
- Changed
rigor_execute1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "available_modes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "delivery_mode": { + "type": "string" + }, + "estimated_credits": { + "type": "number" + }, + "ok": { + "type": "boolean" + }, + "poll_url": { + "type": "string" + }, + "status": { + "type": "string" + }, + "task_type": { + "type": "string" + }, + "value_class": { + "type": "string" + }, + "workflow_id": { + "type": "string" + } + }, + "type": "object" +}
- Changed
rigor_plan1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "generated_title": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "plan": { + "properties": { + "alternatives": { + "type": "object" + }, + "classification": { + "properties": { + "task_type": { + "type": "string" + }, + "value_class": { + "type": "string" + } + }, + "type": "object" + }, + "cost": { + "properties": { + "credits": { + "type": "number" + }, + "range": { + "type": "object" + }, + "usd": { + "type": "number" + } + }, + "type": "object" + }, + "info": { + "items": { + "type": "string" + }, + "type": "array" + }, + "rigor_level": { + "type": "string" + }, + "sequence": { + "items": { + "properties": { + "estimated_credits": { + "type": "number" + }, + "name": { + "type": "string" + }, + "step": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "warnings": { + "items": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "suggestion": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "workflow_id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" +}
- Changed
rigor_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ok": { + "type": "boolean" + }, + "workflow": { + "properties": { + "actual_steps_executed": { + "type": "number" + }, + "completed_at": { + "type": "string" + }, + "completed_step_summaries": { + "items": { + "properties": { + "model": { + "type": "string" + }, + "step": { + "type": "number" + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "created_at": { + "type": "string" + }, + "credits_used": { + "type": "number" + }, + "current_step": { + "type": "number" + }, + "deliverable": { + "properties": { + "sections": { + "items": { + "properties": { + "content": { + "type": "string" + }, + "heading": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "error": { + "type": "string" + }, + "generated_title": { + "type": "string" + }, + "quality_review": { + "properties": { + "path_to_100": { + "items": { + "type": "string" + }, + "type": "array" + }, + "score": { + "type": "number" + }, + "summary": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "type": "string" + }, + "task_type": { + "type": "string" + }, + "total_steps": { + "type": "number" + }, + "workflow_id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" +}
- Changed
rigor_workflows1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "concurrent_summary": { + "properties": { + "active": { + "type": "number" + }, + "limit": { + "type": "number" + }, + "remaining": { + "type": "number" + } + }, + "type": "object" + }, + "credits_remaining": { + "type": "number" + }, + "ok": { + "type": "boolean" + }, + "pagination": { + "properties": { + "cursor": { + "type": "string" + }, + "has_more": { + "type": "boolean" + }, + "limit": { + "type": "number" + }, + "total_count": { + "type": "number" + } + }, + "type": "object" + }, + "workflows": { + "items": { + "properties": { + "available_actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "completed_at": { + "type": "string" + }, + "counts_toward_limit": { + "type": "boolean" + }, + "created_at": { + "type": "string" + }, + "credits_charged": { + "type": "number" + }, + "current_step": { + "type": "number" + }, + "generated_title": { + "type": "string" + }, + "started_at": { + "type": "string" + }, + "status": { + "type": "string" + }, + "task_type": { + "type": "string" + }, + "total_steps": { + "type": "number" + }, + "workflow_id": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
1 tool update
- Changed
rigor_plan8 fields changed- added
Input schema / properties / preferences / properties / add_frameworksAdded value: +{ + "description": "Inject additional frameworks into the plan.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / preferences / properties / approval_before_stepAdded value: +{ + "description": "Zero-based step indices where approval gates are inserted.", + "items": { + "type": "number" + }, + "type": "array" +} - changed
Input schema / properties / preferences / properties / max_budget_usd / descriptionPrevious value: -"Maximum budget in USD. Plan will warn if estimated cost exceeds this."New value: +"Budget ceiling in USD. Triggers warning if plan exceeds this." - added
Input schema / properties / preferences / properties / only_frameworksAdded value: +{ + "description": "Restrict plan to only these frameworks (mutex with skip_frameworks).", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / preferences / properties / require_approvalAdded value: +{ + "description": "Pause at pending_approval before the final step.", + "type": "boolean" +} - changed
Input schema / properties / preferences / properties / rigor_level / descriptionPrevious value: -"Depth of analysis: quick (fast, lower cost), standard (default, balanced), thorough (deep review, higher cost)."New value: +"Review depth. Default auto-detected from task complexity." - added
Input schema / properties / preferences / properties / rigor_level / enumAdded value: +[ + "quick", + "standard", + "thorough" +] - added
Input schema / properties / preferences / properties / skip_frameworksAdded value: +{ + "description": "Framework names to exclude from the plan.", + "items": { + "type": "string" + }, + "type": "array" +}
2 tool updates
- Changed
burnrate_budget1 field changed- changed
Input schema / properties / daily_limit / descriptionPrevious value: -"Optional. Daily budget in USD. Enables alerts."New value: +"Optional. Daily budget in USD (e.g., 10.0 for a $10/day cap). Enables budget alerts and remaining-balance calculation."
- Changed
guardrail_check1 field changed- changed
Input schema / properties / proposed_action / descriptionPrevious value: -"Action to evaluate. Must contain a 'type' field."New value: +"Action to evaluate. Must contain a 'type' field. Example: {\"type\": \"http_request\", \"url\": \"https://external.example.com\"} or {\"type\": \"file_write\", \"path\": \"/etc/config\"}."
3 tool updates
- Changed
rigor_execute5 fields changed- removed
Input schema / properties / preferences / properties / quality_levelRemoved value: -{ - "description": "minimum | standard | maximum.", - "type": "string" -} - added
Input schema / properties / preferences / properties / rigor_levelAdded value: +{ + "description": "quick | standard (default) | thorough. Controls analysis depth and cost.", + "type": "string" +} - removed
Input schema / properties / preferences / properties / tool_scopeRemoved value: -{ - "description": "mandatory | recommended | all.", - "type": "string" -} - changed
Input schema / properties / task_description / descriptionPrevious value: -"Natural language description of the task. Be specific."New value: +"Natural language description of the task. Be specific — include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'" - changed
Input schema / properties / task_type / descriptionPrevious value: -"Optional classification hint."New value: +"Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation."
- Changed
rigor_plan4 fields changed- removed
Input schema / properties / preferences / properties / quality_levelRemoved value: -{ - "description": "minimum | standard | maximum. Default: standard.", - "type": "string" -} - added
Input schema / properties / preferences / properties / rigor_levelAdded value: +{ + "description": "Depth of analysis: quick (fast, lower cost), standard (default, balanced), thorough (deep review, higher cost).", + "type": "string" +} - removed
Input schema / properties / preferences / properties / tool_scopeRemoved value: -{ - "description": "mandatory | recommended | all. Default: recommended.", - "type": "string" -} - changed
Input schema / properties / task_type / descriptionPrevious value: -"Optional hint to bypass automatic classification. Values: solution_design, governance_change, requirements_analysis, incident_response, code_implementation, competitive_scan, financial_analysis, deployment_execution."New value: +"Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation."
- Changed
rigor_workflows1 field changed- changed
Input schema / properties / status / descriptionPrevious value: -"Filter by status (comma-separated). E.g. \"halted,failed,pending_approval\""New value: +"Filter by status (comma-separated). Valid values: executing, step_executing, completed, failed, halted, pending_approval, cancelled. E.g. \"halted,failed,pending_approval\""
1 tool update
- Added
rigor_workflows
5 tool updates
- Removed
guardrail_list_policies - Removed
pitfalldb_stats - Removed
qualitygate_trends - Removed
rigor_approve - Removed
rigor_resume
2 tool updates
- Added
rigor_approve - Added
rigor_resume
3 tool updates
- Added
rigor_execute - Added
rigor_plan - Added
rigor_status
4 tool updates
- Changed
burnrate_optimize1 field changed- changed
Input schema / properties / plan / descriptionPrevious value: -"Array of plan steps. Same schema as burnrate.estimate."New value: +"Array of plan steps. Same schema as burnrate_estimate: each step needs step, provider, model, estimated_input_tokens, estimated_output_tokens."
- Changed
burnrate_track3 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"Model name: claude-sonnet-4-6, gpt-4o, etc."New value: +"Model identifier as returned by the provider. Examples: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, mistral-large-latest. Unknown models are accepted but cost may show as $0." - changed
Input schema / properties / provider / descriptionPrevious value: -"LLM provider: anthropic, openai, etc."New value: +"LLM provider identifier. Supported: anthropic, openai, google, mistral, cohere, deepseek, together, fireworks, groq. Must match the provider of the model used." - changed
Input schema / properties / task_id / descriptionPrevious value: -"Optional task ID for cross-referencing with DedupQ."New value: +"Optional task ID for cross-referencing spend with DedupQ deduplication results. Use the same task_id passed to dedupq_check to link cost tracking with deduplication."
- Changed
guardrail_create_policy3 fields changed- changed
Input schema / properties / action_types / descriptionPrevious value: -"Optional. Restrict policy to specific action types. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply to all action types."New value: +"Optional. Restrict this policy to only evaluate when proposed_action.type matches one of these values. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply the policy to all action types regardless of type field." - changed
Input schema / properties / description / descriptionPrevious value: -"Optional human-readable description of what this policy enforces."New value: +"Optional human-readable summary of what this policy enforces. Returned in guardrail_check responses and guardrail_list_policies output for auditability." - changed
Input schema / properties / rules / descriptionPrevious value: -"Rule objects evaluated against proposed_action. Leaf operators: eq, starts_with, contains, gt, lt. Compound operators: and, or, not (nest rules array). Example: {operator:'and', rules:[{operator:'eq',field:'action_type',value:'file_write'},{operator:'contains',field:'path',value:'/prod/'}]}."New value: +"Array of rule objects evaluated against the proposed_action in guardrail_check. Leaf operators: eq, starts_with, contains, gt, lt (compare field to value). Compound operators: and, or, not (nest sub-rules in a rules array). Example: [{operator:'eq', field:'type', value:'file_write'}] blocks all file writes. Nested example: [{operator:'and', rules:[{operator:'eq',field:'type',value:'api_call'},{operator:'contains',field:'url',value:'prod'}]}] blocks prod API calls."
- Changed
qualitygate_trends2 fields changed- changed
Input schema / properties / check_type / descriptionPrevious value: -"Optional filter by check type."New value: +"Optional. Filter trends to a single check type: directive_compliance, schema_validation, code_syntax, tone, or factual_claims. Omit to see aggregate trends across all check types." - changed
Input schema / properties / days / descriptionPrevious value: -"Lookback window, 1-90. Default: 30."New value: +"Number of days to look back. Range: 1-90. Default: 30. Use 7 for recent trends, 30 for monthly patterns, 90 for long-term quality tracking."
1 tool update
- Changed
guardrail_create_policy8 fields changed- changed
Input schema / properties / action_types / descriptionPrevious value: -"Optional. Restrict to action types."New value: +"Optional. Restrict policy to specific action types. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply to all action types." - changed
Input schema / properties / description / descriptionPrevious value: -"Optional policy description."New value: +"Optional human-readable description of what this policy enforces." - changed
Input schema / properties / name / descriptionPrevious value: -"Unique policy name."New value: +"Unique policy name per org. Examples: 'no-delete-in-prod', 'budget-cap-50', 'pii-block'." - changed
Input schema / properties / rules / descriptionPrevious value: -"Rule objects. Operators: eq, starts_with, contains, gt, lt, and, or, not."New value: +"Rule objects evaluated against proposed_action. Leaf operators: eq, starts_with, contains, gt, lt. Compound operators: and, or, not (nest rules array). Example: {operator:'and', rules:[{operator:'eq',field:'action_type',value:'file_write'},{operator:'contains',field:'path',value:'/prod/'}]}." - changed
Input schema / properties / rules / items / properties / field / descriptionPrevious value: -"Field path on proposed_action."New value: +"Field path on proposed_action (e.g. 'action_type', 'path', 'amount')." - changed
Input schema / properties / rules / items / properties / operator / descriptionPrevious value: -"Rule operator."New value: +"Rule operator: eq | starts_with | contains | gt | lt | and | or | not." - changed
Input schema / properties / rules / items / properties / rules / descriptionPrevious value: -"Nested rules for compound operators."New value: +"Nested rules for compound operators (and/or/not)." - changed
Input schema / properties / rules / items / properties / value / descriptionPrevious value: -"Comparison value for the rule operator. String, number, or boolean (as string)."New value: +"Comparison value for leaf operators. String, number, or boolean as string."
14 tool updates
- First observed
burnrate_budget - First observed
burnrate_estimate - First observed
burnrate_optimize - First observed
burnrate_track - First observed
dedupq_check - First observed
dedupq_complete - First observed
guardrail_check - First observed
guardrail_create_policy - First observed
guardrail_list_policies - First observed
pitfalldb_query - First observed
pitfalldb_report - First observed
pitfalldb_stats - First observed
qualitygate_trends - First observed
qualitygate_validate
Related MCP Connectors
AI agent infrastructure for discovery, authorization, execution, identity, and signed receipts.
Agent-native security, trust, reliability, data and procurement tools for AI workflows.
Sovereign Agent OS — Persistent Memory, Governance & Compliance for AI Agents.
Autonomous and governed SRE & MLOps control plane for AI agent platforms.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables autonomous AI agents to proactively poll event queues, evaluate document compliance, retrieve grounded knowledge via semantic RAG, enforce human-in-the-loop approval gates, and track multi-model cost budgets.10MIT
- AlicenseAqualityDmaintenanceCompliance and guardrails infrastructure for AI agents, enabling safe operations within regulatory boundaries like GDPR and EU AI Act.638 PyPIMIT

ComputeGauge MCPofficial
AlicenseNot gradedqualityDmaintenanceProvides cost intelligence and a reputation scoring system to help AI agents optimize spending through smart model selection and local-to-cloud routing. It enables real-time cost tracking and rewards agents for making efficient, high-credibility decisions across various LLM providers.Apache 2.0- AlicenseNot gradedqualityDmaintenanceEnables AI agents to autonomously provision, pay for, and manage S3-compatible storage and vector databases without human intervention.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.