Utility Matrix
Server Details
Free browser-based calculators and analyzers for cloud cost, DevOps, security, and data governance.
- Status
- Healthy
- Uptime
- 44.6% over 76 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 31 tools
Several tool clusters overlap heavily: error-budget-calculator and slo-burn-rate-calculator both compute SLO burn/budget, dora-metrics-calculator subsumes change-failure-rate, deployment-frequency and mttr calculators, and alert-fatigue-calculator and on-call-burden-calculator both target on-call strain. Descriptions give distinct inputs, so an agent can usually pick correctly, but boundaries are fuzzy for these pairs.
Every tool is kebab-case with a consistent resource+role pattern (X-calculator, X-checker, X-scanner, X-linter, X-estimator, X-auditor). No camelCase or verb-style drift; the naming is fully predictable.
31 tools is well above the 25-tool threshold the rubric treats as too many for the apparent scope. While each is a distinct micro-utility, the surface is sprawling and mixes unrelated domains (cost, SLO, security scanning, ML metrics) with no clear scoping rationale.
As a stateless calculator grab-bag there is no CRUD lifecycle to complete, and coverage across cost, SLO, DORA, linting and secret scanning is broad. However, the mix is arbitrary and uneven, with clustered duplicates (two on-call tools, two cost-optimization tools) and no principled domain boundary, so it reads as a partial collection rather than a complete surface.
Available Tools
31 toolsalert-fatigue-calculatorAlert Fatigue CalculatorARead-onlyIdempotentInspect
Use when a user asks about alert noise, alert fatigue, or on-call burden from non-actionable alerts. Given weekly alert volume, actionable %, engineer count, and avg resolution time, returns noise rate, wasted hours, and fatigue tier.
| Name | Required | Description | Default |
|---|---|---|---|
| actionable_pct | Yes | actionable expressed as a percentage. | |
| engineer_count | Yes | engineer count used by this deterministic tool. | |
| alerts_per_week | Yes | alerts per week used by this deterministic tool. | |
| avg_resolution_min | Yes | avg resolution min used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| output_tier | Yes | |
| signal_value | Yes | |
| fatigue_index | Yes | |
| next_step_url | Yes | |
| remaining_pct | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| noise_rate_pct | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| annual_wasted_hours | Yes | |
| noise_alerts_per_week | Yes | |
| wasted_hours_per_week | Yes | |
| burden_per_engineer_hours | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is low. The description usefully adds that it is a deterministic computation and names the three return values, though an output schema already exists, so that disclosure is largely redundant rather than additive.
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 sentences, front-loaded with the triggering condition followed by inputs and outputs. No filler, no repetition, and the most decision-relevant information leads.
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 deterministic calculator with a complete schema, full annotations, and an output schema, the description covers what an agent needs to invoke it correctly. The only omission is guidance on how it relates to the near-identical on-call-burden-calculator sibling.
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 four parameters. The description merely restates them (weekly alert volume, actionable %, engineer count, avg resolution time) with no added syntax, units, or edge-case guidance beyond what the schema provides — the expected baseline 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?
States a specific resource (alert fatigue / noise) and spells out both the inputs consumed and outputs produced (noise rate, wasted hours, fatigue tier). However, it does not differentiate itself from its close sibling on-call-burden-calculator, which is a notable gap given it claims 'on-call burden' as a trigger phrase.
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 'Use when a user asks about alert noise, alert fatigue, or on-call burden from non-actionable alerts' gives clear triggering context. It stops short of naming exclusions or pointing to the overlapping on-call-burden-calculator, which is exactly the kind of disambiguation this sibling set needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apdex-score-calculatorApdex Score CalculatorARead-onlyIdempotentInspect
Use this when a user asks about their Apdex score or wants to measure user satisfaction with response times. Takes satisfied, tolerating, and total request counts; satisfied plus tolerating may not exceed total. Returns the Apdex score (0–1) and its rating on the published five-band scale: excellent, good, fair, poor or unacceptable.
| Name | Required | Description | Default |
|---|---|---|---|
| total | Yes | All requests in the sample, including frustrated ones (slower than 4T or failed). | |
| satisfied | Yes | Requests answered within the target threshold T. | |
| tolerating | Yes | Requests answered between T and 4T. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rating | Yes | |
| next_step | Yes | |
| apdex_score | Yes | |
| rating_band | Yes | |
| next_step_url | Yes | |
| satisfied_pct | Yes | |
| total_samples | Yes | |
| why_follow_up | Yes | |
| frustrated_pct | Yes | |
| interpretation | Yes | |
| tolerating_pct | Yes | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds a genuine behavioral constraint beyond that: 'satisfied plus tolerating may not exceed total', which tells the agent about an input invariant it must respect.
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 sentences: the trigger first, then inputs/constraint and output. Nothing is redundant and it is front-loaded with the usage condition.
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?
An output schema exists, yet the description still summarizes what comes back (score 0–1 plus five-band rating), and the input invariant is covered. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), and the description goes further by stating the cross-parameter constraint that satisfied + tolerating cannot exceed total, which no single property description in the schema expresses.
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 ('Apdex score calculator') and frames the outcome it produces (user satisfaction with response times). Among the many *-calculator siblings, the Apdex domain is unambiguous, so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit triggering condition: 'Use this when a user asks about their Apdex score or wants to measure user satisfaction with response times.' That is clear context, though it names no alternatives or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
availability-sla-calculatorAvailability SLA Downtime CalculatorARead-onlyIdempotentInspect
Use this when a user asks what a specific availability percentage (like 99.9% or 99.99%) means in downtime minutes per month or year. Converts availability SLA percentage to exact downtime budgets: annual, monthly, weekly, and daily.
| Name | Required | Description | Default |
|---|---|---|---|
| availability_pct | Yes | e.g. 99.9 for three nines |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| availability_tier | Yes | |
| computation_basis | Yes | |
| annual_downtime_minutes | Yes | |
| weekly_downtime_minutes | Yes | |
| monthly_downtime_minutes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds that four time windows are computed, which is mildly useful context, but says nothing about precision, rounding, or edge cases for out-of-range percentages.
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 sentences, with the triggering user question front-loaded before the functional summary. Every clause carries information and there is 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 one-parameter, pure-computation tool with an output schema and full annotation coverage, the description supplies everything an agent needs to decide to call it and what to pass. Return-value details are correctly delegated to 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?
With a single parameter and 100% schema description coverage, the schema already documents availability_pct including its format ("e.g. 99.9 for three nines"). The description's "like 99.9% or 99.99%" merely echoes that format, adding no new semantics such as valid bounds.
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 states a specific verb and resource — converting an availability SLA percentage into downtime budgets — with the scope of outputs enumerated (annual, monthly, weekly, daily). This is clearly distinguishable from sibling calculators like error-budget-calculator or slo-burn-rate-calculator, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this when a user asks what a specific availability percentage (like 99.9% or 99.99%) means in downtime minutes per month or year" gives an explicit, concrete trigger condition. There is no when-not guidance and no named alternative tool for adjacent questions, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canonical-url-auditorCanonical URL AuditorARead-onlyIdempotentInspect
Audit a page URL against its canonical tag. Detects missing canonical, self-referencing canonical, and relative URL issues.
| Name | Required | Description | Default |
|---|---|---|---|
| page_url | Yes | The page URL being audited | |
| canonical | Yes | The canonical URL found in the page (empty string if missing) |
Output Schema
| Name | Required | Description |
|---|---|---|
| issue | Yes | |
| page_url | Yes | |
| severity | Yes | |
| next_step | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| recommendation | Yes | |
| canonical_found | No | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is settled. The description adds genuine value by enumerating the detection categories, though it does not say how relative-URL issues are resolved or reported (handled by the output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste; the core action is front-loaded and the detection list follows immediately. Nothing redundant or padded.
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 read-only, idempotent, closed-world tool with full schema coverage and an output schema, the description covers both inputs and the outputs it produces. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema, including the empty-string convention for a missing canonical. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Audit a page URL against its canonical tag') and enumerates exactly the three conditions detected (missing, self-referencing, relative URL). This clearly distinguishes it from the calculator/linter/scanner siblings, none of which touch SEO canonicalization.
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?
Usage is implied by the description's scope but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent can infer this audits a single page's canonical setup, but nothing routes it against siblings or states preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
certificate-expiry-checkerCertificate Expiry CheckerARead-onlyIdempotentInspect
Assess certificate expiry risk given a domain and days remaining. Returns risk level (OK, WARNING at <30 days, CRITICAL at <7 days, EXPIRED at <0).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name (e.g. "api.example.com") | |
| days_remaining | Yes | Days until certificate expires |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | |
| next_step | Yes | |
| risk_level | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| days_remaining | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, openWorld=false, destructive=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the exact risk-tiering thresholds (WARNING <30 days, CRITICAL <7, EXPIRED <0), which tell the agent how the tool reasons about its input.
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 sentences, no filler, with the purpose front-loaded and the return semantics second. Every clause carries information an agent can act on.
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?
A pure two-parameter computation with full schema coverage, safety annotations, and an output schema, so return format needn't be explained. It is essentially complete, with only the missing usage context as 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?
Schema description coverage is 100%, so the baseline is 3. The description goes further by tying meaning to the days_remaining value through the threshold bands, letting an agent anticipate the outcome for a given input rather than just pass a number through.
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 ('Assess') and resource ('certificate expiry risk') plus the exact inputs it consumes ('domain and days remaining'). It is immediately distinguishable from siblings like known-vulnerability-checker or dockerfile-linter 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?
No when-to-use guidance, no mention of when this is NOT appropriate, and no alternatives named among the large sibling set of calculators. The only hint is the input phrasing 'given a domain and days remaining', which specifies inputs rather than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change-failure-rate-calculatorChange Failure Rate CalculatorARead-onlyIdempotentInspect
Use when a user asks about change failure rate or DORA CFR. Given total and failed deployments, returns failure rate percentage and DORA tier.
| Name | Required | Description | Default |
|---|---|---|---|
| total_deploys | Yes | total deploys used by this deterministic tool. | |
| failed_deploys | Yes | failed deploys used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| dora_rating | Yes | |
| output_tier | Yes | |
| total_count | Yes | |
| failed_count | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| remaining_pct | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| change_failure_rate_pct | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is fully covered by structured fields. The description adds only the output shape (percentage + DORA tier), which is already covered by the output schema — a modest addition, not a rich behavioral disclosure.
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, zero filler, with the invocation trigger front-loaded before the behavioral statement. Every clause 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?
With annotations covering safety, a 100%-covered schema for the two params, and an output schema covering returns, the description only needs the trigger and it delivers it. The remaining gap is the lack of routing against the closely overlapping dora-metrics-calculator sibling.
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 both parameters are already documented in the schema. The phrase 'total and failed deployments' names the two inputs in prose but adds no units, units-of-time, or constraint detail beyond the schema — the baseline 3 is correct 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 description states a specific verb and resource ('returns failure rate percentage and DORA tier' from deployment counts), and the CFR framing narrows it against generic siblings. It does not explicitly distinguish itself from the overlapping dora-metrics-calculator, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when a user asks about change failure rate or DORA CFR' gives a clear, explicit trigger condition. However it names no alternative (e.g., dora-metrics-calculator for the full metric suite) and gives no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud-waste-calculatorCloud Waste CalculatorARead-onlyIdempotentInspect
Use when a user asks about cloud waste, idle resources, or unattached storage. Given monthly cloud bill and idle/oversized percentages, returns waste estimate and tier.
| Name | Required | Description | Default |
|---|---|---|---|
| idle_pct | No | idle expressed as a percentage. | |
| oversized_pct | No | oversized expressed as a percentage. | |
| monthly_cloud_bill | Yes | monthly cloud bill used by this deterministic tool. | |
| unattached_volumes_count | No | unattached volumes count used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| waste_pct | Yes | |
| annualized | Yes | |
| do_savings | Yes | |
| idle_waste | Yes | |
| output_tier | Yes | |
| monthly_cost | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| oversized_waste | Yes | |
| unattached_cost | Yes | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safe/pure-calculator profile is fully covered by structured data. The description adds that it produces a 'waste estimate and tier', but that return detail is also covered by the output schema, so incremental behavioral disclosure is thin. A 3 reflects adequate but minimal added context given the low bar set by 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 sentences, zero waste, with the usage trigger front-loaded before the input/output summary. Nothing superfluous and nothing buried.
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 deterministic calculator with a present output schema and fully described parameters, the description covers when to invoke it, what it consumes, and what it returns. The only gap is that it does not address how the optional inputs (unattached volumes vs. percentages) combine or whether results are exhaustive.
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 four parameters, and the baseline is 3. The description mentions 'monthly cloud bill and idle/oversized percentages' but omits unattached_volumes_count and adds no syntax, unit, or interaction detail 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 names a specific verb+resource ('returns waste estimate and tier' for a cloud-waste calculation) and scopes it with 'cloud waste, idle resources, or unattached storage', which distinguishes it from cost-adjacent siblings such as ec2-cost-calculator and rightsizing-calculator. It stops short of explicitly contrasting those siblings, so it is clear but not maximally differentiated.
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 'Use when a user asks about cloud waste, idle resources, or unattached storage' gives concrete trigger conditions an agent can pattern-match on. It does not name exclusions or point to alternatives (e.g., rightsizing-calculator for pure rightsizing questions), leaving some routing ambiguity among the many cost calculators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cluster-capacity-calculatorKubernetes Cluster Capacity CalculatorARead-onlyIdempotentInspect
Use this when a user asks for Kubernetes cluster capacity. Uses the same node vCPU, node memory, node count, system reserve, and target utilization model as the browser calculator.
| Name | Required | Description | Default |
|---|---|---|---|
| node_vcpu | Yes | node vcpu used by this deterministic tool. | |
| node_count | Yes | node count used by this deterministic tool. | |
| node_mem_gb | Yes | node mem in gigabytes. | |
| system_reserve_pct | No | system reserve expressed as a percentage. | |
| target_utilization_pct | No | target utilization expressed as a percentage. |
Output Schema
| Name | Required | Description |
|---|---|---|
| raw_vcpu | Yes | |
| next_step | Yes | |
| node_count | Yes | |
| output_tier | Yes | |
| usable_vcpu | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| raw_memory_gb | Yes | |
| remaining_pct | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| usable_memory_gb | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| allocatable_factor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds only that the tool is deterministic and reuses the browser calculator's model, which is mild context but not a disclosure the agent couldn't infer.
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 sentences, zero filler, with the trigger condition front-loaded before the model-fidelity note. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the annotations cover safety. What remains thin is guidance on parameter interaction and defaults, but for a deterministic calculator with fully documented inputs, the description is adequate.
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 five parameters, and the description merely echoes their names. It adds no units, defaults, or interaction rules (e.g., how system_reserve_pct and target_utilization_pct combine) beyond what the schema states, making the baseline 3 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 names the specific resource (Kubernetes cluster capacity) and the trigger condition, so an agent can tell this apart from generic siblings like rightsizing-calculator or total-cost-of-ownership-calculator. It never uses an explicit verb like 'calculates', relying on the tool name for that, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this when a user asks for Kubernetes cluster capacity' gives a clear, specific activation context. It stops short of naming alternatives or stating when not to use it (e.g., versus rightsizing or node-count planning tools), so it lands at clear-context-without-exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connection-pool-calculatorDatabase Connection Pool CalculatorARead-onlyIdempotentInspect
Use this when a user asks how many database connections to configure. Uses the same max_connections, app server count, database cores, average query duration, and peak RPS model as the browser calculator.
| Name | Required | Description | Default |
|---|---|---|---|
| db_cores | Yes | db cores used by this deterministic tool. | |
| peak_rps | Yes | peak rps used by this deterministic tool. | |
| app_servers | Yes | app servers used by this deterministic tool. | |
| avg_query_ms | Yes | avg query ms used by this deterministic tool. | |
| max_connections | Yes | max connections used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| next_step | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| saturation_pct | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| per_app_pool_size | Yes | |
| peak_concurrent_demand | Yes | |
| recommended_pool_total | Yes | |
| estimated_connection_memory_mb | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety/determinism profile is fully covered. The description only adds that it shares the browser calculator's model, which is minor extra context; it says nothing about output shape or edge cases, but with annotations carrying the burden a 3 is appropriate.
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 tight sentences: the trigger is front-loaded and the model reference follows. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so return values and behavioral traits need not be spelled out. The description covers the trigger and inputs adequately; it could note that the output is a recommended pool size, but for a deterministic calculator this is largely sufficient.
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 restates the five input names in prose (mapping 'app server count' to app_servers, etc.) but adds no units, ranges, or model 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 identifies a specific purpose — calculating how many database connections to configure — and enumerates the input model (max_connections, app servers, DB cores, query duration, peak RPS). It implicitly distinguishes itself from other calculators (cost, SLA, etc.) by naming the connection-pool domain, though it never states the verb 'calculates' explicitly and doesn't contrast with the closest sibling, cluster-capacity-calculator.
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?
States a clear trigger condition ('when a user asks how many database connections to configure'), which is useful routing guidance among 30+ calculator siblings. It offers no exclusions or explicit alternatives, but the trigger is specific enough that an agent can select it confidently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deployment-frequency-calculatorDeployment Frequency CalculatorBRead-onlyIdempotentInspect
Use when a user asks about deployment frequency or DORA deploy cadence.
| Name | Required | Description | Default |
|---|---|---|---|
| team_size | Yes | team size used by this deterministic tool. | |
| working_days | No | working days used by this deterministic tool. | |
| deploys_per_month | Yes | deploys per month used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| dora_rating | Yes | |
| output_tier | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| remaining_pct | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| deploys_per_day | Yes | |
| deploys_per_week | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| deploys_per_dev_per_day | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds nothing behavioral on top — no mention of determinism, required inputs, or what the computed result represents — so it contributes almost no value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short, front-loaded sentence with zero padding, which is structurally clean. But the brevity comes at the cost of substance — this reads as under-specification rather than disciplined conciseness.
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?
An output schema exists and annotations plus 100% schema coverage carry the parameter and safety burden, so the description needn't explain return values. Still, it never states what the calculator produces (e.g., deploys per day per team member), which is the one piece of context the surrounding structured data does not supply.
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 three parameters (deploys_per_month, team_size, working_days) are already documented, and the description adds no additional meaning or interaction notes. 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 description names the domain ('deployment frequency', 'DORA deploy cadence') but never states a verb or what the tool actually computes, leaving the action to be inferred from the name alone. It also fails to distinguish itself from the sibling dora-metrics-calculator, which plausibly covers the same DORA cadence territory.
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 single sentence is explicitly a routing trigger ('Use when a user asks about deployment frequency or DORA deploy cadence'), which tells an agent the conversational condition for selecting it. However, it offers no when-not condition and does not address the overlapping dora-metrics-calculator sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect-secrets-scannerSecrets ScannerARead-onlyIdempotentInspect
Scan text (config, code, env files) for leaked API keys, tokens, passwords, and private keys, plus static code-risk findings such as dynamic code execution, wildcard CORS, unsafe HTML sinks, process spawning and removed security guards. Returns findings with redacted matches and severity classification.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Config, code, or env file content to scan. Do not submit live production secrets; rotate any real credential that appears here. |
Output Schema
| Name | Required | Description |
|---|---|---|
| findings | Yes | |
| severity | Yes | |
| next_step | Yes | |
| types_found | Yes | |
| finding_count | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| code_risk_count | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| code_risk_findings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new behavioral context: findings are returned with redacted matches and a severity classification, which tells the agent how output is shaped and that secrets are not echoed back in the clear.
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?
One dense sentence, front-loaded with the primary secret-detection purpose before the secondary static-risk enumeration. It is longer than strictly necessary due to the list of risk categories, but each clause maps to a real capability of the tool rather than 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?
With an output schema present, the description need not detail return values, and it still summarizes them (redacted matches, severity). Input requirements are covered by the schema, and the description supplies enough scope for an agent to call this correctly without opening anything else.
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 single 'text' parameter is fully documented, including a maxLength and a warning about live production secrets. The description adds no syntax, format, or size guidance beyond what the schema already provides, so the baseline of 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?
The description names a specific verb (scan) and resource (text/config/code/env content), then enumerates both the target artifacts (API keys, tokens, passwords, private keys) and the secondary static-risk checks. This clearly distinguishes it from sibling linters like dockerfile-linter or kubernetes-manifest-linter, which operate on specific manifest formats rather than arbitrary text.
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 parenthetical '(config, code, env files)' implies the intended input contexts, so an agent can infer when the tool applies. However, it never states when to prefer it over adjacent tools such as known-vulnerability-checker, nor does it list any exclusions or prerequisites. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dockerfile-linterDockerfile LinterARead-onlyIdempotentInspect
Lint a Dockerfile against a rule-based subset of Hadolint checks: untagged or :latest base images, interactive or unpinned apt-get installs, apt list cleanup, apk cache, ADD for local files, shell-form CMD/ENTRYPOINT, running as root and a missing HEALTHCHECK. Lines joined with a trailing backslash count as one instruction, and each issue reports its line in the original file.
| Name | Required | Description | Default |
|---|---|---|---|
| dockerfile | Yes | Dockerfile content (full or partial), up to 8,192 characters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | Yes | |
| severity | Yes | |
| next_step | Yes | |
| info_count | Yes | |
| line_count | Yes | |
| error_count | Yes | |
| issue_count | Yes | |
| next_step_url | Yes | |
| warning_count | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| instruction_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds substantive behavioral context beyond that: the specific rule set enforced, the backslash line-continuation parsing rule, and the fact that each issue is reported against its original line number.
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 core action and scope before drilling into the rule list, and the second sentence covers parsing/reporting semantics. The dense rule enumeration is long but each item earns its place by telling the agent what will be flagged.
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?
An output schema exists, so return values needn't be detailed, yet the description still notes that issues carry original-file line numbers. Combined with annotations covering safety and a fully documented single parameter, the definition is complete for correct invocation; only the sibling-boundary guidance is missing.
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 parameter is documented as 'Dockerfile content (full or partial), up to 8,192 characters.' The description adds meaning the schema does not, clarifying that multi-line joined instructions count as one and that issues map back to original file lines. Baseline would be 3 at full coverage; the added parsing semantics lift it.
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 (lint), a specific resource (a Dockerfile), and the exact scope (a rule-based subset of Hadolint checks), then enumerates the rules checked. The Dockerfile resource inherently distinguishes it from the nearest sibling, kubernetes-manifest-linter, without the agent needing to open either 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?
The purpose strongly implies when to reach for it (a Dockerfile you want checked), so usage is implied rather than stated. There is no explicit when-not guidance and no naming of adjacent siblings like kubernetes-manifest-linter or detect-secrets-scanner, so an agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dora-metrics-calculatorDORA Metrics CalculatorARead-onlyIdempotentInspect
Use this when a user wants to benchmark an engineering team against DORA metrics. Takes deploys per month, lead time in hours, change failure rate in percent and, optionally, time to restore in hours. Classifies each metric as elite, high, medium or low against fixed benchmark bands; an omitted restore time is reported as unknown and the overall profile is marked partial rather than assumed.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_time_hours | Yes | Lead time for changes, commit to production, in hours. | |
| deploys_per_month | Yes | Production deployments per month. | |
| change_failure_pct | Yes | Share of deployments that cause a failure in production, in percent. | |
| restore_time_hours | No | Time to restore service after a failed change, in hours. Optional; when omitted the metric is reported as unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mttr_tier | Yes | |
| next_step | Yes | |
| assessment | Yes | |
| overall_tier | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| lead_time_tier | Yes | |
| metrics_assessed | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| deploy_frequency_tier | Yes | |
| change_failure_rate_tier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral value beyond that: fixed elite/high/medium/low benchmark bands, an omitted restore time surfacing as 'unknown', and the overall profile being marked 'partial rather than assumed' — a non-obvious handling of missing input.
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 sentences, usage condition front-loaded, zero filler. The dense second sentence carries classification semantics and missing-input handling, all of which earn their 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?
An output schema exists, so return shape need not be described, and annotations cover the safety profile. The description supplies the missing conceptual layer — benchmark bands and partial-profile behavior — making the tool callable without ambiguity; only the sibling-routing gap keeps it from a 5.
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 all four parameters including units and the optional/unknown behavior of restore_time are already documented in the schema. The description restates the units and list of inputs but adds no syntax or format detail beyond the structured data. 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 ('benchmark an engineering team against DORA metrics') and enumerates the four inputs it consumes. However, it never distinguishes itself from the many near-overlapping siblings such as deployment-frequency-calculator, change-failure-rate-calculator and mttr-calculator, so an agent must infer that this is the composite/all-four-metrics tool rather than the single-metric ones.
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?
'Use this when a user wants to benchmark an engineering team against DORA metrics' gives a clear triggering context, but there are no exclusions and no alternatives named. Given that siblings cover each DORA metric individually, an explicit 'for a single metric use X instead' would materially help routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ec2-cost-calculatorEC2 Cost CalculatorBRead-onlyIdempotentInspect
Use when a user asks about EC2 cost. Given instance type and hours, returns monthly cost and DO-equivalent savings estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| os | No | os used by this deterministic tool. | |
| instance_type | Yes | instance type used by this deterministic tool. | |
| hours_per_month | No | hours per month used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| do_savings | Yes | |
| annual_cost | Yes | |
| hourly_rate | Yes | |
| output_tier | Yes | |
| monthly_cost | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| do_equivalent_monthly | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context that it returns a DO-equivalent savings estimate, a behavior not evident from the name. It doesn't add constraints, defaults, or rate-limit context.
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 tight sentences with the trigger front-loaded ahead of the return description; every clause earns its place. Minor imprecision: it implies hours is needed, yet only instance_type is required.
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?
An output schema exists, so return values needn't be re-explained, and annotations carry safety. Remaining gaps are the optional status/default of hours_per_month and os, plus no sibling routing among numerous cost calculators.
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 all three parameters are already documented in the schema, establishing the baseline of 3. The description mentions only instance type and hours, omitting os, and adds no format or default details 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?
States a specific verb+resource: returns monthly cost and a DO-equivalent savings estimate for EC2. It is clearly about EC2, which separates it from the many sibling cost calculators (egress, pipeline, query). However, it does not explicitly name or contrast against those siblings.
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?
"Use when a user asks about EC2 cost" gives a clear trigger condition. But there is no when-not guidance and no routing to alternatives such as rightsizing-calculator or reserved-instance-breakeven, leaving the agent to infer boundaries among many overlapping cost tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egress-cost-calculatorCloud Egress Cost CalculatorARead-onlyIdempotentInspect
Use this when a user asks about monthly internet egress cost from daily request volume, average response size, provider, and CDN offload. Uses the same model as the browser calculator.
| Name | Required | Description | Default |
|---|---|---|---|
| cdn_pct | No | cdn expressed as a percentage. | |
| provider | No | Cloud provider whose published pricing model should be applied. | |
| daily_requests | Yes | daily requests used by this deterministic tool. | |
| avg_response_kb | Yes | avg response kb used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cdn_pct | Yes | |
| provider | Yes | |
| cost_risk | Yes | |
| next_step | Yes | |
| rate_per_gb | Yes | |
| free_tier_gb | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| cdn_offload_gb | Yes | |
| interpretation | Yes | |
| daily_egress_gb | Yes | |
| monthly_cost_usd | Yes | |
| origin_egress_gb | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| monthly_egress_gb | Yes | |
| billable_egress_gb | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile requires no description support. The description contributes one genuine behavioral claim - parity with the browser calculator's model - which is useful for trusting the output, but says nothing about pricing basis, rounding, or currency.
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 sentences, no filler, with the usage trigger front-loaded and the model-provenance note trailing. Every clause carries information the agent can act on.
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?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. Inputs are all enumerated and the deterministic nature is implied, but the description never states the pricing basis (published on-demand list prices) or what happens to provider/cdn_pct when omitted, which are minor but real gaps for a cost-figure tool.
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 provider is an enum, so every parameter is already documented in the schema. The description merely restates the four inputs (daily request volume, average response size, provider, CDN offload) in prose, adding no format, unit, or default information beyond the schema. 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?
States a specific computation (monthly internet egress cost) plus the exact inputs that drive it, which cleanly separates it from cost siblings like ec2-cost-calculator or pipeline-cost-estimator. It stops short of naming any sibling it is not, so differentiation is inferred from the narrow domain rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening 'Use this when a user asks about...' is a concrete positive trigger, which is better than nothing. However there is no when-not guidance and no routing to alternatives such as ec2-cost-calculator for compute spend or cloud-waste-calculator, so the agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
error-budget-calculatorSLO Error Budget CalculatorARead-onlyIdempotentInspect
Use this when a user asks about their SLO error budget, remaining error budget, or burn rate. Given SLO percentage and window, returns budget minutes remaining, burn rate multiplier, and status (Under budget / Elevated / ALERTING).
| Name | Required | Description | Default |
|---|---|---|---|
| slo_pct | Yes | Service-level objective target expressed as a percentage. | |
| window_days | No | Length of the service-level objective window in days. | |
| consumed_minutes | No | consumed in minutes. | |
| window_elapsed_days | No | window elapsed days used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| burn_rate | Yes | |
| next_step | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| budget_minutes | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| remaining_minutes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds the output shape and the status classification (Under budget / Elevated / ALERTING), which is useful context, but since an output schema exists this is largely duplicated rather than new behavioral disclosure.
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 sentences, zero waste: the trigger condition is front-loaded and the return contract follows. Nothing padded or duplicated for its own sake.
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 full output schema present, the description need not explain return values, and it covers triggers adequately for a read-only calculator. The one meaningful gap is routing against slo-burn-rate-calculator, whose scope overlaps almost entirely with the 'burn rate' trigger phrase used here.
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 each of the four parameters documented in the schema itself, so the baseline is 3. The description mentions only 'SLO percentage and window' and adds no format, unit, or default detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific computation (error budget from SLO percentage and window) and names the outputs, so the purpose is clear. It does not, however, distinguish itself from the closely named sibling slo-burn-rate-calculator, which the description only incidentally touches by mentioning 'burn rate multiplier' as an output.
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 sentence gives explicit trigger conditions ('when a user asks about their SLO error budget, remaining error budget, or burn rate'), which is strong context. It stops short of excluding the obvious alternative (slo-burn-rate-calculator), so an agent must still infer which of the two to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incident-cost-calculatorIncident Cost CalculatorARead-onlyIdempotentInspect
Use this when a user asks what an outage or incident cost, or wants to calculate the financial impact of downtime. Takes hourly revenue, downtime duration, and affected percentage. Returns revenue impact, engineering cost, and total incident cost in dollars.
| Name | Required | Description | Default |
|---|---|---|---|
| eng_hourly | No | eng hourly used by this deterministic tool. | |
| responders | No | responders used by this deterministic tool. | |
| affected_pct | No | affected expressed as a percentage. | |
| downtime_hours | Yes | downtime in hours. | |
| hourly_revenue | Yes | hourly revenue used by the calculation; monetary values are in USD unless stated otherwise. |
Output Schema
| Name | Required | Description |
|---|---|---|
| severity | Yes | |
| next_step | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| total_cost_usd | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| revenue_impact_usd | Yes | |
| engineering_cost_usd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, fully covering the safety profile of a pure computation. The description restates the input/output composition but adds no behavioral context beyond what annotations and the output schema already convey, so a baseline 3 is appropriate.
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 with a front-loaded use case, followed by inputs and outputs. Every sentence earns its place with no filler 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?
For a deterministic calculator with full annotation coverage and an output schema, the description gives an agent enough to call it correctly. It does omit mention of two optional inputs (eng_hourly, responders), which the schema covers, so it is complete but not maximally so.
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 five parameters. The description mentions hourly revenue, downtime duration, and affected percentage, which maps to three of them but omits eng_hourly and responders and adds no syntax or format detail beyond the schema, making the baseline 3 correct.
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 gives a specific verb+resource: calculating the financial impact of an outage/incident, naming concrete outputs (revenue impact, engineering cost, total). This is clearly distinct from every sibling (mttr-calculator, dora-metrics-calculator, ec2-cost-calculator, etc.), but it never explicitly contrasts itself with a nearest alternative, so it lands at a strong 4.
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 a clear triggering condition: 'Use this when a user asks what an outage or incident cost, or wants to calculate the financial impact of downtime.' That is an explicit when-to-use context, though it offers no when-not-to-use guidance or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
known-vulnerability-checkerKnown Vulnerability CheckerARead-onlyIdempotentInspect
Historical curated package-name advisory reference only. Matches older CVE examples for common packages; does not query live feeds or evaluate installed version ranges, so it never proves a package is currently vulnerable or safe.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | Package identifier, optionally with a version (e.g. lodash@4.17.21, log4j-core, @babel/core). Versions are not assessed by this historical lookup. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cve | No | |
| status | Yes | |
| severity | Yes | |
| next_step | Yes | |
| package_name | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| checked_against | Yes | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, and the description goes further by disclosing the core limitations: no live feed querying, no version-range assessment, and no guarantee of vulnerability or safety. That is exactly the kind of caveat an agent needs to avoid misreporting results.
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 tight sentences with no filler; the scope statement leads and the critical limitations follow immediately. Every clause carries information the agent needs.
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?
An output schema exists, so return-value explanation is unnecessary. For a one-parameter lookup whose main risk is being mistaken for live vulnerability intelligence, the description covers purpose, scope limits, and non-guarantees adequately.
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 a single parameter, so the schema already documents accepted forms (lodash@4.17.21, log4j-core, @babel/core) and the non-assessment of versions. The description adds no parameter detail beyond what the schema supplies, 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?
The first sentence states the resource and mechanism ('historical curated package-name advisory reference'), and the second clarifies the operation ('matches older CVE examples for common packages'). It is clear what the tool does, though the framing is more noun-phrase scope statement than a crisp verb+resource, and no sibling is named (though no sibling here is a genuine alternative).
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?
Strong when-not guidance: it explicitly says it does not query live feeds or evaluate installed version ranges, which steers the agent away from treating it as a real vulnerability oracle. It does not name an alternative tool for live advisory data, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kubernetes-manifest-linterKubernetes Manifest LinterBRead-onlyIdempotentInspect
Lint a Kubernetes manifest (YAML) for common issues: missing resource limits, missing health checks, :latest tag usage, privileged containers. Returns issue list and severity.
| Name | Required | Description | Default |
|---|---|---|---|
| manifest | Yes | Kubernetes manifest YAML content |
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | Yes | |
| severity | Yes | |
| next_step | Yes | |
| issue_count | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered structurally. The description adds that it returns an issue list with severity, which is useful, but says nothing about malformed YAML handling, whether the check set is exhaustive, or whether findings are blocking — so this is only modest added value beyond 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?
Two sentences, no filler, with the purpose front-loaded and the detected issue classes listed compactly. Every clause earns its place by telling the agent what the lint covers.
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 and annotations covering safety, the description need not explain return values, and the single parameter is fully documented in the schema. It is nearly complete for a deterministic read-only linter, with only minor gaps around invalid-input behavior.
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?
There is a single parameter with 100% schema description coverage ('Kubernetes manifest YAML content'), so the schema already carries the semantics. The description confirms the input is YAML but adds no syntax, encoding, or multi-document guidance beyond what the schema states, which is the baseline 3 for a fully documented single-parameter tool.
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 gives a specific verb (Lint) and resource (Kubernetes manifest YAML) and enumerates the exact classes of issues detected (resource limits, health checks, :latest tags, privileged containers), which makes the tool's scope concrete. It separates itself implicitly from dockerfile-linter by naming the artifact type, but never explicitly differentiates from that sibling or states scope limits (e.g., only these four checks).
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?
There is no explicit when-to-use or when-not-to-use guidance and no naming of alternatives such as dockerfile-linter or detect-secrets-scanner. The enumerated checks imply the domain but leave the agent to infer when this tool is the right call versus a neighboring linter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mttr-calculatorMTTR CalculatorARead-onlyIdempotentInspect
Use when a user asks about MTTR or DORA recovery time. Takes incident timestamps (string lines "start,detected,resolved" or array of {start,detected,resolved}).
| Name | Required | Description | Default |
|---|---|---|---|
| incidents | Yes | incidents used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| dora_rating | Yes | |
| output_tier | Yes | |
| mttd_minutes | Yes | |
| mttr_minutes | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| remaining_pct | Yes | |
| why_follow_up | Yes | |
| incident_count | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| mean_total_minutes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds the accepted input shape but says nothing about aggregation across multiple incidents, the recovery-time formula, or error behavior on malformed timestamps.
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 sentences, front-loaded with the usage trigger and followed by the input contract; nothing is wasted. The second sentence is dense but compact, not padded.
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?
An output schema exists, so return values need not be explained, and the single required parameter is described. The remaining gap is disambiguation from dora-metrics-calculator and clarification of how the three timestamps map to the reported MTTR, which matters for a metric calculator in this crowded sibling set.
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%, but the schema's own parameter text ("incidents used by this deterministic tool.") is uninformative, so the description's specification of the two accepted formats — comma-separated "start,detected,resolved" lines or an array of objects — is genuinely additive. It still leaves the meaning of "detected" versus "start" for the MTTR computation ambiguous.
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 the metric (MTTR / DORA recovery time) and the input it operates on (incident timestamps), so the verb+resource is identifiable. It does not, however, distinguish itself from the sibling dora-metrics-calculator, which plausibly overlaps on the same metric family.
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?
"Use when a user asks about MTTR or DORA recovery time" gives a clear triggering condition for selection. It stops short of any when-not guidance or explicit routing to alternatives such as dora-metrics-calculator for the full DORA suite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
on-call-burden-calculatorOn-Call Burden CalculatorARead-onlyIdempotentInspect
Use when a user asks about on-call load or burnout risk. Uses team size, rotation length, and hourly rate exactly as the browser calculator does.
| Name | Required | Description | Default |
|---|---|---|---|
| team_size | Yes | team size used by this deterministic tool. | |
| hourly_rate | Yes | hourly rate used by the calculation; monetary values are in USD unless stated otherwise. | |
| rotation_weeks | Yes | rotation weeks used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| annual_cost | Yes | |
| output_tier | Yes | |
| monthly_cost | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| remaining_pct | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| pct_working_time | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| hours_per_engineer | Yes | |
| shifts_per_engineer | Yes | |
| total_hours_per_month | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and determinism profile is largely covered. The description adds that it is deterministic and mirrors 'the browser calculator exactly,' a modest but real addition about result parity; it says nothing about units of the output or precision beyond what the schema carries.
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 sentences, no filler, with the usage trigger front-loaded before the input summary. Appropriately sized for a simple deterministic calculator.
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?
An output schema exists and annotations carry the safety/determinism profile, so the description need not explain return values. For a low-complexity, three-required-parameter calculator, the entry is sufficient, though the vague 'burnout risk' framing is never grounded in what the computed number actually represents.
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 all three parameters are documented structurally, and the description merely names the same inputs (team size, rotation length, hourly rate). It adds no syntax, formatting, or edge-case guidance beyond the schema's minimum/exclusiveMinimum constraints.
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 and title together convey that the tool computes an on-call burden figure from team size, rotation length, and hourly rate. The purpose is clear, but it never explicitly distinguishes itself from the closely related alert-fatigue-calculator or burnout-adjacent siblings, so the agent must infer the boundary.
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?
"Use when a user asks about on-call load or burnout risk" gives a clear triggering condition. It lacks any exclusion or alternative guidance, which matters given 30+ sibling calculators including alert-fatigue-calculator that could plausibly be confused with this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline-cost-calculatorCI/CD Pipeline Cost CalculatorARead-onlyIdempotentInspect
Use this when a user asks how much their GitHub Actions CI/CD pipeline costs per month. Takes average job duration in minutes, jobs per run, runs per month and the runner label (ubuntu-latest, windows-latest, macos-latest or self-hosted; matched case-insensitively). Uses GitHub list prices for standard hosted runners effective 1 Jan 2026 and GitHub Free's 2,000 included minutes for private repositories, drawn at list price. Self-hosted minutes carry no GitHub charge.
| Name | Required | Description | Default |
|---|---|---|---|
| runner | No | Runner label, for example ubuntu-latest, windows-latest, macos-latest or self-hosted. Matched case-insensitively; defaults to Linux. | |
| avg_job_min | Yes | Average job duration in minutes. | |
| jobs_per_run | Yes | Jobs per workflow run. | |
| runs_per_month | Yes | Workflow runs per month. |
Output Schema
| Name | Required | Description |
|---|---|---|
| severity | Yes | |
| next_step | Yes | |
| rates_as_of | Yes | |
| runner_type | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| billable_minutes | Yes | |
| included_minutes | Yes | |
| monthly_cost_usd | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| runner_multiplier | Yes | |
| rate_per_minute_usd | Yes | |
| included_minutes_used | Yes | |
| total_minutes_per_month | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantive domain behavior: GitHub list prices effective 1 Jan 2026, GitHub Free's 2,000 included minutes for private repos drawn at list price, and zero GitHub charge for self-hosted. It does not discuss output shape, but an output schema exists so that burden is lifted.
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 sentences, front-loaded with the usage trigger, then inputs, then pricing assumptions and billing caveats. Every sentence carries information and nothing is repeated for 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?
For a pure computational tool with a complete input schema and an output schema, the description supplies exactly the extra context an agent needs to trust the result: pricing basis, effective date, free-tier treatment, and self-hosted semantics.
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 four parameters, including the runner labels, case-insensitive matching, and the Linux default. The description mostly restates these (runner labels, case-insensitivity) and adds only the cost-relevant note that self-hosted minutes are free, so it hovers at the baseline.
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 (calculates cost) and resource (GitHub Actions CI/CD pipeline cost per month), which cleanly separates it from siblings like ec2-cost-calculator, egress-cost-calculator, and cloud-waste-calculator. An agent can identify the tool's domain without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening sentence gives an explicit trigger: 'Use this when a user asks how much their GitHub Actions CI/CD pipeline costs per month.' It is a clear context for use, but it names no alternative cost tools and gives no when-not-to-use condition for overlapping sibling calculators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
precision-recall-f1-calculatorPrecision, Recall and F1 CalculatorARead-onlyIdempotentInspect
Use this when a user asks about their ML model precision, recall, F1 score, or F-beta score. Takes precision and recall as fractions from 0 to 1 and an optional beta weight. Returns F1, F-beta, and interpretation of the precision-recall tradeoff.
| Name | Required | Description | Default |
|---|---|---|---|
| beta | No | beta used by this deterministic tool. | |
| recall | Yes | recall used by this deterministic tool. | |
| precision | Yes | precision used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| beta | Yes | |
| f1_score | Yes | |
| next_step | Yes | |
| f_beta_score | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| precision_recall_gap | Yes | |
| precision_recall_balance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds only that beta is optional and that the output includes a tradeoff interpretation; it doesn't address edge cases such as both inputs being zero.
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 sentences: trigger first, then inputs and outputs. No filler, no repetition of the title, and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema handling return values and annotations handling safety, the description only needs to orient the caller, which it does. Minor gap: no note on degenerate inputs (precision=recall=0) or that the result is a pure deterministic computation, though the schema hints at determinism.
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 0-1 bounds, required status of precision/recall, and the beta parameter are all documented structurally. The description restates the fraction range and beta optionality without adding format or semantic detail beyond the schema baseline.
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 states a specific computation (F1/F-beta from precision and recall) and names its inputs and outputs. In a sibling set of cost/SLO/DevOps calculators, an ML-metric tool is unmistakable, so no differentiation problem exists.
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 sentence gives an explicit trigger: use it when a user asks about ML model precision, recall, F1, or F-beta. It stops short of stating when NOT to use it or naming an alternative, but no sibling overlaps with this domain, so the omission is low-cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query-cost-estimatorPostgreSQL Query Cost EstimatorBRead-onlyIdempotentInspect
Estimate PostgreSQL sequential-scan and index-scan cost from table rows, table pages, selectivity, and storage type. Uses the same four-input model as the browser calculator.
| Name | Required | Description | Default |
|---|---|---|---|
| table_rows | Yes | table rows used by this deterministic tool. | |
| table_pages | Yes | table pages used by this deterministic tool. | |
| storage_type | Yes | storage type; accepted values: ssd, nvme, hdd, network. | |
| selectivity_pct | Yes | selectivity expressed as a percentage. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| cost_ratio | Yes | |
| index_pages | Yes | |
| index_tuples | Yes | |
| storage_type | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| index_scan_cost | Yes | |
| random_page_cost | Yes | |
| recommended_plan | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| sequential_scan_cost | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safe deterministic profile is covered. The description adds that this is a pure estimate using a known four-input model, consistent with the annotations, but adds no extra behavioral context beyond that.
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 sentences, front-loaded with the operation and its inputs, with no padding. The trailing sentence about the browser calculator is mildly useful context rather than 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?
An output schema exists, so return values need not be explained, and annotations carry the safety profile. For a deterministic estimator with fully documented parameters, the description is complete enough, though a note on the underlying cost model would add value.
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 all four parameters (table_rows, table_pages, selectivity_pct, storage_type) are already documented, including the storage_type enum. The description only restates the input list without adding syntax or modeling detail, 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 (Estimate) and a precise resource (PostgreSQL sequential-scan and index-scan cost), then names the four inputs. It is clearly distinguishable from sibling cost calculators (ec2-cost-calculator, terraform-plan-cost-estimator) though it does not explicitly contrast itself with them.
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?
There is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The reference to 'the same four-input model as the browser calculator' gives context about consistency but tells the agent nothing about when this tool is the right pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate-limit-utilization-calculatorAPI Rate Limit Utilization CalculatorARead-onlyIdempotentInspect
Calculate API rate limit utilization given current request count and limit. Returns utilization percentage, buffer, safety status, and risk level (OK at <80%, WARNING at 80-95%, CRITICAL at >95%).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | Rate limit ceiling | |
| window_seconds | No | Rate limit window in seconds (e.g. 60 for per-minute) | |
| current_requests | Yes | Current request count in the window |
Output Schema
| Name | Required | Description |
|---|---|---|
| safe | Yes | |
| buffer | Yes | |
| status | Yes | |
| next_step | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| window_seconds | Yes | |
| utilization_pct | Yes | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a safe, read-only, idempotent computation. The description adds genuinely useful behavior beyond that: the risk-band thresholds (OK <80%, WARNING 80-95%, CRITICAL >95%) and the shape of the result (percentage, buffer, safety status, risk level).
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 tightly written sentences: the computation first, then the output and thresholds. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple, fully documented calculator with 100% schema coverage and an output schema, so return values need not be explained. Everything an agent needs to invoke it is present.
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 the schema already documents current_requests, limit, and window_seconds. The description restates two of the three parameters but adds no format or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Calculate API rate limit utilization') and names the inputs it operates on. Among a large family of calculator siblings, this one's domain 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 purpose implies when it is useful (checking headroom against a limit), but there is no explicit guidance on when to reach for this versus related calculators like slo-burn-rate-calculator or error-budget-calculator, and no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reserved-instance-breakevenReserved Instance Breakeven CalculatorARead-onlyIdempotentInspect
Use this when a user asks whether to buy Reserved Instances or stay on On-Demand, or how long an RI takes to pay for itself. Takes On-Demand and RI monthly costs plus optional upfront fees (0 when omitted). Judges the 1-year and 3-year terms separately and returns each break-even month and net saving. It recommends a term only when that term saves money over its own length, and prefers 3 years only when it beats three 1-year terms over 36 months at current prices.
| Name | Required | Description | Default |
|---|---|---|---|
| od_monthly | Yes | On-Demand cost per month in USD. | |
| ri_1yr_monthly | Yes | 1-year Reserved Instance cost per month in USD, excluding the upfront fee. | |
| ri_1yr_upfront | No | 1-year upfront fee in USD; 0 when omitted (no-upfront RI). | |
| ri_3yr_monthly | Yes | 3-year Reserved Instance cost per month in USD, excluding the upfront fee. | |
| ri_3yr_upfront | No | 3-year upfront fee in USD; 0 when omitted (no-upfront RI). |
Output Schema
| Name | Required | Description |
|---|---|---|
| severity | Yes | |
| next_step | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| breakeven_months | No | |
| recommended_term | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| net_savings_1yr_usd | Yes | |
| net_savings_3yr_usd | Yes | |
| breakeven_months_3yr | No | |
| monthly_saving_1yr_usd | Yes | |
| monthly_saving_3yr_usd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them by disclosing the decision logic: terms are judged independently, a recommendation is made only when a term saves money over its own length, and 3-year is preferred only when it beats three consecutive 1-year terms. That is exactly the kind of hidden reasoning an agent needs to interpret or trust the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, no filler: trigger first, inputs second, output third, recommendation policy last. Every sentence carries distinct information and the ordering matches how an agent would use it.
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 and annotations covering safety, the description supplies the remaining missing layer — the recommendation rules and separate per-term evaluation — so an agent knows not just how to call it but how to interpret and relay the result.
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 description mostly restates schema facts ('optional upfront fees (0 when omitted)'). It adds no syntax or semantics beyond what the parameter descriptions already say, 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?
Names a specific verb+resource (break-even calculation between Reserved Instances and On-Demand) and states the exact scope: judging 1-year and 3-year terms separately and returning each break-even month and net saving. No sibling in the list (ec2-cost-calculator, cloud-waste-calculator, total-cost-of-ownership-calculator) overlaps this specific decision, so an agent can route here without opening schemas.
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?
Front-loads an explicit trigger: 'Use this when a user asks whether to buy Reserved Instances or stay on On-Demand, or how long an RI takes to pay for itself.' That is clear when-to-use context, though it names no exclusions or alternative tools (e.g., when to prefer the general cost calculators instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rightsizing-calculatorCompute Rightsizing CalculatorBRead-onlyIdempotentInspect
Use when a user asks about instance rightsizing or overprovisioned compute.
| Name | Required | Description | Default |
|---|---|---|---|
| hourly_cost | No | hourly cost used by the calculation; monetary values are in USD unless stated otherwise. | |
| p99_cpu_pct | Yes | p99 cpu expressed as a percentage. | |
| current_vcpu | Yes | current vcpu used by this deterministic tool. | |
| instance_count | No | instance count used by this deterministic tool. | |
| p99_memory_pct | Yes | p99 memory expressed as a percentage. | |
| current_memory_gb | Yes | current memory in gigabytes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| do_savings | Yes | |
| needed_vcpu | Yes | |
| output_tier | Yes | |
| monthly_cost | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| annual_savings | Yes | |
| instance_count | Yes | |
| interpretation | Yes | |
| savings_factor | Yes | |
| needed_memory_gb | Yes | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds nothing behavioral beyond that — no note that the calculation is deterministic, no required-input prerequisites, no unit or cost caveats. With the low bar set by annotations it still fails to contribute any additional context.
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?
A single sentence with no filler and the trigger front-loaded, so there is no waste. However, at this length the brevity reads as under-specification rather than tightness — the one sentence does not carry the load a 6-parameter calculator requires.
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?
An output schema exists, so return values need not be explained. But for a deterministic 4-required-parameter calculator the description omits what inputs are mandatory in practice, what units/assumptions drive the result, and how it differs from cost-oriented siblings. Adequate to recognize the tool, thin for calling it correctly with confidence.
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% across all six parameters, so the baseline is 3. The description mentions no parameter at all — not the required p99 inputs, not the units of hourly_cost, not instance_count — so it adds no meaning beyond the schema. Note the schema text itself is largely templated ('used by this deterministic tool'), but the description does nothing to compensate.
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 identifies the domain ('instance rightsizing', 'overprovisioned compute') but never states what the tool actually does — compute recommended vCPU/memory from p99 utilization inputs — or what it returns. It is framed entirely as a usage trigger rather than a verb+resource statement. It loosely separates from siblings like ec2-cost-calculator, but not from cloud-waste-calculator, which plausibly covers the same overprovisioning territory.
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 gives a concrete trigger condition ('when a user asks about instance rightsizing or overprovisioned compute'), which is exactly the context an agent needs to route here. It stops short of naming when NOT to use it or pointing to overlapping siblings such as cloud-waste-calculator or cluster-capacity-calculator, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slo-burn-rate-calculatorSLO Burn Rate CalculatorARead-onlyIdempotentInspect
Use this when a user asks how fast they are burning their error budget, or whether their current error rate will exhaust their SLO window. Takes error count, total requests, SLO target, and observation window. Returns burn rate and budget consumption per hour.
| Name | Required | Description | Default |
|---|---|---|---|
| slo | Yes | Service-level objective target expressed as a percentage. | |
| total | Yes | Total number of requests observed in the measurement window. | |
| errors | Yes | Number of failed requests observed in the measurement window. | |
| window_hours | Yes | Length of the observed measurement window in hours. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| burn_rate | Yes | |
| next_step | Yes | |
| window_hours | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| error_rate_pct | Yes | |
| interpretation | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| budget_consumed_pct_per_hour | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the agent knows this is a pure, side-effect-free computation. The description adds that it returns burn rate and hourly budget consumption, but that is already implied by the output schema and the name, so added behavioral context is thin.
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 sentences, front-loaded with the trigger condition and followed by the computation. The closing sentence about returns largely duplicates the output schema, so it is slightly padded but still tight overall.
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 full schema coverage, an existing output schema, and read-only annotations, the description covers everything needed to invoke the tool correctly. The one remaining gap is sibling differentiation (error-budget-calculator, availability-sla-calculator) in a large family of similar calculators.
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 every parameter (errors, total, slo, window_hours) is already documented in the schema. The description restates the input set without adding units, format, or constraints beyond it, 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?
The description states a specific computation (burn rate and error-budget consumption per hour) from named inputs, so the purpose is unambiguous. It does not, however, distinguish itself from the closely-related sibling error-budget-calculator, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit trigger conditions in user-intent terms: 'when a user asks how fast they are burning their error budget, or whether their current error rate will exhaust their SLO window.' That is a clear when-to-use, but no when-not-to-use and no routing to the sibling error-budget-calculator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
software-purchase-risk-calculatorSoftware Purchase Risk CalculatorCRead-onlyIdempotentInspect
Use when a user asks about risk of a software purchase or SaaS commitment.
| Name | Required | Description | Default |
|---|---|---|---|
| numUsers | No | numUsers used by this deterministic tool. | |
| setupHours | No | setupHours used by this deterministic tool. | |
| integrationCount | No | integrationCount used by this deterministic tool. | |
| internalHourlyCost | No | internalHourlyCost used by this deterministic tool. | |
| monthlySubscription | Yes | monthlySubscription used by this deterministic tool. | |
| changeManagementRisk | No | changeManagementRisk used by this deterministic tool. | |
| contractLengthMonths | No | contractLengthMonths used by this deterministic tool. | |
| vendorStabilityScore | No | vendorStabilityScore used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| risk_score | Yes | |
| output_tier | Yes | |
| monthly_cost | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| contract_total | Yes | |
| interpretation | Yes | |
| year1_sub_cost | Yes | |
| contract_months | Yes | |
| vendor_component | Yes | |
| year1_labor_cost | Yes | |
| year1_total_cost | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| adoption_component | Yes | |
| complexity_component | Yes | |
| integration_component | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds nothing on top of that: no mention that the computation is deterministic, no note on how the 1-5 risk scales behave, no statement about what a caller gets back. With annotations carrying the safety load, this remains a gap rather than a strength.
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?
It is a single, front-loaded sentence with no filler, which is structurally clean. But for an 8-parameter tool the brevity edges into under-specification rather than disciplined conciseness.
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?
An output schema exists, so return values need not be explained. Still, the tool takes 8 inputs including bounded ordinal scales (changeManagementRisk and vendorStabilityScore, both 1-5) whose directionality and meaning are undocumented anywhere, and the description does nothing to resolve that. For a multi-input scoring model this is incomplete.
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 nominally 100%, which sets the baseline at 3, but every parameter description is the same boilerplate ('X used by this deterministic tool') and conveys no domain meaning. The description itself supplies zero parameter guidance, so it neither compensates for nor improves on 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 only supplies a trigger phrase ('Use when a user asks about risk of a software purchase or SaaS commitment') and never states what the tool actually computes or returns. It essentially restates the name/title 'Software Purchase Risk Calculator' in different words rather than adding a distinct verb+resource statement. An agent learns nothing beyond the already-visible tool name.
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 single sentence is a usage condition, so a trigger is provided ('risk of a software purchase or SaaS commitment'). However, there is no when-not guidance and no differentiation from the 31 siblings, several of which overlap heavily (total-cost-of-ownership-calculator, cloud-waste-calculator, reserved-instance-breakeven).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terraform-plan-cost-estimatorTerraform Plan Cost EstimatorARead-onlyIdempotentInspect
Use when a user asks to estimate monthly cost of a Terraform plan.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | count used by this deterministic tool. | |
| instance_size | No | instance size used by this deterministic tool. | |
| resource_type | Yes | resource type used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| annual_cost | Yes | |
| hourly_rate | Yes | |
| output_tier | Yes | |
| monthly_cost | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| resource_type | Yes | |
| why_follow_up | Yes | |
| interpretation | Yes | |
| resource_count | Yes | |
| affiliate_context | No | |
| computation_basis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint. The description adds no behavioral context beyond the usage trigger, such as determinism, limitations, or scope restrictions.
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 with no wasted words. It is appropriately sized for the amount of information it conveys.
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 schema and output schema are rich, and annotations cover safety traits, so the description need not explain return values. However, it does not clarify how a Terraform plan maps to the required resource_type, count, and instance_size inputs, nor does it differentiate from numerous sibling cost calculators.
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 three parameters. The description does not add any parameter-level meaning, making the baseline score of 3 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 states a specific action and target: estimating monthly cost of a Terraform plan. It is clear what the tool does, though it does not explicitly differentiate itself from closely related cost estimators beyond the Terraform plan wording.
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 gives a clear trigger: use when a user asks to estimate monthly cost of a Terraform plan. It does not provide when-not-to-use guidance or name alternative sibling tools, but the intended context is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
total-cost-of-ownership-calculatorTotal Cost of Ownership CalculatorBRead-onlyIdempotentInspect
Use when a user asks about TCO or multi-year SaaS cost.
| Name | Required | Description | Default |
|---|---|---|---|
| oneTimeFees | No | oneTimeFees used by this deterministic tool. | |
| numPaidSeats | Yes | numPaidSeats used by this deterministic tool. | |
| contractLength | No | contractLength used by this deterministic tool. | |
| perUserMonthlyFee | No | perUserMonthlyFee used by this deterministic tool. | |
| adminHoursPerMonth | No | adminHoursPerMonth used by this deterministic tool. | |
| expectedActiveUsers | Yes | expectedActiveUsers used by this deterministic tool. | |
| internalHourlyCost105 | No | internalHourlyCost105 used by this deterministic tool. | |
| baseMonthlySubscription | No | baseMonthlySubscription used by this deterministic tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| do_savings | Yes | |
| output_tier | Yes | |
| monthly_cost | Yes | |
| signal_value | Yes | |
| next_step_url | Yes | |
| why_follow_up | Yes | |
| contract_total | Yes | |
| interpretation | Yes | |
| seat_waste_pct | Yes | |
| contract_months | Yes | |
| shelfware_seats | Yes | |
| overpaying_flags | Yes | |
| year1_admin_cost | Yes | |
| year1_total_cost | Yes | |
| affiliate_context | No | |
| computation_basis | Yes | |
| year1_vendor_cost | Yes | |
| seat_waste_cost_yr | Yes | |
| cost_per_user_monthly | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the full safety profile of this side-effect-free computation is covered by structured data. The description adds no behavioral context of its own (no mention of determinism, formula scope, or units), but for a pure read-only calculator with complete annotations there is little left to disclose. 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?
A single front-loaded sentence with zero filler; the trigger is stated immediately. It is efficient but so terse that the brevity tips into under-specification rather than genuine conciseness, which caps it below 5.
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?
An output schema exists, so return values need not be explained, and rich annotations cover the safety profile of this read-only computation. The remaining gap is param semantics and sibling routing for an 8-parameter financial model, which the one-line description does not address.
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 nominally 100%, so the baseline is 3 per the rubric. The description contributes nothing about any of the 8 parameters, and the schema descriptions are generic placeholders, so no extra meaning is added. Baseline 3 is the correct landing spot.
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 the domain (TCO, multi-year SaaS cost) and the name itself signals a calculator, so an agent can infer the resource being computed. However, it never states what the tool actually computes or returns, reading as a trigger phrase rather than a purpose statement. It only partially separates this tool from the many other cost siblings (ec2-cost-calculator, pipeline-cost-calculator, software-purchase-risk-calculator).
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?
"Use when a user asks about TCO or multi-year SaaS cost" gives an explicit trigger condition, which is real usage guidance. It offers no when-not, no prerequisites, and no routing against the crowded set of cost-oriented siblings, so an agent facing an ambiguous cost question still has to guess. This is implied-to-partial guidance rather than a complete selection rule.
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.
10 tool updates
- Changed
apdex-score-calculator11 fields changed- changed
Input schema / properties / satisfied / descriptionPrevious value: -"satisfied used by this deterministic tool."New value: +"Requests answered within the target threshold T." - changed
Input schema / properties / satisfied / examplesPrevious value: -[ - 1 -]New value: +[ + 850 +] - changed
Input schema / properties / tolerating / descriptionPrevious value: -"tolerating used by this deterministic tool."New value: +"Requests answered between T and 4T." - changed
Input schema / properties / tolerating / examplesPrevious value: -[ - 1 -]New value: +[ + 100 +] - changed
Input schema / properties / total / descriptionPrevious value: -"Total number of requests observed in the measurement window."New value: +"All requests in the sample, including frustrated ones (slower than 4T or failed)." - changed
Input schema / properties / total / examplesPrevious value: -[ - 1 -]New value: +[ + 1000 +] - added
Output schema / properties / frustrated_pctAdded value: +{ + "type": "number" +} - added
Output schema / properties / rating_bandAdded value: +{ + "type": "string" +} - added
Output schema / properties / tolerating_pctAdded value: +{ + "type": "number" +} - added
Output schema / properties / total_samplesAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "apdex_score", - "computation_basis", - "interpretation", - "next_step", - "next_step_url", - "rating", - "satisfied_pct", - "why_follow_up" -]New value: +[ + "apdex_score", + "computation_basis", + "frustrated_pct", + "interpretation", + "next_step", + "next_step_url", + "rating", + "rating_band", + "satisfied_pct", + "tolerating_pct", + "total_samples", + "why_follow_up" +]
- Changed
detect-secrets-scanner1 field changed- changed
Input schema / properties / text / maxLengthPrevious value: -200000New value: +8192
- Changed
dockerfile-linter11 fields changed- changed
Input schema / properties / dockerfile / descriptionPrevious value: -"Dockerfile content (full or partial)"New value: +"Dockerfile content (full or partial), up to 8,192 characters." - changed
Input schema / properties / dockerfile / maxLengthPrevious value: -200000New value: +8192 - added
Output schema / properties / error_countAdded value: +{ + "type": "number" +} - added
Output schema / properties / info_countAdded value: +{ + "type": "number" +} - added
Output schema / properties / instruction_countAdded value: +{ + "type": "number" +} - added
Output schema / properties / issues / items / properties / codeAdded value: +{ + "type": "string" +} - added
Output schema / properties / issues / items / properties / severityAdded value: +{ + "type": "string" +} - changed
Output schema / properties / issues / items / requiredPrevious value: -[ - "issue", - "line", - "suggestion" -]New value: +[ + "code", + "issue", + "line", + "severity", + "suggestion" +] - added
Output schema / properties / line_countAdded value: +{ + "type": "number" +} - added
Output schema / properties / warning_countAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "computation_basis", - "interpretation", - "issue_count", - "issues", - "next_step", - "next_step_url", - "severity", - "why_follow_up" -]New value: +[ + "computation_basis", + "error_count", + "info_count", + "instruction_count", + "interpretation", + "issue_count", + "issues", + "line_count", + "next_step", + "next_step_url", + "severity", + "warning_count", + "why_follow_up" +]
- Changed
dora-metrics-calculator16 fields changed- changed
Input schema / properties / change_failure_pct / descriptionPrevious value: -"change failure expressed as a percentage."New value: +"Share of deployments that cause a failure in production, in percent." - changed
Input schema / properties / change_failure_pct / examplesPrevious value: -[ - 1 -]New value: +[ + 15 +] - added
Input schema / properties / change_failure_pct / maximumAdded value: +100 - added
Input schema / properties / change_failure_pct / minimumAdded value: +0 - changed
Input schema / properties / deploys_per_month / descriptionPrevious value: -"deploys per month used by this deterministic tool."New value: +"Production deployments per month." - changed
Input schema / properties / deploys_per_month / examplesPrevious value: -[ - 1 -]New value: +[ + 20 +] - added
Input schema / properties / deploys_per_month / minimumAdded value: +0 - changed
Input schema / properties / lead_time_hours / descriptionPrevious value: -"lead time in hours."New value: +"Lead time for changes, commit to production, in hours." - changed
Input schema / properties / lead_time_hours / examplesPrevious value: -[ - 1 -]New value: +[ + 24 +] - added
Input schema / properties / lead_time_hours / minimumAdded value: +0 - changed
Input schema / properties / restore_time_hours / descriptionPrevious value: -"restore time in hours."New value: +"Time to restore service after a failed change, in hours. Optional; when omitted the metric is reported as unknown." - changed
Input schema / properties / restore_time_hours / examplesPrevious value: -[ - 1 -]New value: +[ + 4 +] - added
Input schema / properties / restore_time_hours / minimumAdded value: +0 - added
Output schema / properties / assessmentAdded value: +{ + "type": "string" +} - added
Output schema / properties / metrics_assessedAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "change_failure_rate_tier", - "computation_basis", - "deploy_frequency_tier", - "interpretation", - "lead_time_tier", - "mttr_tier", - "next_step", - "next_step_url", - "overall_tier", - "why_follow_up" -]New value: +[ + "assessment", + "change_failure_rate_tier", + "computation_basis", + "deploy_frequency_tier", + "interpretation", + "lead_time_tier", + "metrics_assessed", + "mttr_tier", + "next_step", + "next_step_url", + "overall_tier", + "why_follow_up" +]
- Changed
egress-cost-calculator2 fields changed- added
Output schema / properties / cdn_pctAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "billable_egress_gb", - "cdn_offload_gb", - "computation_basis", - "cost_risk", - "daily_egress_gb", - "free_tier_gb", - "interpretation", - "monthly_cost_usd", - "monthly_egress_gb", - "next_step", - "next_step_url", - "origin_egress_gb", - "provider", - "rate_per_gb", - "why_follow_up" -]New value: +[ + "billable_egress_gb", + "cdn_offload_gb", + "cdn_pct", + "computation_basis", + "cost_risk", + "daily_egress_gb", + "free_tier_gb", + "interpretation", + "monthly_cost_usd", + "monthly_egress_gb", + "next_step", + "next_step_url", + "origin_egress_gb", + "provider", + "rate_per_gb", + "why_follow_up" +]
- Changed
known-vulnerability-checker1 field changed- changed
Input schema / properties / package_name / descriptionPrevious value: -"Package name to check (e.g. \"lodash\", \"log4j\", \"django\")"New value: +"Package identifier, optionally with a version (e.g. lodash@4.17.21, log4j-core, @babel/core). Versions are not assessed by this historical lookup."
- Changed
pipeline-cost-calculator18 fields changed- changed
Input schema / properties / avg_job_min / descriptionPrevious value: -"avg job min used by this deterministic tool."New value: +"Average job duration in minutes." - changed
Input schema / properties / avg_job_min / examplesPrevious value: -[ - 1 -]New value: +[ + 8 +] - added
Input schema / properties / avg_job_min / minimumAdded value: +0 - changed
Input schema / properties / jobs_per_run / descriptionPrevious value: -"jobs per run used by this deterministic tool."New value: +"Jobs per workflow run." - changed
Input schema / properties / jobs_per_run / examplesPrevious value: -[ - 1 -]New value: +[ + 4 +] - added
Input schema / properties / jobs_per_run / minimumAdded value: +0 - changed
Input schema / properties / runner / descriptionPrevious value: -"runner used by this deterministic tool."New value: +"Runner label, for example ubuntu-latest, windows-latest, macos-latest or self-hosted. Matched case-insensitively; defaults to Linux." - changed
Input schema / properties / runner / examplesPrevious value: -[ - "example" -]New value: +[ + "ubuntu-latest" +] - added
Input schema / properties / runner / maxLengthAdded value: +128 - changed
Input schema / properties / runs_per_month / descriptionPrevious value: -"runs per month used by this deterministic tool."New value: +"Workflow runs per month." - changed
Input schema / properties / runs_per_month / examplesPrevious value: -[ - 1 -]New value: +[ + 500 +] - added
Input schema / properties / runs_per_month / minimumAdded value: +0 - added
Output schema / properties / included_minutesAdded value: +{ + "type": "number" +} - added
Output schema / properties / included_minutes_usedAdded value: +{ + "type": "number" +} - added
Output schema / properties / rate_per_minute_usdAdded value: +{ + "type": "number" +} - added
Output schema / properties / rates_as_ofAdded value: +{ + "type": "string" +} - added
Output schema / properties / runner_typeAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "billable_minutes", - "computation_basis", - "interpretation", - "monthly_cost_usd", - "next_step", - "next_step_url", - "runner_multiplier", - "severity", - "total_minutes_per_month", - "why_follow_up" -]New value: +[ + "billable_minutes", + "computation_basis", + "included_minutes", + "included_minutes_used", + "interpretation", + "monthly_cost_usd", + "next_step", + "next_step_url", + "rate_per_minute_usd", + "rates_as_of", + "runner_multiplier", + "runner_type", + "severity", + "total_minutes_per_month", + "why_follow_up" +]
- Changed
precision-recall-f1-calculator3 fields changed- added
Output schema / properties / betaAdded value: +{ + "type": "number" +} - added
Output schema / properties / precision_recall_gapAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "computation_basis", - "f1_score", - "f_beta_score", - "interpretation", - "next_step", - "next_step_url", - "precision_recall_balance", - "why_follow_up" -]New value: +[ + "beta", + "computation_basis", + "f1_score", + "f_beta_score", + "interpretation", + "next_step", + "next_step_url", + "precision_recall_balance", + "precision_recall_gap", + "why_follow_up" +]
- Changed
query-cost-estimator2 fields changed- added
Output schema / properties / storage_typeAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "computation_basis", - "cost_ratio", - "index_pages", - "index_scan_cost", - "index_tuples", - "interpretation", - "next_step", - "next_step_url", - "random_page_cost", - "recommended_plan", - "sequential_scan_cost", - "why_follow_up" -]New value: +[ + "computation_basis", + "cost_ratio", + "index_pages", + "index_scan_cost", + "index_tuples", + "interpretation", + "next_step", + "next_step_url", + "random_page_cost", + "recommended_plan", + "sequential_scan_cost", + "storage_type", + "why_follow_up" +]
- Changed
reserved-instance-breakeven19 fields changed- changed
Input schema / properties / od_monthly / descriptionPrevious value: -"od monthly used by this deterministic tool."New value: +"On-Demand cost per month in USD." - changed
Input schema / properties / od_monthly / examplesPrevious value: -[ - 1 -]New value: +[ + 450 +] - added
Input schema / properties / od_monthly / exclusiveMinimumAdded value: +0 - changed
Input schema / properties / ri_1yr_monthly / descriptionPrevious value: -"ri 1yr monthly used by this deterministic tool."New value: +"1-year Reserved Instance cost per month in USD, excluding the upfront fee." - changed
Input schema / properties / ri_1yr_monthly / examplesPrevious value: -[ - 1 -]New value: +[ + 280 +] - added
Input schema / properties / ri_1yr_monthly / minimumAdded value: +0 - changed
Input schema / properties / ri_1yr_upfront / descriptionPrevious value: -"ri 1yr upfront used by this deterministic tool."New value: +"1-year upfront fee in USD; 0 when omitted (no-upfront RI)." - changed
Input schema / properties / ri_1yr_upfront / examplesPrevious value: -[ - 1 -]New value: +[ + 0 +] - added
Input schema / properties / ri_1yr_upfront / minimumAdded value: +0 - changed
Input schema / properties / ri_3yr_monthly / descriptionPrevious value: -"ri 3yr monthly used by this deterministic tool."New value: +"3-year Reserved Instance cost per month in USD, excluding the upfront fee." - changed
Input schema / properties / ri_3yr_monthly / examplesPrevious value: -[ - 1 -]New value: +[ + 180 +] - added
Input schema / properties / ri_3yr_monthly / minimumAdded value: +0 - changed
Input schema / properties / ri_3yr_upfront / descriptionPrevious value: -"ri 3yr upfront used by this deterministic tool."New value: +"3-year upfront fee in USD; 0 when omitted (no-upfront RI)." - changed
Input schema / properties / ri_3yr_upfront / examplesPrevious value: -[ - 1 -]New value: +[ + 0 +] - added
Input schema / properties / ri_3yr_upfront / minimumAdded value: +0 - added
Output schema / properties / breakeven_months_3yrAdded value: +{ + "type": "number" +} - added
Output schema / properties / monthly_saving_1yr_usdAdded value: +{ + "type": "number" +} - added
Output schema / properties / monthly_saving_3yr_usdAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "computation_basis", - "interpretation", - "net_savings_1yr_usd", - "net_savings_3yr_usd", - "next_step", - "next_step_url", - "recommended_term", - "severity", - "why_follow_up" -]New value: +[ + "computation_basis", + "interpretation", + "monthly_saving_1yr_usd", + "monthly_saving_3yr_usd", + "net_savings_1yr_usd", + "net_savings_3yr_usd", + "next_step", + "next_step_url", + "recommended_term", + "severity", + "why_follow_up" +]
6 tool updates
- Changed
canonical-url-auditor2 fields changed- added
Input schema / properties / canonical / maxLengthAdded value: +2048 - added
Input schema / properties / page_url / maxLengthAdded value: +2048
- Changed
certificate-expiry-checker1 field changed- added
Input schema / properties / domain / maxLengthAdded value: +253
- Changed
detect-secrets-scanner2 fields changed- changed
Input schema / properties / text / descriptionPrevious value: -"Config, code, or env file content to scan for secrets"New value: +"Config, code, or env file content to scan. Do not submit live production secrets; rotate any real credential that appears here." - added
Input schema / properties / text / maxLengthAdded value: +200000
- Changed
dockerfile-linter1 field changed- added
Input schema / properties / dockerfile / maxLengthAdded value: +200000
- Changed
known-vulnerability-checker1 field changed- added
Input schema / properties / package_name / maxLengthAdded value: +256
- Changed
kubernetes-manifest-linter1 field changed- added
Input schema / properties / manifest / maxLengthAdded value: +200000
6 tool updates
- Changed
canonical-url-auditor1 field changed- changed
Output schema / requiredPrevious value: -[ - "canonical_found", - "computation_basis", - "interpretation", - "issue", - "next_step", - "next_step_url", - "page_url", - "recommendation", - "severity", - "why_follow_up" -]New value: +[ + "computation_basis", + "interpretation", + "issue", + "next_step", + "next_step_url", + "page_url", + "recommendation", + "severity", + "why_follow_up" +]
- Changed
ec2-cost-calculator3 fields changed- changed
Input schema / properties / hours_per_month / examplesPrevious value: -[ - 1 -]New value: +[ + 730 +] - changed
Input schema / properties / instance_type / examplesPrevious value: -[ - "example" -]New value: +[ + "t3.medium" +] - changed
Input schema / properties / os / examplesPrevious value: -[ - "example" -]New value: +[ + "Linux" +]
- Changed
known-vulnerability-checker2 fields changed- changed
Input schema / properties / package_name / examplesPrevious value: -[ - "example" -]New value: +[ + "lodash" +] - changed
Output schema / requiredPrevious value: -[ - "checked_against", - "computation_basis", - "cve", - "interpretation", - "next_step", - "next_step_url", - "package_name", - "severity", - "status", - "why_follow_up" -]New value: +[ + "checked_against", + "computation_basis", + "interpretation", + "next_step", + "next_step_url", + "package_name", + "severity", + "status", + "why_follow_up" +]
- Changed
mttr-calculator1 field changed- changed
Input schema / properties / incidents / examplesPrevious value: -[ - "example" -]New value: +[ + "2026-04-01T10:00,2026-04-01T10:05,2026-04-01T10:30" +]
- Changed
reserved-instance-breakeven1 field changed- changed
Output schema / requiredPrevious value: -[ - "breakeven_months", - "computation_basis", - "interpretation", - "net_savings_1yr_usd", - "net_savings_3yr_usd", - "next_step", - "next_step_url", - "recommended_term", - "severity", - "why_follow_up" -]New value: +[ + "computation_basis", + "interpretation", + "net_savings_1yr_usd", + "net_savings_3yr_usd", + "next_step", + "next_step_url", + "recommended_term", + "severity", + "why_follow_up" +]
- Changed
rightsizing-calculator4 fields changed- added
Input schema / properties / current_memory_gb / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / current_memory_gb / minimumRemoved value: -0 - added
Input schema / properties / current_vcpu / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / current_vcpu / minimumRemoved value: -0
31 tool updates
- Changed
alert-fatigue-calculator8 fields changed- added
Input schema / properties / actionable_pct / descriptionAdded value: +"actionable expressed as a percentage." - added
Input schema / properties / actionable_pct / examplesAdded value: +[ + 1 +] - added
Input schema / properties / alerts_per_week / descriptionAdded value: +"alerts per week used by this deterministic tool." - added
Input schema / properties / alerts_per_week / examplesAdded value: +[ + 1 +] - added
Input schema / properties / avg_resolution_min / descriptionAdded value: +"avg resolution min used by this deterministic tool." - added
Input schema / properties / avg_resolution_min / examplesAdded value: +[ + 1 +] - added
Input schema / properties / engineer_count / descriptionAdded value: +"engineer count used by this deterministic tool." - added
Input schema / properties / engineer_count / examplesAdded value: +[ + 1 +]
- Changed
apdex-score-calculator8 fields changed- added
Input schema / properties / satisfied / descriptionAdded value: +"satisfied used by this deterministic tool." - added
Input schema / properties / satisfied / examplesAdded value: +[ + 1 +] - added
Input schema / properties / tolerating / descriptionAdded value: +"tolerating used by this deterministic tool." - added
Input schema / properties / tolerating / examplesAdded value: +[ + 1 +] - added
Input schema / properties / total / descriptionAdded value: +"Total number of requests observed in the measurement window." - added
Input schema / properties / total / examplesAdded value: +[ + 1 +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "apdex_score", - "interpretation", - "next_step", - "next_step_url", - "rating", - "satisfied_pct", - "why_follow_up" -]New value: +[ + "apdex_score", + "computation_basis", + "interpretation", + "next_step", + "next_step_url", + "rating", + "satisfied_pct", + "why_follow_up" +]
- Changed
availability-sla-calculator3 fields changed- added
Input schema / properties / availability_pct / examplesAdded value: +[ + 1 +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "annual_downtime_minutes", - "availability_tier", - "interpretation", - "monthly_downtime_minutes", - "next_step", - "next_step_url", - "weekly_downtime_minutes", - "why_follow_up" -]New value: +[ + "annual_downtime_minutes", + "availability_tier", + "computation_basis", + "interpretation", + "monthly_downtime_minutes", + "next_step", + "next_step_url", + "weekly_downtime_minutes", + "why_follow_up" +]
- Changed
canonical-url-auditor2 fields changed- added
Input schema / properties / canonical / examplesAdded value: +[ + "example" +] - added
Input schema / properties / page_url / examplesAdded value: +[ + "https://example.com/" +]
- Changed
certificate-expiry-checker2 fields changed- added
Input schema / properties / days_remaining / examplesAdded value: +[ + 1 +] - added
Input schema / properties / domain / examplesAdded value: +[ + "example.com" +]
- Changed
change-failure-rate-calculator4 fields changed- added
Input schema / properties / failed_deploys / descriptionAdded value: +"failed deploys used by this deterministic tool." - added
Input schema / properties / failed_deploys / examplesAdded value: +[ + 1 +] - added
Input schema / properties / total_deploys / descriptionAdded value: +"total deploys used by this deterministic tool." - added
Input schema / properties / total_deploys / examplesAdded value: +[ + 1 +]
- Changed
cloud-waste-calculator8 fields changed- added
Input schema / properties / idle_pct / descriptionAdded value: +"idle expressed as a percentage." - added
Input schema / properties / idle_pct / examplesAdded value: +[ + 1 +] - added
Input schema / properties / monthly_cloud_bill / descriptionAdded value: +"monthly cloud bill used by this deterministic tool." - added
Input schema / properties / monthly_cloud_bill / examplesAdded value: +[ + 1 +] - added
Input schema / properties / oversized_pct / descriptionAdded value: +"oversized expressed as a percentage." - added
Input schema / properties / oversized_pct / examplesAdded value: +[ + 1 +] - added
Input schema / properties / unattached_volumes_count / descriptionAdded value: +"unattached volumes count used by this deterministic tool." - added
Input schema / properties / unattached_volumes_count / examplesAdded value: +[ + 1 +]
- Changed
cluster-capacity-calculator29 fields changed- added
Input schema / properties / node_countAdded value: +{ + "description": "node count used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 1, + "type": "number" +} - removed
Input schema / properties / node_cpuRemoved value: -{ - "type": "number" -} - added
Input schema / properties / node_mem_gbAdded value: +{ + "description": "node mem in gigabytes.", + "examples": [ + 0.001 + ], + "minimum": 0.001, + "type": "number" +} - removed
Input schema / properties / node_memory_gbRemoved value: -{ - "type": "number" -} - added
Input schema / properties / node_vcpuAdded value: +{ + "description": "node vcpu used by this deterministic tool.", + "examples": [ + 0.001 + ], + "minimum": 0.001, + "type": "number" +} - removed
Input schema / properties / nodesRemoved value: -{ - "type": "number" -} - removed
Input schema / properties / pod_cpu_mRemoved value: -{ - "type": "number" -} - removed
Input schema / properties / pod_memory_mbRemoved value: -{ - "type": "number" -} - removed
Input schema / properties / podsRemoved value: -{ - "type": "number" -} - added
Input schema / properties / system_reserve_pctAdded value: +{ + "description": "system reserve expressed as a percentage.", + "examples": [ + 1 + ], + "maximum": 99.999, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / target_utilization_pctAdded value: +{ + "description": "target utilization expressed as a percentage.", + "examples": [ + 0.001 + ], + "maximum": 100, + "minimum": 0.001, + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "nodes", - "node_cpu", - "node_memory_gb" -]New value: +[ + "node_vcpu", + "node_mem_gb", + "node_count" +] - removed
Output schema / properties / allocatable_cpu_coresRemoved value: -{ - "type": "number" -} - added
Output schema / properties / allocatable_factorAdded value: +{ + "type": "number" +} - removed
Output schema / properties / allocatable_memory_gbRemoved value: -{ - "type": "number" -} - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - removed
Output schema / properties / cpu_utilization_pctRemoved value: -{ - "type": "number" -} - removed
Output schema / properties / memory_utilization_pctRemoved value: -{ - "type": "number" -} - added
Output schema / properties / node_countAdded value: +{ + "type": "number" +} - added
Output schema / properties / output_tierAdded value: +{ + "type": "string" +} - removed
Output schema / properties / pressure_levelRemoved value: -{ - "type": "string" -} - added
Output schema / properties / raw_memory_gbAdded value: +{ + "type": "number" +} - added
Output schema / properties / raw_vcpuAdded value: +{ + "type": "number" +} - added
Output schema / properties / remaining_pctAdded value: +{ + "type": "number" +} - removed
Output schema / properties / severityRemoved value: -{ - "type": "string" -} - added
Output schema / properties / signal_valueAdded value: +{ + "type": "number" +} - added
Output schema / properties / usable_memory_gbAdded value: +{ + "type": "number" +} - added
Output schema / properties / usable_vcpuAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "allocatable_cpu_cores", - "allocatable_memory_gb", - "cpu_utilization_pct", - "interpretation", - "memory_utilization_pct", - "next_step", - "next_step_url", - "pressure_level", - "severity", - "why_follow_up" -]New value: +[ + "allocatable_factor", + "computation_basis", + "interpretation", + "next_step", + "next_step_url", + "node_count", + "output_tier", + "raw_memory_gb", + "raw_vcpu", + "remaining_pct", + "signal_value", + "usable_memory_gb", + "usable_vcpu", + "why_follow_up" +]
- Changed
connection-pool-calculator20 fields changed- removed
Input schema / properties / app_instancesRemoved value: -{ - "type": "number" -} - added
Input schema / properties / app_serversAdded value: +{ + "description": "app servers used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 1, + "type": "number" +} - added
Input schema / properties / avg_query_msAdded value: +{ + "description": "avg query ms used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 0, + "type": "number" +} - removed
Input schema / properties / cpu_coresRemoved value: -{ - "type": "number" -} - added
Input schema / properties / db_coresAdded value: +{ + "description": "db cores used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 1, + "type": "number" +} - added
Input schema / properties / max_connections / descriptionAdded value: +"max connections used by this deterministic tool." - added
Input schema / properties / max_connections / examplesAdded value: +[ + 1 +] - added
Input schema / properties / max_connections / minimumAdded value: +1 - added
Input schema / properties / peak_rpsAdded value: +{ + "description": "peak rps used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 0, + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "cpu_cores" -]New value: +[ + "max_connections", + "app_servers", + "db_cores", + "avg_query_ms", + "peak_rps" +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - added
Output schema / properties / estimated_connection_memory_mbAdded value: +{ + "type": "number" +} - removed
Output schema / properties / max_connections_utilization_pctRemoved value: -{} - added
Output schema / properties / peak_concurrent_demandAdded value: +{ + "type": "number" +} - removed
Output schema / properties / per_app_instanceRemoved value: -{ - "type": "number" -} - added
Output schema / properties / per_app_pool_sizeAdded value: +{ + "type": "number" +} - added
Output schema / properties / saturation_pctAdded value: +{ + "type": "number" +} - added
Output schema / properties / statusAdded value: +{ + "type": "string" +} - removed
Output schema / properties / warningRemoved value: -{ - "type": "boolean" -} - changed
Output schema / requiredPrevious value: -[ - "interpretation", - "next_step", - "next_step_url", - "per_app_instance", - "recommended_pool_total", - "warning", - "why_follow_up" -]New value: +[ + "computation_basis", + "estimated_connection_memory_mb", + "interpretation", + "next_step", + "next_step_url", + "peak_concurrent_demand", + "per_app_pool_size", + "recommended_pool_total", + "saturation_pct", + "status", + "why_follow_up" +]
- Changed
deployment-frequency-calculator6 fields changed- added
Input schema / properties / deploys_per_month / descriptionAdded value: +"deploys per month used by this deterministic tool." - added
Input schema / properties / deploys_per_month / examplesAdded value: +[ + 1 +] - added
Input schema / properties / team_size / descriptionAdded value: +"team size used by this deterministic tool." - added
Input schema / properties / team_size / examplesAdded value: +[ + 1 +] - added
Input schema / properties / working_days / descriptionAdded value: +"working days used by this deterministic tool." - added
Input schema / properties / working_days / examplesAdded value: +[ + 1 +]
- Changed
detect-secrets-scanner4 fields changed- added
Input schema / properties / text / examplesAdded value: +[ + "example" +] - added
Output schema / properties / code_risk_countAdded value: +{ + "type": "number" +} - added
Output schema / properties / code_risk_findingsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "evidence_excerpt": { + "type": "string" + }, + "severity": { + "enum": [ + "HIGH", + "MEDIUM", + "LOW" + ], + "type": "string" + } + }, + "required": [ + "code", + "evidence_excerpt", + "severity" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "computation_basis", - "finding_count", - "findings", - "interpretation", - "next_step", - "next_step_url", - "severity", - "types_found", - "why_follow_up" -]New value: +[ + "code_risk_count", + "code_risk_findings", + "computation_basis", + "finding_count", + "findings", + "interpretation", + "next_step", + "next_step_url", + "severity", + "types_found", + "why_follow_up" +]
- Changed
dockerfile-linter1 field changed- added
Input schema / properties / dockerfile / examplesAdded value: +[ + "example" +]
- Changed
dora-metrics-calculator10 fields changed- added
Input schema / properties / change_failure_pct / descriptionAdded value: +"change failure expressed as a percentage." - added
Input schema / properties / change_failure_pct / examplesAdded value: +[ + 1 +] - added
Input schema / properties / deploys_per_month / descriptionAdded value: +"deploys per month used by this deterministic tool." - added
Input schema / properties / deploys_per_month / examplesAdded value: +[ + 1 +] - added
Input schema / properties / lead_time_hours / descriptionAdded value: +"lead time in hours." - added
Input schema / properties / lead_time_hours / examplesAdded value: +[ + 1 +] - added
Input schema / properties / restore_time_hours / descriptionAdded value: +"restore time in hours." - added
Input schema / properties / restore_time_hours / examplesAdded value: +[ + 1 +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "change_failure_rate_tier", - "deploy_frequency_tier", - "interpretation", - "lead_time_tier", - "mttr_tier", - "next_step", - "next_step_url", - "overall_tier", - "why_follow_up" -]New value: +[ + "change_failure_rate_tier", + "computation_basis", + "deploy_frequency_tier", + "interpretation", + "lead_time_tier", + "mttr_tier", + "next_step", + "next_step_url", + "overall_tier", + "why_follow_up" +]
- Changed
ec2-cost-calculator6 fields changed- added
Input schema / properties / hours_per_month / descriptionAdded value: +"hours per month used by this deterministic tool." - added
Input schema / properties / hours_per_month / examplesAdded value: +[ + 1 +] - added
Input schema / properties / instance_type / descriptionAdded value: +"instance type used by this deterministic tool." - added
Input schema / properties / instance_type / examplesAdded value: +[ + "example" +] - added
Input schema / properties / os / descriptionAdded value: +"os used by this deterministic tool." - added
Input schema / properties / os / examplesAdded value: +[ + "example" +]
- Changed
egress-cost-calculator18 fields changed- added
Input schema / properties / avg_response_kbAdded value: +{ + "description": "avg response kb used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 0, + "type": "number" +} - added
Input schema / properties / cdn_pctAdded value: +{ + "description": "cdn expressed as a percentage.", + "examples": [ + 1 + ], + "maximum": 100, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / daily_requestsAdded value: +{ + "description": "daily requests used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 0, + "type": "number" +} - added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider whose published pricing model should be applied.", + "enum": [ + "AWS", + "GCP", + "Azure", + "Cloudflare", + "DigitalOcean" + ], + "examples": [ + "AWS" + ], + "type": "string" +} - removed
Input schema / properties / transfer_gbRemoved value: -{ - "type": "number" -} - changed
Input schema / requiredPrevious value: -[ - "transfer_gb" -]New value: +[ + "daily_requests", + "avg_response_kb" +] - added
Output schema / properties / billable_egress_gbAdded value: +{ + "type": "number" +} - added
Output schema / properties / cdn_offload_gbAdded value: +{ + "type": "number" +} - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - added
Output schema / properties / daily_egress_gbAdded value: +{ + "type": "number" +} - removed
Output schema / properties / effective_rate_per_gbRemoved value: -{ - "type": "number" -} - added
Output schema / properties / free_tier_gbAdded value: +{ + "type": "number" +} - added
Output schema / properties / monthly_egress_gbAdded value: +{ + "type": "number" +} - added
Output schema / properties / origin_egress_gbAdded value: +{ + "type": "number" +} - added
Output schema / properties / providerAdded value: +{ + "type": "string" +} - added
Output schema / properties / rate_per_gbAdded value: +{ + "type": "number" +} - removed
Output schema / properties / transfer_gbRemoved value: -{ - "type": "number" -} - changed
Output schema / requiredPrevious value: -[ - "cost_risk", - "effective_rate_per_gb", - "interpretation", - "monthly_cost_usd", - "next_step", - "next_step_url", - "transfer_gb", - "why_follow_up" -]New value: +[ + "billable_egress_gb", + "cdn_offload_gb", + "computation_basis", + "cost_risk", + "daily_egress_gb", + "free_tier_gb", + "interpretation", + "monthly_cost_usd", + "monthly_egress_gb", + "next_step", + "next_step_url", + "origin_egress_gb", + "provider", + "rate_per_gb", + "why_follow_up" +]
- Changed
error-budget-calculator10 fields changed- added
Input schema / properties / consumed_minutes / descriptionAdded value: +"consumed in minutes." - added
Input schema / properties / consumed_minutes / examplesAdded value: +[ + 1 +] - added
Input schema / properties / slo_pct / descriptionAdded value: +"Service-level objective target expressed as a percentage." - added
Input schema / properties / slo_pct / examplesAdded value: +[ + 0.001 +] - added
Input schema / properties / window_days / descriptionAdded value: +"Length of the service-level objective window in days." - added
Input schema / properties / window_days / examplesAdded value: +[ + 1 +] - added
Input schema / properties / window_elapsed_days / descriptionAdded value: +"window elapsed days used by this deterministic tool." - added
Input schema / properties / window_elapsed_days / examplesAdded value: +[ + 1 +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "budget_minutes", - "burn_rate", - "interpretation", - "next_step", - "next_step_url", - "remaining_minutes", - "status", - "why_follow_up" -]New value: +[ + "budget_minutes", + "burn_rate", + "computation_basis", + "interpretation", + "next_step", + "next_step_url", + "remaining_minutes", + "status", + "why_follow_up" +]
- Changed
incident-cost-calculator12 fields changed- added
Input schema / properties / affected_pct / descriptionAdded value: +"affected expressed as a percentage." - added
Input schema / properties / affected_pct / examplesAdded value: +[ + 1 +] - added
Input schema / properties / downtime_hours / descriptionAdded value: +"downtime in hours." - added
Input schema / properties / downtime_hours / examplesAdded value: +[ + 1 +] - added
Input schema / properties / eng_hourly / descriptionAdded value: +"eng hourly used by this deterministic tool." - added
Input schema / properties / eng_hourly / examplesAdded value: +[ + 1 +] - added
Input schema / properties / hourly_revenue / descriptionAdded value: +"hourly revenue used by the calculation; monetary values are in USD unless stated otherwise." - added
Input schema / properties / hourly_revenue / examplesAdded value: +[ + 1 +] - added
Input schema / properties / responders / descriptionAdded value: +"responders used by this deterministic tool." - added
Input schema / properties / responders / examplesAdded value: +[ + 1 +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "engineering_cost_usd", - "interpretation", - "next_step", - "next_step_url", - "revenue_impact_usd", - "severity", - "total_cost_usd", - "why_follow_up" -]New value: +[ + "computation_basis", + "engineering_cost_usd", + "interpretation", + "next_step", + "next_step_url", + "revenue_impact_usd", + "severity", + "total_cost_usd", + "why_follow_up" +]
- Changed
known-vulnerability-checker1 field changed- added
Input schema / properties / package_name / examplesAdded value: +[ + "example" +]
- Changed
kubernetes-manifest-linter1 field changed- added
Input schema / properties / manifest / examplesAdded value: +[ + "example" +]
- Changed
mttr-calculator2 fields changed- added
Input schema / properties / incidents / descriptionAdded value: +"incidents used by this deterministic tool." - added
Input schema / properties / incidents / examplesAdded value: +[ + "example" +]
- Changed
on-call-burden-calculator8 fields changed- removed
Input schema / properties / engineer_countRemoved value: -{ - "minimum": 1, - "type": "number" -} - removed
Input schema / properties / hourly_costRemoved value: -{ - "minimum": 0, - "type": "number" -} - added
Input schema / properties / hourly_rateAdded value: +{ + "description": "hourly rate used by the calculation; monetary values are in USD unless stated otherwise.", + "examples": [ + 1 + ], + "minimum": 0, + "type": "number" +} - removed
Input schema / properties / hours_per_shiftRemoved value: -{ - "minimum": 1, - "type": "number" -} - added
Input schema / properties / rotation_weeksAdded value: +{ + "description": "rotation weeks used by this deterministic tool.", + "examples": [ + 1 + ], + "exclusiveMinimum": 0, + "type": "number" +} - removed
Input schema / properties / shifts_per_monthRemoved value: -{ - "minimum": 1, - "type": "number" -} - added
Input schema / properties / team_sizeAdded value: +{ + "description": "team size used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 1, + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "engineer_count", - "shifts_per_month", - "hours_per_shift", - "hourly_cost" -]New value: +[ + "team_size", + "rotation_weeks", + "hourly_rate" +]
- Changed
pipeline-cost-calculator10 fields changed- added
Input schema / properties / avg_job_min / descriptionAdded value: +"avg job min used by this deterministic tool." - added
Input schema / properties / avg_job_min / examplesAdded value: +[ + 1 +] - added
Input schema / properties / jobs_per_run / descriptionAdded value: +"jobs per run used by this deterministic tool." - added
Input schema / properties / jobs_per_run / examplesAdded value: +[ + 1 +] - added
Input schema / properties / runner / descriptionAdded value: +"runner used by this deterministic tool." - added
Input schema / properties / runner / examplesAdded value: +[ + "example" +] - added
Input schema / properties / runs_per_month / descriptionAdded value: +"runs per month used by this deterministic tool." - added
Input schema / properties / runs_per_month / examplesAdded value: +[ + 1 +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "billable_minutes", - "interpretation", - "monthly_cost_usd", - "next_step", - "next_step_url", - "runner_multiplier", - "severity", - "total_minutes_per_month", - "why_follow_up" -]New value: +[ + "billable_minutes", + "computation_basis", + "interpretation", + "monthly_cost_usd", + "next_step", + "next_step_url", + "runner_multiplier", + "severity", + "total_minutes_per_month", + "why_follow_up" +]
- Changed
precision-recall-f1-calculator8 fields changed- added
Input schema / properties / beta / descriptionAdded value: +"beta used by this deterministic tool." - added
Input schema / properties / beta / examplesAdded value: +[ + 1 +] - added
Input schema / properties / precision / descriptionAdded value: +"precision used by this deterministic tool." - added
Input schema / properties / precision / examplesAdded value: +[ + 1 +] - added
Input schema / properties / recall / descriptionAdded value: +"recall used by this deterministic tool." - added
Input schema / properties / recall / examplesAdded value: +[ + 1 +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "f1_score", - "f_beta_score", - "interpretation", - "next_step", - "next_step_url", - "precision_recall_balance", - "why_follow_up" -]New value: +[ + "computation_basis", + "f1_score", + "f_beta_score", + "interpretation", + "next_step", + "next_step_url", + "precision_recall_balance", + "why_follow_up" +]
- Changed
query-cost-estimator18 fields changed- removed
Input schema / properties / queryRemoved value: -{ - "description": "SQL query to analyze", - "type": "string" -} - added
Input schema / properties / selectivity_pctAdded value: +{ + "description": "selectivity expressed as a percentage.", + "examples": [ + 1 + ], + "maximum": 100, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / storage_typeAdded value: +{ + "description": "storage type; accepted values: ssd, nvme, hdd, network.", + "enum": [ + "ssd", + "nvme", + "hdd", + "network" + ], + "examples": [ + "ssd" + ], + "type": "string" +} - added
Input schema / properties / table_pagesAdded value: +{ + "description": "table pages used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 1, + "type": "number" +} - added
Input schema / properties / table_rowsAdded value: +{ + "description": "table rows used by this deterministic tool.", + "examples": [ + 1 + ], + "minimum": 1, + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[ + "table_rows", + "table_pages", + "selectivity_pct", + "storage_type" +] - removed
Output schema / properties / cost_levelRemoved value: -{ - "type": "string" -} - added
Output schema / properties / cost_ratioAdded value: +{ + "type": "number" +} - removed
Output schema / properties / cost_scoreRemoved value: -{ - "type": "number" -} - added
Output schema / properties / index_pagesAdded value: +{ + "type": "number" +} - added
Output schema / properties / index_scan_costAdded value: +{ + "type": "number" +} - added
Output schema / properties / index_tuplesAdded value: +{ + "type": "number" +} - added
Output schema / properties / random_page_costAdded value: +{ + "type": "number" +} - added
Output schema / properties / recommended_planAdded value: +{ + "type": "string" +} - added
Output schema / properties / sequential_scan_costAdded value: +{ + "type": "number" +} - removed
Output schema / properties / warning_countRemoved value: -{ - "type": "number" -} - removed
Output schema / properties / warningsRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - changed
Output schema / requiredPrevious value: -[ - "computation_basis", - "cost_level", - "cost_score", - "interpretation", - "next_step", - "next_step_url", - "warning_count", - "warnings", - "why_follow_up" -]New value: +[ + "computation_basis", + "cost_ratio", + "index_pages", + "index_scan_cost", + "index_tuples", + "interpretation", + "next_step", + "next_step_url", + "random_page_cost", + "recommended_plan", + "sequential_scan_cost", + "why_follow_up" +]
- Changed
rate-limit-utilization-calculator3 fields changed- added
Input schema / properties / current_requests / examplesAdded value: +[ + 1 +] - added
Input schema / properties / limit / examplesAdded value: +[ + 1 +] - added
Input schema / properties / window_seconds / examplesAdded value: +[ + 1 +]
- Changed
reserved-instance-breakeven12 fields changed- added
Input schema / properties / od_monthly / descriptionAdded value: +"od monthly used by this deterministic tool." - added
Input schema / properties / od_monthly / examplesAdded value: +[ + 1 +] - added
Input schema / properties / ri_1yr_monthly / descriptionAdded value: +"ri 1yr monthly used by this deterministic tool." - added
Input schema / properties / ri_1yr_monthly / examplesAdded value: +[ + 1 +] - added
Input schema / properties / ri_1yr_upfront / descriptionAdded value: +"ri 1yr upfront used by this deterministic tool." - added
Input schema / properties / ri_1yr_upfront / examplesAdded value: +[ + 1 +] - added
Input schema / properties / ri_3yr_monthly / descriptionAdded value: +"ri 3yr monthly used by this deterministic tool." - added
Input schema / properties / ri_3yr_monthly / examplesAdded value: +[ + 1 +] - added
Input schema / properties / ri_3yr_upfront / descriptionAdded value: +"ri 3yr upfront used by this deterministic tool." - added
Input schema / properties / ri_3yr_upfront / examplesAdded value: +[ + 1 +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "breakeven_months", - "interpretation", - "net_savings_1yr_usd", - "net_savings_3yr_usd", - "next_step", - "next_step_url", - "recommended_term", - "severity", - "why_follow_up" -]New value: +[ + "breakeven_months", + "computation_basis", + "interpretation", + "net_savings_1yr_usd", + "net_savings_3yr_usd", + "next_step", + "next_step_url", + "recommended_term", + "severity", + "why_follow_up" +]
- Changed
rightsizing-calculator12 fields changed- added
Input schema / properties / current_memory_gb / descriptionAdded value: +"current memory in gigabytes." - added
Input schema / properties / current_memory_gb / examplesAdded value: +[ + 1 +] - added
Input schema / properties / current_vcpu / descriptionAdded value: +"current vcpu used by this deterministic tool." - added
Input schema / properties / current_vcpu / examplesAdded value: +[ + 1 +] - added
Input schema / properties / hourly_cost / descriptionAdded value: +"hourly cost used by the calculation; monetary values are in USD unless stated otherwise." - added
Input schema / properties / hourly_cost / examplesAdded value: +[ + 1 +] - added
Input schema / properties / instance_count / descriptionAdded value: +"instance count used by this deterministic tool." - added
Input schema / properties / instance_count / examplesAdded value: +[ + 1 +] - added
Input schema / properties / p99_cpu_pct / descriptionAdded value: +"p99 cpu expressed as a percentage." - added
Input schema / properties / p99_cpu_pct / examplesAdded value: +[ + 1 +] - added
Input schema / properties / p99_memory_pct / descriptionAdded value: +"p99 memory expressed as a percentage." - added
Input schema / properties / p99_memory_pct / examplesAdded value: +[ + 1 +]
- Changed
slo-burn-rate-calculator11 fields changed- added
Input schema / properties / errors / descriptionAdded value: +"Number of failed requests observed in the measurement window." - added
Input schema / properties / errors / examplesAdded value: +[ + 1 +] - added
Input schema / properties / slo / descriptionAdded value: +"Service-level objective target expressed as a percentage." - added
Input schema / properties / slo / examplesAdded value: +[ + 1 +] - added
Input schema / properties / total / descriptionAdded value: +"Total number of requests observed in the measurement window." - added
Input schema / properties / total / examplesAdded value: +[ + 1 +] - added
Input schema / properties / window_hoursAdded value: +{ + "description": "Length of the observed measurement window in hours.", + "examples": [ + 1 + ], + "minimum": 1, + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "errors", - "total", - "slo" -]New value: +[ + "errors", + "total", + "slo", + "window_hours" +] - added
Output schema / properties / computation_basisAdded value: +{ + "type": "string" +} - added
Output schema / properties / window_hoursAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "budget_consumed_pct_per_hour", - "burn_rate", - "error_rate_pct", - "interpretation", - "next_step", - "next_step_url", - "status", - "why_follow_up" -]New value: +[ + "budget_consumed_pct_per_hour", + "burn_rate", + "computation_basis", + "error_rate_pct", + "interpretation", + "next_step", + "next_step_url", + "status", + "why_follow_up", + "window_hours" +]
- Changed
software-purchase-risk-calculator16 fields changed- added
Input schema / properties / changeManagementRisk / descriptionAdded value: +"changeManagementRisk used by this deterministic tool." - added
Input schema / properties / changeManagementRisk / examplesAdded value: +[ + 1 +] - added
Input schema / properties / contractLengthMonths / descriptionAdded value: +"contractLengthMonths used by this deterministic tool." - added
Input schema / properties / contractLengthMonths / examplesAdded value: +[ + 1 +] - added
Input schema / properties / integrationCount / descriptionAdded value: +"integrationCount used by this deterministic tool." - added
Input schema / properties / integrationCount / examplesAdded value: +[ + 1 +] - added
Input schema / properties / internalHourlyCost / descriptionAdded value: +"internalHourlyCost used by this deterministic tool." - added
Input schema / properties / internalHourlyCost / examplesAdded value: +[ + 1 +] - added
Input schema / properties / monthlySubscription / descriptionAdded value: +"monthlySubscription used by this deterministic tool." - added
Input schema / properties / monthlySubscription / examplesAdded value: +[ + 1 +] - added
Input schema / properties / numUsers / descriptionAdded value: +"numUsers used by this deterministic tool." - added
Input schema / properties / numUsers / examplesAdded value: +[ + 1 +] - added
Input schema / properties / setupHours / descriptionAdded value: +"setupHours used by this deterministic tool." - added
Input schema / properties / setupHours / examplesAdded value: +[ + 1 +] - added
Input schema / properties / vendorStabilityScore / descriptionAdded value: +"vendorStabilityScore used by this deterministic tool." - added
Input schema / properties / vendorStabilityScore / examplesAdded value: +[ + 1 +]
- Changed
terraform-plan-cost-estimator6 fields changed- added
Input schema / properties / count / descriptionAdded value: +"count used by this deterministic tool." - added
Input schema / properties / count / examplesAdded value: +[ + 1 +] - added
Input schema / properties / instance_size / descriptionAdded value: +"instance size used by this deterministic tool." - added
Input schema / properties / instance_size / examplesAdded value: +[ + "example" +] - added
Input schema / properties / resource_type / descriptionAdded value: +"resource type used by this deterministic tool." - added
Input schema / properties / resource_type / examplesAdded value: +[ + "example" +]
- Changed
total-cost-of-ownership-calculator16 fields changed- added
Input schema / properties / adminHoursPerMonth / descriptionAdded value: +"adminHoursPerMonth used by this deterministic tool." - added
Input schema / properties / adminHoursPerMonth / examplesAdded value: +[ + 1 +] - added
Input schema / properties / baseMonthlySubscription / descriptionAdded value: +"baseMonthlySubscription used by this deterministic tool." - added
Input schema / properties / baseMonthlySubscription / examplesAdded value: +[ + 1 +] - added
Input schema / properties / contractLength / descriptionAdded value: +"contractLength used by this deterministic tool." - added
Input schema / properties / contractLength / examplesAdded value: +[ + 1 +] - added
Input schema / properties / expectedActiveUsers / descriptionAdded value: +"expectedActiveUsers used by this deterministic tool." - added
Input schema / properties / expectedActiveUsers / examplesAdded value: +[ + 1 +] - added
Input schema / properties / internalHourlyCost105 / descriptionAdded value: +"internalHourlyCost105 used by this deterministic tool." - added
Input schema / properties / internalHourlyCost105 / examplesAdded value: +[ + 1 +] - added
Input schema / properties / numPaidSeats / descriptionAdded value: +"numPaidSeats used by this deterministic tool." - added
Input schema / properties / numPaidSeats / examplesAdded value: +[ + 1 +] - added
Input schema / properties / oneTimeFees / descriptionAdded value: +"oneTimeFees used by this deterministic tool." - added
Input schema / properties / oneTimeFees / examplesAdded value: +[ + 1 +] - added
Input schema / properties / perUserMonthlyFee / descriptionAdded value: +"perUserMonthlyFee used by this deterministic tool." - added
Input schema / properties / perUserMonthlyFee / examplesAdded value: +[ + 1 +]
31 tool updates
- Changed
alert-fatigue-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "annual_wasted_hours": { + "type": "number" + }, + "burden_per_engineer_hours": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "fatigue_index": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "noise_alerts_per_week": { + "type": "number" + }, + "noise_rate_pct": { + "type": "number" + }, + "output_tier": { + "type": "string" + }, + "remaining_pct": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "wasted_hours_per_week": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "annual_wasted_hours", + "burden_per_engineer_hours", + "computation_basis", + "fatigue_index", + "interpretation", + "next_step", + "next_step_url", + "noise_alerts_per_week", + "noise_rate_pct", + "output_tier", + "remaining_pct", + "signal_value", + "wasted_hours_per_week", + "why_follow_up" + ], + "type": "object" +}
- Changed
apdex-score-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "apdex_score": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "rating": { + "type": "string" + }, + "satisfied_pct": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "apdex_score", + "interpretation", + "next_step", + "next_step_url", + "rating", + "satisfied_pct", + "why_follow_up" + ], + "type": "object" +}
- Changed
availability-sla-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "annual_downtime_minutes": { + "type": "number" + }, + "availability_tier": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "monthly_downtime_minutes": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "weekly_downtime_minutes": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "annual_downtime_minutes", + "availability_tier", + "interpretation", + "monthly_downtime_minutes", + "next_step", + "next_step_url", + "weekly_downtime_minutes", + "why_follow_up" + ], + "type": "object" +}
- Changed
canonical-url-auditor1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "canonical_found": { + "type": "string" + }, + "computation_basis": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "issue": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "page_url": { + "type": "string" + }, + "recommendation": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "canonical_found", + "computation_basis", + "interpretation", + "issue", + "next_step", + "next_step_url", + "page_url", + "recommendation", + "severity", + "why_follow_up" + ], + "type": "object" +}
- Changed
certificate-expiry-checker1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "computation_basis": { + "type": "string" + }, + "days_remaining": { + "type": "number" + }, + "domain": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "risk_level": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "computation_basis", + "days_remaining", + "domain", + "interpretation", + "next_step", + "next_step_url", + "risk_level", + "why_follow_up" + ], + "type": "object" +}
- Changed
change-failure-rate-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "change_failure_rate_pct": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "dora_rating": { + "type": "string" + }, + "failed_count": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "remaining_pct": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "total_count": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "change_failure_rate_pct", + "computation_basis", + "dora_rating", + "failed_count", + "interpretation", + "next_step", + "next_step_url", + "output_tier", + "remaining_pct", + "signal_value", + "total_count", + "why_follow_up" + ], + "type": "object" +}
- Changed
cloud-waste-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "annualized": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "do_savings": { + "type": "number" + }, + "idle_waste": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "oversized_waste": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "unattached_cost": { + "type": "number" + }, + "waste_pct": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "annualized", + "computation_basis", + "do_savings", + "idle_waste", + "interpretation", + "monthly_cost", + "next_step", + "next_step_url", + "output_tier", + "oversized_waste", + "signal_value", + "unattached_cost", + "waste_pct", + "why_follow_up" + ], + "type": "object" +}
- Changed
cluster-capacity-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "allocatable_cpu_cores": { + "type": "number" + }, + "allocatable_memory_gb": { + "type": "number" + }, + "cpu_utilization_pct": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "memory_utilization_pct": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "pressure_level": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "allocatable_cpu_cores", + "allocatable_memory_gb", + "cpu_utilization_pct", + "interpretation", + "memory_utilization_pct", + "next_step", + "next_step_url", + "pressure_level", + "severity", + "why_follow_up" + ], + "type": "object" +}
- Changed
connection-pool-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "interpretation": { + "type": "string" + }, + "max_connections_utilization_pct": {}, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "per_app_instance": { + "type": "number" + }, + "recommended_pool_total": { + "type": "number" + }, + "warning": { + "type": "boolean" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "interpretation", + "next_step", + "next_step_url", + "per_app_instance", + "recommended_pool_total", + "warning", + "why_follow_up" + ], + "type": "object" +}
- Changed
deployment-frequency-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "computation_basis": { + "type": "string" + }, + "deploys_per_day": { + "type": "number" + }, + "deploys_per_dev_per_day": { + "type": "number" + }, + "deploys_per_week": { + "type": "number" + }, + "dora_rating": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "remaining_pct": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "computation_basis", + "deploys_per_day", + "deploys_per_dev_per_day", + "deploys_per_week", + "dora_rating", + "interpretation", + "next_step", + "next_step_url", + "output_tier", + "remaining_pct", + "signal_value", + "why_follow_up" + ], + "type": "object" +}
- Changed
detect-secrets-scanner1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "computation_basis": { + "type": "string" + }, + "finding_count": { + "type": "number" + }, + "findings": { + "items": { + "additionalProperties": false, + "properties": { + "line": { + "type": "number" + }, + "redacted": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "line", + "redacted", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "types_found": { + "items": { + "type": "string" + }, + "type": "array" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "computation_basis", + "finding_count", + "findings", + "interpretation", + "next_step", + "next_step_url", + "severity", + "types_found", + "why_follow_up" + ], + "type": "object" +}
- Changed
dockerfile-linter1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "computation_basis": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "issue_count": { + "type": "number" + }, + "issues": { + "items": { + "additionalProperties": false, + "properties": { + "issue": { + "type": "string" + }, + "line": { + "type": "number" + }, + "suggestion": { + "type": "string" + } + }, + "required": [ + "issue", + "line", + "suggestion" + ], + "type": "object" + }, + "type": "array" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "computation_basis", + "interpretation", + "issue_count", + "issues", + "next_step", + "next_step_url", + "severity", + "why_follow_up" + ], + "type": "object" +}
- Changed
dora-metrics-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "change_failure_rate_tier": { + "type": "string" + }, + "deploy_frequency_tier": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "lead_time_tier": { + "type": "string" + }, + "mttr_tier": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "overall_tier": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "change_failure_rate_tier", + "deploy_frequency_tier", + "interpretation", + "lead_time_tier", + "mttr_tier", + "next_step", + "next_step_url", + "overall_tier", + "why_follow_up" + ], + "type": "object" +}
- Changed
ec2-cost-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "annual_cost": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "do_equivalent_monthly": { + "type": "number" + }, + "do_savings": { + "type": "number" + }, + "hourly_rate": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "signal_value": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "annual_cost", + "computation_basis", + "do_equivalent_monthly", + "do_savings", + "hourly_rate", + "interpretation", + "monthly_cost", + "next_step", + "next_step_url", + "output_tier", + "signal_value", + "why_follow_up" + ], + "type": "object" +}
- Changed
egress-cost-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "cost_risk": { + "type": "string" + }, + "effective_rate_per_gb": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost_usd": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "transfer_gb": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "cost_risk", + "effective_rate_per_gb", + "interpretation", + "monthly_cost_usd", + "next_step", + "next_step_url", + "transfer_gb", + "why_follow_up" + ], + "type": "object" +}
- Changed
error-budget-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "budget_minutes": { + "type": "number" + }, + "burn_rate": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "remaining_minutes": { + "type": "number" + }, + "status": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "budget_minutes", + "burn_rate", + "interpretation", + "next_step", + "next_step_url", + "remaining_minutes", + "status", + "why_follow_up" + ], + "type": "object" +}
- Changed
incident-cost-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "engineering_cost_usd": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "revenue_impact_usd": { + "type": "number" + }, + "severity": { + "type": "string" + }, + "total_cost_usd": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "engineering_cost_usd", + "interpretation", + "next_step", + "next_step_url", + "revenue_impact_usd", + "severity", + "total_cost_usd", + "why_follow_up" + ], + "type": "object" +}
- Changed
known-vulnerability-checker1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "checked_against": { + "type": "string" + }, + "computation_basis": { + "type": "string" + }, + "cve": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "package_name": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "status": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "checked_against", + "computation_basis", + "cve", + "interpretation", + "next_step", + "next_step_url", + "package_name", + "severity", + "status", + "why_follow_up" + ], + "type": "object" +}
- Changed
kubernetes-manifest-linter1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "computation_basis": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "issue_count": { + "type": "number" + }, + "issues": { + "items": { + "additionalProperties": false, + "properties": { + "issue": { + "type": "string" + }, + "recommendation": { + "type": "string" + }, + "severity": { + "type": "string" + } + }, + "required": [ + "issue", + "recommendation", + "severity" + ], + "type": "object" + }, + "type": "array" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "computation_basis", + "interpretation", + "issue_count", + "issues", + "next_step", + "next_step_url", + "severity", + "why_follow_up" + ], + "type": "object" +}
- Changed
mttr-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "computation_basis": { + "type": "string" + }, + "dora_rating": { + "type": "string" + }, + "incident_count": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "mean_total_minutes": { + "type": "number" + }, + "mttd_minutes": { + "type": "number" + }, + "mttr_minutes": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "remaining_pct": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "computation_basis", + "dora_rating", + "incident_count", + "interpretation", + "mean_total_minutes", + "mttd_minutes", + "mttr_minutes", + "next_step", + "next_step_url", + "output_tier", + "remaining_pct", + "signal_value", + "why_follow_up" + ], + "type": "object" +}
- Changed
on-call-burden-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "annual_cost": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "hours_per_engineer": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "pct_working_time": { + "type": "number" + }, + "remaining_pct": { + "type": "number" + }, + "shifts_per_engineer": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "total_hours_per_month": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "annual_cost", + "computation_basis", + "hours_per_engineer", + "interpretation", + "monthly_cost", + "next_step", + "next_step_url", + "output_tier", + "pct_working_time", + "remaining_pct", + "shifts_per_engineer", + "signal_value", + "total_hours_per_month", + "why_follow_up" + ], + "type": "object" +}
- Changed
pipeline-cost-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "billable_minutes": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost_usd": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "runner_multiplier": { + "type": "number" + }, + "severity": { + "type": "string" + }, + "total_minutes_per_month": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "billable_minutes", + "interpretation", + "monthly_cost_usd", + "next_step", + "next_step_url", + "runner_multiplier", + "severity", + "total_minutes_per_month", + "why_follow_up" + ], + "type": "object" +}
- Changed
precision-recall-f1-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "f1_score": { + "type": "number" + }, + "f_beta_score": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "precision_recall_balance": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "f1_score", + "f_beta_score", + "interpretation", + "next_step", + "next_step_url", + "precision_recall_balance", + "why_follow_up" + ], + "type": "object" +}
- Changed
query-cost-estimator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "computation_basis": { + "type": "string" + }, + "cost_level": { + "type": "string" + }, + "cost_score": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "warning_count": { + "type": "number" + }, + "warnings": { + "items": { + "type": "string" + }, + "type": "array" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "computation_basis", + "cost_level", + "cost_score", + "interpretation", + "next_step", + "next_step_url", + "warning_count", + "warnings", + "why_follow_up" + ], + "type": "object" +}
- Changed
rate-limit-utilization-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "buffer": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "safe": { + "type": "boolean" + }, + "status": { + "type": "string" + }, + "utilization_pct": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + }, + "window_seconds": { + "type": "number" + } + }, + "required": [ + "buffer", + "computation_basis", + "interpretation", + "next_step", + "next_step_url", + "safe", + "status", + "utilization_pct", + "why_follow_up", + "window_seconds" + ], + "type": "object" +}
- Changed
reserved-instance-breakeven1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "breakeven_months": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "net_savings_1yr_usd": { + "type": "number" + }, + "net_savings_3yr_usd": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "recommended_term": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "breakeven_months", + "interpretation", + "net_savings_1yr_usd", + "net_savings_3yr_usd", + "next_step", + "next_step_url", + "recommended_term", + "severity", + "why_follow_up" + ], + "type": "object" +}
- Changed
rightsizing-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "annual_savings": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "do_savings": { + "type": "number" + }, + "instance_count": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost": { + "type": "number" + }, + "needed_memory_gb": { + "type": "number" + }, + "needed_vcpu": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "savings_factor": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "annual_savings", + "computation_basis", + "do_savings", + "instance_count", + "interpretation", + "monthly_cost", + "needed_memory_gb", + "needed_vcpu", + "next_step", + "next_step_url", + "output_tier", + "savings_factor", + "signal_value", + "why_follow_up" + ], + "type": "object" +}
- Changed
slo-burn-rate-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "budget_consumed_pct_per_hour": { + "type": "number" + }, + "burn_rate": { + "type": "number" + }, + "error_rate_pct": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "status": { + "type": "string" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "budget_consumed_pct_per_hour", + "burn_rate", + "error_rate_pct", + "interpretation", + "next_step", + "next_step_url", + "status", + "why_follow_up" + ], + "type": "object" +}
- Changed
software-purchase-risk-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "adoption_component": { + "type": "number" + }, + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "complexity_component": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "contract_months": { + "type": "number" + }, + "contract_total": { + "type": "number" + }, + "integration_component": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "risk_score": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "vendor_component": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + }, + "year1_labor_cost": { + "type": "number" + }, + "year1_sub_cost": { + "type": "number" + }, + "year1_total_cost": { + "type": "number" + } + }, + "required": [ + "adoption_component", + "complexity_component", + "computation_basis", + "contract_months", + "contract_total", + "integration_component", + "interpretation", + "monthly_cost", + "next_step", + "next_step_url", + "output_tier", + "risk_score", + "signal_value", + "vendor_component", + "why_follow_up", + "year1_labor_cost", + "year1_sub_cost", + "year1_total_cost" + ], + "type": "object" +}
- Changed
terraform-plan-cost-estimator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "annual_cost": { + "type": "number" + }, + "computation_basis": { + "type": "string" + }, + "hourly_rate": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "resource_count": { + "type": "number" + }, + "resource_type": { + "type": "string" + }, + "signal_value": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + } + }, + "required": [ + "annual_cost", + "computation_basis", + "hourly_rate", + "interpretation", + "monthly_cost", + "next_step", + "next_step_url", + "output_tier", + "resource_count", + "resource_type", + "signal_value", + "why_follow_up" + ], + "type": "object" +}
- Changed
total-cost-of-ownership-calculator1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "affiliate_context": { + "additionalProperties": false, + "properties": { + "affiliate": { + "type": "string" + }, + "cta_label": { + "type": "string" + }, + "disclosure": { + "type": "string" + }, + "framing": { + "type": "string" + }, + "posture": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "slot_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "variant": { + "type": "string" + } + }, + "required": [ + "affiliate", + "cta_label", + "disclosure", + "framing", + "posture", + "slot_id", + "url", + "variant" + ], + "type": "object" + }, + "computation_basis": { + "type": "string" + }, + "contract_months": { + "type": "number" + }, + "contract_total": { + "type": "number" + }, + "cost_per_user_monthly": { + "type": "number" + }, + "do_savings": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "monthly_cost": { + "type": "number" + }, + "next_step": { + "type": "string" + }, + "next_step_url": { + "type": "string" + }, + "output_tier": { + "type": "string" + }, + "overpaying_flags": { + "type": "number" + }, + "seat_waste_cost_yr": { + "type": "number" + }, + "seat_waste_pct": { + "type": "number" + }, + "shelfware_seats": { + "type": "number" + }, + "signal_value": { + "type": "number" + }, + "why_follow_up": { + "type": "string" + }, + "year1_admin_cost": { + "type": "number" + }, + "year1_total_cost": { + "type": "number" + }, + "year1_vendor_cost": { + "type": "number" + } + }, + "required": [ + "computation_basis", + "contract_months", + "contract_total", + "cost_per_user_monthly", + "do_savings", + "interpretation", + "monthly_cost", + "next_step", + "next_step_url", + "output_tier", + "overpaying_flags", + "seat_waste_cost_yr", + "seat_waste_pct", + "shelfware_seats", + "signal_value", + "why_follow_up", + "year1_admin_cost", + "year1_total_cost", + "year1_vendor_cost" + ], + "type": "object" +}
31 tool updates
- Changed
alert-fatigue-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
apdex-score-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
availability-sla-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
canonical-url-auditor1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
certificate-expiry-checker1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
change-failure-rate-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
cloud-waste-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
cluster-capacity-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
connection-pool-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
deployment-frequency-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
detect-secrets-scanner1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
dockerfile-linter1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
dora-metrics-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
ec2-cost-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
egress-cost-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
error-budget-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
incident-cost-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
known-vulnerability-checker1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
kubernetes-manifest-linter1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
mttr-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
on-call-burden-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
pipeline-cost-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
precision-recall-f1-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
query-cost-estimator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
rate-limit-utilization-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
reserved-instance-breakeven1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
rightsizing-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
slo-burn-rate-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
software-purchase-risk-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
terraform-plan-cost-estimator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
total-cost-of-ownership-calculator1 field changed- added
Input schema / additionalPropertiesAdded value: +false
31 tool updates
- First observed
alert-fatigue-calculator - First observed
apdex-score-calculator - First observed
availability-sla-calculator - First observed
canonical-url-auditor - First observed
certificate-expiry-checker - First observed
change-failure-rate-calculator - First observed
cloud-waste-calculator - First observed
cluster-capacity-calculator - First observed
connection-pool-calculator - First observed
deployment-frequency-calculator - First observed
detect-secrets-scanner - First observed
dockerfile-linter - First observed
dora-metrics-calculator - First observed
ec2-cost-calculator - First observed
egress-cost-calculator - First observed
error-budget-calculator - First observed
incident-cost-calculator - First observed
known-vulnerability-checker - First observed
kubernetes-manifest-linter - First observed
mttr-calculator - First observed
on-call-burden-calculator - First observed
pipeline-cost-calculator - First observed
precision-recall-f1-calculator - First observed
query-cost-estimator - First observed
rate-limit-utilization-calculator - First observed
reserved-instance-breakeven - First observed
rightsizing-calculator - First observed
slo-burn-rate-calculator - First observed
software-purchase-risk-calculator - First observed
terraform-plan-cost-estimator - First observed
total-cost-of-ownership-calculator
Related MCP Connectors
AWS pricing and cost estimates with no signup, plus read-only idle-resource scans of your account.
Free MCP tools: the only MCP linter, health checks, cost estimation, and trust evaluation.
- ZopDev MCPOAuthdev.zop
Cloud cost, inventory and governance on AWS/Azure/GCP. Read-only by default, optional scoped writes
116 marketing, RevOps and SaaS calculators with benchmarks, guided reviews, content search, booking.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables engineers to estimate LLM costs, check GPU VRAM fit, audit MCP configs for security risks, and analyze network device config changes and compliance—all locally, with no account or telemetry.7MIT
- AlicenseAqualityAmaintenanceSearch and compare free tiers, credits, and pricing changes across 1,500+ developer tools. 8 MCP tools for infrastructure decisions, cost estimation, and vendor comparison.46 npm24MIT
- AlicenseBqualityDmaintenanceProvides a comprehensive suite of 76 tools for AWS cloud resource optimization, cost management, and infrastructure monitoring. It enables users to identify unused resources, analyze cost trends, right-size capacity, and maintain security compliance through natural language.76MIT
- AlicenseAqualityBmaintenanceEnables analyzing AWS cloud costs from billing data, identifying waste, and providing mergeable fixes, with findings reconciled to actual invoices and priced at your negotiated rates.628 PyPIMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.