Skip to main content
Glama

Rahul D Sarker: Marketing & RevOps Tools

Server Details

116 marketing, RevOps and SaaS calculators with benchmarks, guided reviews, content search, booking.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.7% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3/5.0

Scored across 124 tools

Disambiguation2/5

With 124 tools there is heavy conceptual overlap: ltv_cac_calculator, ltv_to_cac_ratio_health_grader, cac_payback_period_matrix and ltv_growth_multiplier_simulator all circle the same LTV/CAC territory, several ROAS variants coexist (roas_calculator, roas_to_mer_converter, rto_adjusted_roas_calculator), and google_search_impression_share_value_estimator and impression_share_opportunity_matrix are effectively duplicates of the same calculator. The meta-tools run_calculator and find_calculator also blur against directly invoking the ~110 named calculators, so an agent will frequently misselect despite detailed descriptions.

Naming Consistency4/5

Every tool uses a consistent snake_case convention with a domain descriptor plus a functional suffix (calculator, grader, modeler, forecaster, estimator, planner). The suffixes vary a lot, but the underlying naming style is predictable and readable throughout, with only the generic meta-tools (run_calculator, benchmark_metric, check_availability) deviating slightly.

Tool Count1/5

124 tools is an extreme surface for a calculator/consulting server, far beyond any reasonable scoping. Even accounting for the find_calculator discovery tool that is meant to index the catalogue, the raw count guarantees selection noise and makes the set unwieldy.

Completeness4/5

The domain is marketing/RevOps calculators, and coverage is extremely broad: acquisition, retention, pricing, valuation, hiring, RevOps maturity, plus supporting content search/read and consultation booking. The main gap is the absence of any stateful operations (saving, comparing, or updating prior results), but for a stateless calculator suite the surface is essentially complete.

Available Tools

124 tools
above_the_fold_messaging_clarity_graderAbove-the-Fold Messaging Clarity GraderB
Read-onlyIdempotent
Inspect

Score a hero section's five-second clarity across five weighted checks (what you do, outcome, CTA, jargon, subhead) into a 0-100 clarity verdict. See the full version at https://rahuldsarker.co/calculators/above-the-fold-messaging-clarity-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
noJargonYesNo jargon or vague buzzwords (weight 15)
oneObviousPrimaryCtaYesOne obvious primary CTA above the fold (weight 20)
headlineStatesOutcomeYesThe headline states an outcome/benefit (weight 20)
subheadSupportsHeadlineYesSubhead supports (not repeats) the headline (weight 15)
strangerUnderstandsIn5SecondsYesA stranger knows what you do in 5 seconds (weight 30)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds the scoring model (five weighted checks summed to a 0-100 verdict), which is useful context, but adds nothing about limitations, required input quality, or how partial answers are treated.

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

Conciseness4/5

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

Two sentences, front-loaded with the purpose and check breakdown. The trailing promotional URL is the only element that does not earn its place for an invoking agent.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and the description covers all five scored dimensions. The only gap is the optional currency parameter and the absence of any routing guidance among similar tools.

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

Parameters3/5

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

Schema description coverage is 100% and the five required enums carry their own weights, so the schema does the heavy lifting. The description's list of checks roughly mirrors the parameters but adds no extra semantics (e.g., weighting rationale or handling of "partial"), so the baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb and resource ("Score a hero section's five-second clarity") and enumerates the five weighted checks, so the agent knows exactly what it produces (a 0-100 verdict). It is clear on its own, but never distinguishes itself from close siblings like value_prop_strength_grader or landing_page_vs_ad_match_quality_auditor, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives. With many overlapping copy/landing-page graders in the sibling list, an agent gets no signal about which one applies to a given request.

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

ab_test_significance_calculatorA/B Test Significance CalculatorA
Read-onlyIdempotent
Inspect

Run a two-proportion z-test on an A/B test to get relative uplift and statistical confidence. See the full version at https://rahuldsarker.co/calculators/ab-test-significance-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
visitorsAYesVisitors in variant A (control)
visitorsBYesVisitors in variant B (test)
conversionsAYesConversions in variant A (control)
conversionsBYesConversions in variant B (test)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare a pure read-only, idempotent, non-destructive, closed-world computation, so the safety profile is fully covered. The description adds the exact statistical method (two-proportion z-test), which is genuinely useful behavioral context, but says nothing about edge cases such as zero visitors or low sample sizes.

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

Conciseness4/5

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

Front-loaded with the core purpose in one tight sentence; the follow-on link is short but is promotional rather than agent-relevant, so it does not fully earn its place.

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

Completeness4/5

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

For a stateless calculator with complete annotations, a 100%-covered schema, and an output schema that covers return values, the description is sufficient. Only minor behavioral caveats (input validity or sample-size assumptions) are absent.

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

Parameters3/5

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

Schema description coverage is 100% with clear per-parameter descriptions, so the schema carries the parameter burden. The description adds no extra meaning about the required counts or the optional currency field, making the baseline 3 correct.

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

Purpose5/5

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

States a specific verb (Run) and resource (two-proportion z-test on an A/B test) and names the outputs (relative uplift, statistical confidence), so the agent knows exactly what computation this performs. No sibling tool duplicates an A/B significance test, so it is unambiguous.

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

Usage Guidelines3/5

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

The usage scenario is implied: this applies when you have A/B visitors/conversions and want significance. However, the description gives no explicit when-to-use, when-not-to-use, or alternative referral guidance.

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

acv_weight_plannerACV Weight PlannerB
Read-onlyIdempotent
Inspect

Break ARR down by SMB versus enterprise segments to see revenue concentration and per-customer averages. See the full version at https://rahuldsarker.co/calculators/acv-weight-planner

ParametersJSON Schema
NameRequiredDescriptionDefault
entAcvYesAverage annual contract value (ACV) for enterprise customers
smbAcvYesAverage annual contract value (ACV) for SMB customers
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
entCountYesNumber of enterprise customers
smbCountYesNumber of SMB customers

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 return format, no bounds on inputs, no rounding or currency behavior), which is acceptable for a pure calculator but not additive.

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

Conciseness3/5

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

The first sentence is well front-loaded and efficient, but the second sentence is a promotional link to an external page that gives an agent no usable information, so half the description does not earn its place.

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

Completeness4/5

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

An output schema exists and annotations cover the safety profile, so return values and side effects need not be explained. For a low-complexity read-only calculator with a fully described 5-parameter schema, the only real omission is any usage routing against the many sibling calculators.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including the optional currency pattern is already documented in the schema. The phrase 'SMB versus enterprise segments' loosely maps to the two segment pairs, but adds no syntax, units, or defaulting detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource: 'Break ARR down by SMB versus enterprise segments' and clarifies the output intent (revenue concentration, per-customer averages). This is clear enough to separate it from generic ARR tools like mrr_to_arr_calculator or arr_multiple_calculator, but it never names a sibling to route against.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of when a different ARR/segment calculator would be the better pick. The description only says what the tool computes, leaving selection entirely to inference.

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

ad_creative_fatigue_forecasterAd Creative Fatigue ForecasterB
Read-onlyIdempotent
Inspect

Forecast how many days until an ad audience hits its fatigue frequency ceiling, and the date to have fresh creative ready. See the full version at https://rahuldsarker.co/calculators/ad-creative-fatigue-forecaster

ParametersJSON Schema
NameRequiredDescriptionDefault
freqCapYesFatigue frequency ceiling (average frequency where CPMs/CPA start rising)
audienceYesAudience / reach size (unique people the ad set can reach)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
dailyImpressionsYesDaily impressions delivered

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 and the description rightly does not repeat it. It adds the output content (days-to-fatigue and a creative-ready date), which is modest added value, but says nothing about assumptions, precision, or edge cases for a pure computation.

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

Conciseness3/5

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

The first sentence is well front-loaded and efficient, but the trailing promotional URL ('See the full version at ...') is pure waste for an agent selecting a tool and dilutes the definition.

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

Completeness4/5

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

With an output schema present and 100% schema coverage on all four parameters, the description needn't explain returns or inputs, and annotations cover the safety profile. The one real omission is sibling differentiation, which overlaps with usage guidelines rather than leaving the call itself under-specified.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter (audience, dailyImpressions, freqCap, currency) is already documented in the schema, including the ISO 4217 pattern and the omit-to-show-plain-numbers behavior. The description adds no parameter meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: forecast days until an audience hits its fatigue frequency ceiling, plus the fresh-creative-ready date. Clear on its own, but it never distinguishes itself from close siblings like ad_frequency_risk_checker or creative_testing_duration_forecaster, so an agent cannot route between them from the text alone.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of the alternative calculators that overlap heavily (ad_frequency_risk_checker, channel_saturation_estimator). The agent must infer the trigger scenario entirely from the name.

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

ad_frequency_risk_checkerAd Frequency Risk CheckerB
Read-onlyIdempotent
Inspect

Calculate average ad frequency from impressions and reach, and flag whether it is healthy, caution, or fatigue territory. See the full version at https://rahuldsarker.co/calculators/ad-frequency-risk-checker

ParametersJSON Schema
NameRequiredDescriptionDefault
reachYesReach (unique users) in the period
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
impressionsYesImpressions delivered in the period

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 fully covered by structured data. The description adds the useful fact that the result is bucketed into three qualitative risk tiers, but omits anything about threshold boundaries or cost (e.g. currency handling) beyond annotations.

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

Conciseness3/5

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

The first sentence is front-loaded and efficient, but the second sentence is a promotional link to an external site rather than task-relevant information. It is short overall, yet one of two sentences does not earn its place for an agent trying to invoke the tool.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the description covers what is computed and the categories produced. Two required params and one optional are all schema-documented, so the definition is nearly complete for a stateless calculator; only the absence of threshold context is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so impressions, reach, and currency are each documented in the schema; the description only names two of the three inputs. With the schema doing the heavy lifting, the baseline of 3 is appropriate and the description adds no extra syntax or unit meaning.

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

Purpose4/5

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

The description states a specific verb and resource ('Calculate average ad frequency from impressions and reach') plus the output judgement ('healthy, caution, or fatigue territory'), so the tool's function is unambiguous. It does not, however, differentiate itself from close siblings such as ad_creative_fatigue_forecaster or channel_saturation_estimator, leaving the agent to 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.

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no named alternative among the many ad-metrics siblings. The context of the calculation is implied by the name, but nothing tells an agent when this checker is the right choice over a fatigue forecaster or saturation estimator.

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

ad_spend_waste_calculatorAd Spend Waste CalculatorC
Read-onlyIdempotent
Inspect

Estimate how much monthly ad budget leaks to fraud and tracking/attribution waste. See the full version at https://rahuldsarker.co/calculators/ad-spend-waste-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
fraudPctYesEstimated share of spend lost to invalid/fraudulent traffic, as a percentage
leakagePctYesEstimated share of spend lost to tracking/attribution leakage, as a percentage
monthlySpendYesTotal monthly ad spend

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

C2.9/5.0
Behavior2/5

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 fully covered structurally. The description adds nothing beyond that – no note on assumptions behind the estimate, input validity ranges, or how the two leakage categories are combined – so it does not earn credit for extra behavioral context.

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

Conciseness3/5

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

The purpose sentence is short and front-loaded, which is good. The second sentence is a promotional link to the hosted calculator rather than something that helps an agent invoke the tool, so it only partially earns its place.

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

Completeness4/5

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

For a simple read-only calculator with an output schema and 100% parameter coverage, the description is sufficient: the agent knows what is computed and what inputs are required. Nothing critical is missing, though the absence of any usage context keeps it from being fully rounded.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (including the optional ISO 4217 currency code and the two percentage inputs) are already documented. The description adds no syntax, format, or range detail beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Estimate') and a specific resource (monthly ad budget that leaks to fraud and tracking/attribution waste), which is enough to distinguish it from siblings like roas_calculator or performance_marketing_margin_protector. It doesn't explicitly name those siblings, but the scope is clear.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no named alternative among the many adjacent ad-spend tools in the sibling list. The second sentence is purely a link to a web version, not usage instruction.

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

advertising_to_sales_ratio_calculatorAdvertising to Sales Ratio CalculatorB
Read-onlyIdempotent
Inspect

Calculate the advertising-to-sales (A/S) ratio from advertising spend and net sales, with an optional prior period for the trend and the incremental ratio. See the full version at https://rahuldsarker.co/calculators/advertising-to-sales-ratio-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
adSpendYesAdvertising spend for the latest period
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
netSalesYesNet sales for the same period (after returns, discounts and taxes)
priorAdSpendNoOptional: advertising spend for the prior period
priorNetSalesNoOptional: net sales for the prior period

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds that supplying a prior period yields a trend and an incremental ratio, which is useful behavioral detail, but nothing about error handling or result shape.

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

Conciseness4/5

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

Two sentences, purpose front-loaded, no filler. The trailing promotional URL does not help tool selection but is brief enough not to materially hurt the structure.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and the full parameter set is covered by the schema. For a stateless calculator the definition is essentially complete, missing only routing context against sibling calculators.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented, including the currency format and the net-sales definition. The description restates adSpend/netSales/prior period but adds no syntax or edge-case meaning beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (Calculate) and resource (advertising-to-sales ratio), plus the two required inputs and the optional prior-period extension. An agent knows exactly what this computes, though it never names a sibling (e.g. roas_calculator) to distinguish the many adjacent calculators.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no named alternative. With dozens of sibling ratio/ROI calculators, the description leaves the agent to infer that this is the right one for A/S ratio from the name alone.

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

ae_sdr_hand_off_friction_calculatorAE/SDR Hand-off Friction CalculatorA
Read-onlyIdempotent
Inspect

Quantify meetings and revenue lost when the SDR-to-AE hand-off is inconsistent, from scheduling, notes, CRM completeness, and SLA follow-up quality. See the full version at https://rahuldsarker.co/calculators/ae-sdr-hand-off-friction-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
avgDealValueYesAverage deal value
crmConsistencyYesCRM fields complete & accurate
slaConsistencyYesAE follows up within SLA
notesConsistencyYesContext notes / discovery captured
meetingToCloseRatePctYesMeeting → close rate, as a percentage
schedulingConsistencyYesMeeting booked & confirmed at hand-off
meetingsHandedOffPerMonthYesMeetings handed off from SDR to AE per month

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safe read-only calculation profile is covered. The description adds the enumeration of measured dimensions but no extra behavioral context such as assumptions behind the estimate, and an output schema already handles return values.

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

Conciseness4/5

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

Two sentences that front-load the core outcome, followed by a link to the full version. Efficient, though the promotional URL is a minor non-essential element rather than tool-selection information.

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

Completeness4/5

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

For a parameterized calculator with a full output schema and 100% param coverage, the description is sufficient: it conveys what is being computed and from which dimensions. The missing piece is when to select it among a large family of sibling calculators.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (including the four enums and the currency pattern) is documented in the schema itself. The description names the friction categories but adds no syntax, format, or enum-level meaning beyond what the schema 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.

Purpose5/5

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

States a specific verb (quantify) and resource (meetings and revenue lost from the SDR-to-AE hand-off) and enumerates the four friction dimensions it measures. This clearly distinguishes it from nearby siblings like lead_routing_delay_cost_calculator or mql_to_sales_disconnect_analyzer.

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

Usage Guidelines3/5

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

The description implies its use case (measuring SDR-to-AE hand-off friction) but never states when to pick this tool over the many alternative funnel/leak calculators, nor any prerequisites or exclusions. Usage is inferable from context but not explicitly guided.

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

annual_growth_goal_back_calculatorAnnual Growth Goal Back-CalculatorA
Read-onlyIdempotent
Inspect

Work backwards from an annual revenue goal, through ACV and close rates, to the traffic and leads needed per month to hit it. See the full version at https://rahuldsarker.co/calculators/annual-growth-goal-back-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
acvYesAverage contract value
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
revenueGoalYesAnnual revenue goal
visitorToLeadPctYesVisitor-to-lead conversion rate, as a percentage
leadToCustomerPctYesLead-to-customer close rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety and repeatability are covered. The description adds that the result is a monthly traffic/lead requirement, but says nothing about units, sign handling, or edge cases like zero conversion rates that would materially affect how an agent interprets inputs.

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

Conciseness4/5

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

The first sentence is front-loaded, dense, and carries the entire semantic payload with no waste. The second sentence is a low-value promotional link rather than necessary invocation guidance, which keeps this short of a 5.

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

Completeness4/5

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

With an output schema present, return values need not be described, and parameters are fully covered by the schema, leaving little for the description to carry. Behaviorally it is a deterministic, non-destructive calculation, so the only real gap is the absent usage framing relative to the many sibling calculators.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented in the schema, including the currency pattern and the percentage semantics. The description only restates ACV and close rates at a high level, adding no format or unit detail 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.

Purpose4/5

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

The description gives a specific verb and a precise computation chain: back-calculate from an annual revenue goal, through ACV and close rates, to monthly traffic and leads. It is clearly distinguishable from most siblings by its reverse-solving framing, though it never names or contrasts a close alternative such as mql_calculator or acv_weight_planner.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer it applies when a revenue target and funnel conversion rates are known, since the required inputs are enumerated in schema. There is no explicit when-to-use statement, no prerequisites, and no routing to or away from alternatives.

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

arr_multiple_calculatorARR Multiple CalculatorB
Read-onlyIdempotent
Inspect

Apply conservative, market, premium, and custom ARR multiples to see the valuation range they imply. See the full version at https://rahuldsarker.co/calculators/arr-multiple-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
arrYesCurrent annual recurring revenue (ARR)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
customMultipleNoYour own or a specific comp's multiple, optional
marketMultipleYesMarket/typical revenue multiple
premiumMultipleYesPremium revenue multiple
conservativeMultipleYesConservative revenue multiple

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is fully covered. The description adds that it computes a valuation range across four multiple types, but says nothing about the calculation method or edge cases; with annotations carrying the safety 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.

Conciseness3/5

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

The first sentence is well front-loaded and efficient. The second sentence is a promotional link to an external site that contributes nothing to correct invocation, so it does not fully earn its place.

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

Completeness4/5

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

With an output schema present and 100% parameter description coverage, the description need not explain return values or parameter formats. It adequately covers the tool's scope as a pure computation, though it could mention how the multiples combine into a range.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters (including the optional currency and customMultiple) are already documented in the schema. The description names the multiple types but adds no syntax, units, or format detail beyond the schema; baseline 3 applies.

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

Purpose4/5

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

States a specific verb ("apply") and resource (ARR multiples) and names the output (valuation range), so the core purpose is unambiguous. However, it never distinguishes itself from near-neighbors like saas_valuation_multiple_predictor or mrr_to_arr_calculator, so sibling routing relies on name inference.

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

Usage Guidelines2/5

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

No when-to-use guidance, prerequisites, or alternative tools are named. The only contextual cue is that customMultiple is optional, which the schema already conveys.

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

b2b_implementation_delay_cost_calculatorB2B Implementation Delay Cost CalculatorB
Read-onlyIdempotent
Inspect

Estimate revenue delayed each year by a slow onboarding gap between signature and go-live, and what halving it recovers. See the full version at https://rahuldsarker.co/calculators/b2b-implementation-delay-cost-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
acvYesAverage annual contract value
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
delayWeeksYesImplementation delay, in weeks, from signature to go-live
dealsPerYearYesNumber of deals per year

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that it models a 'halving' recovery scenario and links to an external full version, but reveals nothing about determinism, rate limits, or input constraints 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.

Conciseness4/5

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

Two compact sentences, front-loaded with the core computation before the recovery scenario and the external link. Nothing is wasted, though the trailing URL sentence is purely promotional.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and annotations cover the safety profile. It tells the agent what is estimated and what secondary figure is produced, which is sufficient for calling a four-parameter read-only calculator.

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

Parameters3/5

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

Schema description coverage is 100%, so acv, currency, delayWeeks, and dealsPerYear are already fully documented by the schema. The description maps conceptually onto those inputs (signature-to-go-live gap, annual deal volume) but adds no format, range, or example detail beyond the schema.

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

Purpose4/5

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

States a specific verb ('Estimate') and a precisely scoped resource ('revenue delayed each year by a slow onboarding gap between signature and go-live, and what halving it recovers'). It does not explicitly differentiate from adjacent siblings such as lead_routing_delay_cost_calculator, so it lands just below the top mark.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, no prerequisites, and no named alternatives. The domain is implied by the wording, but the agent gets no explicit routing signal versus the many other delay/cost calculators in the sibling list.

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

benchmark_metricBenchmark a marketing or SaaS metricA
Read-onlyIdempotent
Inspect

Say whether a number is good: returns the band (e.g. "Healthy", "Below target"), the target range and what it means, for LTV:CAC, CAC payback, churn, NRR, GRR, Rule of 40, Magic Number, burn multiple, quick ratio, gross margin, ROAS, conversion rate, marketing budget % of revenue and NPS. Rules of thumb, not guarantees.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesThe value to judge
metricYesWhich metric. Percent metrics take percentages (e.g. 3 for 3%); ratios take the multiple (e.g. 3.2)
segmentNoCustomer segment, for payback, churn and NRR (default smb)
grossMarginPctNoGross margin %, for ROAS: the verdict then uses break-even ROAS

TDQS

A3.5/5.0
Behavior4/5

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), so the bar is lower. The description adds genuinely useful context beyond them: it discloses the return shape (band, target range, meaning) and warns that outputs are heuristics rather than guarantees, which is exactly the kind of reliability caveat an agent needs.

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

Conciseness4/5

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

A single tightly packed sentence, front-loaded with the verdict action and structured as claim-then-scope-then-caveat. The long metric enumeration is necessary for scope but is the only thing making it bulky.

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

Completeness4/5

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

For a lookup tool with no output schema, the description adequately covers what is returned and the caveat on precision, and the schema covers parameters fully. The single real gap is the absence of any routing guidance relative to the many sibling benchmarking/calculation tools.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself carries the enum values plus unit conventions (percent metrics take percentages, ratios take the multiple) and the segment/grossMarginPct usage notes. The description adds no parameter detail beyond that list of metric names, so the baseline 3 applies.

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

Purpose4/5

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

States a specific action (judge whether a number is good) and the resource (a named set of 14 marketing/SaaS metrics), and it spells out what comes back: band, target range, and interpretation. The metric enumeration makes it distinguishable from the single-metric sibling calculators, though it never explicitly contrasts 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.

Usage Guidelines2/5

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

There is no when-to-use guidance and no routing against the many overlapping siblings (ltv_cac_calculator, ltv_to_cac_ratio_health_grader, saas_magic_number_calculator, roas_calculator, etc.). The only framing is the caveat 'Rules of thumb, not guarantees,' which sets expectations but does not tell an agent when to pick this tool over those.

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

bootstrapped_vs_venture_scaler_modelerBootstrapped vs Venture-Backed Scaler ModelerA
Read-onlyIdempotent
Inspect

Compare a founder's take-home from a bootstrapped exit against a venture-backed, diluted exit, and find the break-even exit value where raising starts to pay off. See the full version at https://rahuldsarker.co/calculators/bootstrapped-vs-venture-scaler-modeler

ParametersJSON Schema
NameRequiredDescriptionDefault
bootExitYesProjected exit value, bootstrapped path
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
ventureExitYesProjected exit value, venture-backed path
bootOwnershipPctYesYour ownership at exit, bootstrapped path, as a percentage
ventureOwnershipPctYesYour ownership after dilution, venture-backed path, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds that the tool computes a derived break-even value beyond a plain comparison, which is minor extra context; it says nothing about output shape or units handling beyond what annotations imply.

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

Conciseness4/5

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

Front-loaded with the core comparison and break-even outcome in one dense sentence, which is efficient. The trailing promotional link sentence is not strictly functional but is brief.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile while the schema covers all parameters. The description states the key derived output (break-even exit value), making it essentially complete for a stateless calculator.

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

Parameters3/5

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

Schema description coverage is 100%, so both the four required exit/ownership inputs and the optional currency code are already documented in the schema. The description adds no syntax, unit, or range meaning beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States specific verbs (compare, find break-even) and concrete resources (bootstrapped exit take-home vs venture-backed diluted exit take-home). An agent can tell it apart from generic valuation siblings like arr_multiple_calculator or saas_valuation_multiple_predictor without opening any schema.

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

Usage Guidelines3/5

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

The scenario (deciding whether raising pays off) is implied but never stated as an explicit when-to-use, and no alternative or exclusion is named. Adequate but leaves the agent to infer context.

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

brand_vs_performance_budget_allocatorBrand vs Performance Budget AllocatorB
Read-onlyIdempotent
Inspect

Split a marketing budget between brand and performance spend based on company stage, using the Binet & Field long/short research as a directional guide. See the full version at https://rahuldsarker.co/calculators/brand-vs-performance-budget-allocator

ParametersJSON Schema
NameRequiredDescriptionDefault
stageYesCompany stage: preRevenue (pre-revenue / finding PMF), earlyGrowth (early growth), scaling (scaling), mature (mature / category leader)
budgetYesMonthly marketing budget
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare a safe, read-only, idempotent, closed-world operation, so the description owes little on safety. It does add that results are a heuristic framed by Binet & Field long/short research and only a 'directional guide', which usefully tempers how the output should be trusted, but it says nothing about output shape or limitations 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.

Conciseness3/5

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

The first sentence is well front-loaded and earns its place. The second is a promotional link to an external calculator page, which carries no operational value for an agent deciding how to invoke the tool.

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

Completeness3/5

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

With an output schema present, return values need not be documented, and annotations cover the safety profile. What remains missing is routing context — when this beats the many similar allocation tools — and any note on how to interpret the brand/performance split, leaving it adequate but thin.

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

Parameters3/5

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

Schema coverage is 100% — stage, budget, and currency all have schema descriptions, and stage's enum values are already explained there. The description adds no syntax or semantic detail beyond noting stage drives the split, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (split) and resource (marketing budget) with the two output categories (brand vs performance) and the driving input (company stage). It is clear what the tool computes, though it never distinguishes itself from near-neighbors like cross_channel_ad_spend_allocator or marketing_budget.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no preconditions, and no named alternatives despite a crowded sibling set of budget/allocation calculators. 'Based on company stage' hints at the input but not at when an agent should pick this tool over the others.

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

burn_rate_optimization_forecasterBurn Rate Optimization ForecasterB
Read-onlyIdempotent
Inspect

Simulate month by month, at a given revenue growth rate and gross margin, how many months until gross profit covers fixed burn, and the cash needed to bridge the gap. See the full version at https://rahuldsarker.co/calculators/burn-rate-optimization-forecaster

ParametersJSON Schema
NameRequiredDescriptionDefault
revenueYesCurrent monthly revenue
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
fixedBurnYesFixed monthly burn, costs that do not scale with revenue
growthRatePctYesMonthly revenue growth rate, as a percentage
grossMarginPctYesGross margin, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds the algorithmic character of the tool (a month-by-month simulation producing a break-even month count and a bridge-cash figure), which is real context beyond the annotations, but says nothing about assumptions, rounding, or edge cases (e.g. zero growth, negative margin).

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

Conciseness4/5

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

The core computation is front-loaded in a single dense sentence with no filler. The trailing promotional URL ('See the full version at...') is arguably outside the tool's scope and is the one element that does not earn its place.

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

Completeness4/5

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

With an output schema present the description need not explain return values, and annotations cover safety, so the only real burden is purpose and inputs — both adequately handled. The missing piece is disambiguation from the many financial-modeling siblings, which leaves a small completeness gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented in the schema, and the description only echoes growth rate and gross margin. No additional meaning (units beyond the schema, defaulting behavior, currency handling) is added. Baseline 3 is correct when the schema carries the load.

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

Purpose4/5

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

The description states a specific computation: month-by-month simulation of when gross profit covers fixed burn plus the cash needed to bridge the gap. That is a concrete verb+resource and distinguishes it from generic calculators. However, with 100+ siblings including close cousins like growth_runway_extension_simulator and run_calculator, it never explicitly differentiates itself from those alternatives.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The scenario is implied by the inputs (a burn/growth scenario) but an agent choosing between this and run_calculator, growth_runway_extension_simulator, or rule_of_40_sandbox gets no routing help.

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

cac_payback_period_matrixCAC Payback Period MatrixB
Read-onlyIdempotent
Inspect

Calculate months to recover fully-loaded CAC on a gross-margin basis versus a raw-revenue basis. See the full version at https://rahuldsarker.co/calculators/cac-payback-period-matrix

ParametersJSON Schema
NameRequiredDescriptionDefault
cacYesFully-loaded customer acquisition cost
segmentNoCustomer segment for the benchmark verdict: smb, mid_market or enterprise (default smb)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
monthlyArpaYesAverage monthly revenue per account
grossMarginPctYesGross margin, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety behavior is covered. The description adds that results are computed on both a gross-margin and a raw-revenue basis, which is useful output context, but it discloses nothing further about limits, assumptions, or edge cases.

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

Conciseness4/5

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

Two tight sentences with the computational purpose front-loaded and the calculation basis highlighted. The trailing link is promotional but adds a documented 'full version' reference, so it is not purely wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and an idempotent read-only calculator is a simple tool. However, the complete absence of usage guidance for a CAC-metric tool surrounded by similar siblings leaves a real gap, so it is only minimally adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents cac, monthlyArpa, grossMarginPct, segment, and currency fully. The description adds no syntax or format detail beyond what the schema 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.

Purpose4/5

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

States a specific verb ('Calculate') and resource ('months to recover fully-loaded CAC'), and adds a distinguishing scope detail: gross-margin basis versus raw-revenue basis. It is clearly a CAC payback calculator, though it never names siblings like ltv_cac_calculator or cpa_to_cac_scalability_matrix to disambiguate.

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

Usage Guidelines2/5

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

The description gives no when-to-use context, prerequisites, or alternatives. With many neighboring CAC/LTV calculators in the sibling list, the agent gets no guidance on when this one is preferred over ltv_cac_calculator or cpa_to_cac_scalability_matrix.

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

cart_abandonment_calculatorCart Abandonment CalculatorC
Read-onlyIdempotent
Inspect

Calculate revenue lost to cart abandonment and how much a recovery flow could win back. See the full version at https://rahuldsarker.co/calculators/cart-abandonment-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
avgOrderValueYesAverage order value
cartsPerMonthYesCarts created per month
recoveryRatePctYesRecovery rate from a win-back flow, as a percentage
abandonmentRatePctYesAbandonment rate, as a percentage (industry average is near 70%)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral context beyond that – nothing about currency handling, defaulting behavior when currency is omitted, or how the two figures relate. The second sentence is a promotional link, not 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.

Conciseness3/5

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

The first sentence is tight and front-loaded, but the second sentence is a marketing URL that does not help an agent invoke the tool and does not earn its place. Net size is fine; content allocation is not.

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

Completeness3/5

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

With an output schema present, return values need not be described, and annotations cover safety, so the remaining gaps are usage context and a clear statement of the calculation model. The definition is adequate but leaves the agent to guess when this calculator beats its many siblings.

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

Parameters3/5

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

Schema description coverage is 100%, including a useful hint (industry average abandonment near 70%) and pattern guidance for the currency code, so the schema carries the parameter burden. The description adds no extra meaning, which is the baseline-3 case.

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

Purpose4/5

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

States a specific verb and resource: calculate revenue lost to cart abandonment plus recoverable revenue from a win-back flow. That is more concrete than a bare name restatement, but it offers no differentiation from the many adjacent calculators in the sibling list (e.g. roas_calculator, mobile_checkout_friction_tester, cpl_cpa_calculator).

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

Usage Guidelines2/5

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

The description contains no when-to-use guidance, no prerequisites, and no mention of alternatives such as run_calculator or find_calculator. The agent must infer the trigger scenario entirely from the tool name.

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

channel_saturation_estimatorChannel Saturation EstimatorB
Read-onlyIdempotent
Inspect

Project how many months until a channel's compounding CPA inflation pushes it past your max viable CPA. See the full version at https://rahuldsarker.co/calculators/channel-saturation-estimator

ParametersJSON Schema
NameRequiredDescriptionDefault
maxCpaYesMaximum viable CPA before the channel loses money
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
currentCpaYesCurrent cost per acquisition (CPA)
monthlyInflationPctYesMonthly CPA inflation rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false and openWorld=false, so the safety profile is covered. The description adds no behavioral context beyond that — no note on determinism, currency handling, or interpretation of the result. For a pure calculation tool with full annotation coverage, 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.

Conciseness4/5

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

The core purpose is front-loaded in a single efficient sentence. The second sentence is a promotional link to an external site that does not help an agent invoke the tool, which slightly detracts from strict conciseness but the overall length is small.

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

Completeness4/5

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

An output schema exists and annotations cover the safety profile, so the description needn't explain return values. For a self-contained calculation the essential input semantics are covered by the schema, leaving the definition complete enough to call correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (currentCpa, monthlyInflationPct, maxCpa, currency) are already documented in the schema. The description adds no syntax, unit, or default information beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and outcome: 'Project how many months until a channel's compounding CPA inflation pushes it past your max viable CPA.' That is a precise, distinguishable purpose. It doesn't name or differentiate against any sibling tool, keeping it short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives (e.g. cpa_to_cac_scalability_matrix, ltv_to_cac_ratio_health_grader), no prerequisites, and no exclusions. Usage is only weakly implied by the computation described.

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

check_availabilityCheck Rahul D Sarker's open call timesA
Read-only
Inspect

List open times for a free call with Rahul D Sarker (fractional CMO and RevOps consultant), live from his calendar. Each time comes with a link that opens the booking form with that time selected; the person confirms and books on the site. Use when someone wants to talk to Rahul, get help with their marketing or RevOps, or book a consultation.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many days ahead to look, 1 to 21 (default 7)
timezoneNoIANA time zone for the times shown, e.g. "America/New_York" or "Asia/Kolkata" (default Asia/Kolkata)
meetingTypeNoA meeting type id, if more than one is offered

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds genuine context beyond that: each returned time carries a link that opens the booking form with the time pre-selected, and the actual confirmation/booking happens on the site, not through this tool. That clarifies the read-only boundary of the call.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action before the mechanics and the usage condition. Each sentence earns its place, though the consultant credential aside ('fractional CMO and RevOps consultant') is mildly promotional rather than operational.

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

Completeness4/5

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

With no output schema, the description carries the burden of explaining returns, and it does so adequately by describing the shape of each entry (a time plus a booking link). Combined with fully documented optional params and read-only annotations, an agent has what it needs to invoke and interpret the tool.

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

Parameters3/5

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

Schema description coverage is 100%, with days (1-21), timezone (IANA), and meetingType fully documented in the schema. The description adds no parameter-level meaning of its own, so the baseline 3 is correct given the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb+resource ('List open times for a free call with Rahul D Sarker') with the source of truth ('live from his calendar'). This is instantly distinguishable from the entire sibling set, which is calculators and graders rather than availability lookups.

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

Usage Guidelines4/5

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

Gives explicit usage contexts: 'Use when someone wants to talk to Rahul, get help with their marketing or RevOps, or book a consultation.' Clear triggering conditions, though it names no alternatives or when-not-to-use condition (none of the siblings overlap, so this is a minor gap).

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

competitor_ad_spend_benchmarkerCompetitor Ad Spend BenchmarkerA
Read-onlyIdempotent
Inspect

Estimate a competitor's ad spend from share-of-voice data, assuming spend maps roughly to share of voice within the same auction. See the full version at https://rahuldsarker.co/calculators/competitor-ad-spend-benchmarker

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
yourSpendYesYour monthly ad spend
yourSovPctYesYour share of voice / impression share in the category, as a percentage
competitorSovPctYesCompetitor share of voice, as a percentage, e.g. from an auction-insights tool

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.8/5.0
Behavior4/5

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), so the remaining burden is methodological. The description usefully discloses the estimation assumption and its rough/proxy nature, which tells the agent the output is an approximation rather than measured data. It does not discuss precision limits or currency handling, keeping it below 5.

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

Conciseness4/5

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

Two sentences with the purpose front-loaded, followed by the key assumption. The trailing promotional URL adds no functional value for tool selection, a minor inefficiency rather than a structural flaw.

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

Completeness5/5

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

For a deterministic calculator with a full output schema and 100% parameter coverage, the description supplies exactly the missing piece an agent needs to interpret results: the share-of-voice-to-spend assumption. Nothing required for correct invocation is absent.

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

Parameters3/5

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

Schema description coverage is 100% – spend, both SOV percentages and the ISO 4217 currency pattern are all documented in the schema. The description adds no parameter-level detail (e.g. whether percentages are 0-100 or 0-1), so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb (Estimate) and resource (competitor's ad spend) plus the input method (share-of-voice data), which separates it from siblings like ad_spend_waste_calculator and cross_channel_ad_spend_allocator that also deal with ad spend. It does not name an alternative sibling explicitly, 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.

Usage Guidelines3/5

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

It states the modeling assumption (spend maps roughly to share of voice within the same auction), which functions as a validity condition for when the result is meaningful. However, it never says when to prefer this over related tools such as google_search_impression_share_value_estimator or impression_share_opportunity_matrix, leaving usage implied.

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

contract_redline_duration_predictorContract Redline Duration PredictorB
Read-onlyIdempotent
Inspect

Predict how long legal redlines will take, whether the deal will slip past quarter-end, and the revenue at risk. See the full version at https://rahuldsarker.co/calculators/contract-redline-duration-predictor

ParametersJSON Schema
NameRequiredDescriptionDefault
paperYesWhose paper: "yours" for your standard MSA, "theirs" for their paper/custom contract (drags roughly 1.8x)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
dealValueYesDeal value
daysPerRoundYesTurnaround days per redline round
daysToQuarterEndYesDays remaining to quarter-end
baseLegalReviewDaysYesBase legal review time, in days
expectedRedlineRoundsYesExpected number of redline rounds

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 fully covered by structured data. The description echoes the computational scope but adds nothing about determinism, rounding, or limits. The 'see the full version' link hints this may be a reduced build without explaining what is reduced.

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

Conciseness4/5

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

One substantive sentence front-loads the purpose and outputs with no padding. The second sentence is a promotional URL rather than task-relevant guidance, which slightly dilutes the signal but does not obscure the core description.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the 100%-covered input schema handles parameters. The description covers the tool's scope adequately for a read-only calculator, though it omits any hint of constraints or its relationship to sibling forecasting tools.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters are documented in the schema itself, including the 'paper' enum and its ~1.8x multiplier. The description adds no parameter-level meaning, which matches the baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb ('Predict') and resource (legal redlines) and enumerates the three outputs: duration, quarter-end slippage, and revenue at risk. This differentiates it from neighbors like sales_cycle_length_forecaster and b2b_implementation_delay_cost_calculator. It stops short of naming a sibling it is not, so a 4 rather than a 5.

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

Usage Guidelines2/5

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

The description says what it computes but never says when to reach for it versus alternatives such as sales_cycle_length_forecaster or b2b_implementation_delay_cost_calculator. No prerequisites, exclusions, or contextual triggers are given. Usage must be entirely inferred from the purpose sentence.

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

conversion_funnelConversion Funnel CalculatorB
Read-onlyIdempotent
Inspect

Calculate conversion rate and the traffic needed to hit a target number of conversions at that rate. See the full version at https://rahuldsarker.co/calculators/conversion-funnel

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesTarget number of conversions to reach
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
visitorsYesVisitors in the period
conversionsYesConversions (signups, leads, or purchases) in that same period

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 well covered. The description adds no behavioral context beyond this (e.g., no mention of rate limits, auth, or side effects), but it also does not contradict the annotations. With annotations carrying the behavioral burden, a 3 is the minimum viable.

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

Conciseness3/5

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

The first sentence is concise and front-loaded with the tool's purpose. However, the second sentence is a promotional link to an external calculator, which does not help an agent invoke the tool and therefore does not earn its place.

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

Completeness4/5

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

Given the presence of an output schema, full schema description coverage, and comprehensive annotations, the description is nearly complete for a simple calculator. It could be improved by noting the currency formatting and its lack of side effects, but the structured data already covers those details.

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

Parameters3/5

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

Schema description coverage is 100%, meaning the schema itself documents all four parameters (visitors, conversions, target, currency). The description adds no parameter-level meaning beyond what the schema 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.

Purpose4/5

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

The description states a specific verb (calculate) and resources (conversion rate and traffic needed for a target), making the tool's function clear. However, it does not explicitly differentiate this calculator from the many sibling calculators, 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.

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are provided. The description only states what the tool does; it never says when an agent should choose this over sibling calculators like cpl_cpa_calculator or roas_calculator, nor does it mention any prerequisites or exclusions.

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

cpa_to_cac_scalability_matrixCPA to CAC Scalability MatrixB
Read-onlyIdempotent
Inspect

Project how CPA/CAC inflates as you double and triple ad spend, given a per-doubling decay rate. See the full version at https://rahuldsarker.co/calculators/cpa-to-cac-scalability-matrix

ParametersJSON Schema
NameRequiredDescriptionDefault
cpaYesCurrent CPA / CAC
spendYesCurrent monthly ad spend
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
decayPctYesCPA inflation per doubling of spend, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this a read-only, idempotent, non-destructive computation, so the safety profile is covered. The description usefully adds the model's core assumption (a per-doubling decay rate governing CPA inflation), but says nothing about output shape, precision, or edge cases like zero decay.

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

Conciseness4/5

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

The operative sentence is front-loaded, dense, and free of filler. The trailing sentence is only a promotional link to an external page, which contributes little to correct invocation but costs just one short line.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and all parameters are documented at 100% coverage. The description supplies the essential conceptual model for interpreting and setting decayPct, leaving only minor gaps such as assumptions about compounding behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters including the optional currency pattern are already documented in the schema. The phrase 'per-doubling decay rate' mirrors the schema's decayPct description without adding new syntax or constraints, which is the expected baseline when the schema carries the semantics.

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

Purpose4/5

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

The description names a concrete verb ('Project') and a specific resource outcome (CPA/CAC inflation under doubling/tripling spend), which clearly separates it from generic CPA calculators like cpl_cpa_calculator. It stops short of naming a sibling alternative, so an agent must infer the distinction, but the modeled scenario is precise enough to route correctly.

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

Usage Guidelines2/5

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

There is no when-to-use versus when-not-to-use guidance and no referenced alternative among dozens of adjacent CAC/LTV tools. The scenario described implies a use case but gives the agent no explicit selection criteria.

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

cpl_cpa_calculatorCPL / CPA CalculatorB
Read-onlyIdempotent
Inspect

Calculate cost per lead, expected customers, and cost per acquisition from spend, leads, and a lead-to-customer conversion rate. See the full version at https://rahuldsarker.co/calculators/cpl-cpa

ParametersJSON Schema
NameRequiredDescriptionDefault
leadsYesLeads generated
spendYesAd spend
convPctYesLead-to-customer conversion rate, as a percentage
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 fully covered structurally. The description adds only the set of derived metrics, which is modest value for a pure deterministic calculator; there is little behavioral surface left to disclose.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence with no wasted preamble. The trailing link to an external 'full version' is promotional rather than operational and adds no invocation value, but it is brief enough not to undermine the structure.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the input surface is simple and fully documented. Combined with annotations that cover the safety profile, the definition is essentially complete for a single-step calculator, with the only gap being routing guidance against sibling metrics tools.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (spend, leads, convPct, currency) are already documented, including the ISO 4217 pattern and units. The description restates the inputs at a high level without adding format, unit, or edge-case meaning 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.

Purpose4/5

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

The description states a specific verb (Calculate) and enumerates the exact outputs (cost per lead, expected customers, cost per acquisition) plus the inputs. However, it does not differentiate this tool from adjacent siblings such as cpa_to_cac_scalability_matrix, cac_payback_period_matrix, or ltv_cac_calculator, leaving the agent to infer boundaries from names alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no stated preconditions, and no mention of alternatives among the many marketing-metric calculators in the sibling list. The description says what it computes but never says when to reach for it over a neighboring tool.

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

creative_testing_duration_forecasterCreative Testing Duration ForecasterB
Read-onlyIdempotent
Inspect

Forecast how many days an ad creative test needs to reach a sound sample size, from daily spend, expected CPA, variant count, and conversions needed per variant. See the full version at https://rahuldsarker.co/calculators/creative-testing-duration-forecaster

ParametersJSON Schema
NameRequiredDescriptionDefault
cpaYesExpected CPA
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
variantsYesNumber of variants being tested
dailySpendYesDaily test spend
convPerVariantYesConversions needed per variant for a stable read

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 fully covered. The description adds only the deterministic input-to-output relationship of the formula; it says nothing about edge cases (zero spend, zero CPA), whether the result is a single day count or a range, or how currency affects the output. Adequate but not additive beyond annotations.

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

Conciseness3/5

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

The first sentence is well front-loaded and information-dense, but the trailing sentence is purely promotional, pointing to an external site (https://rahuldsarker.co/...) that an agent cannot use and that does not help invocation. One sentence earns its place; the second is waste.

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

Completeness4/5

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

With an output schema present, return values need no explanation, annotations cover safety, and all four required inputs are enumerated along with the optional currency. The gap is that it does not flag any boundary condition for a math tool where division by spend or CPA is plausible.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The prose restates the same four inputs in natural language and adds no syntax, units, or range constraints beyond what the schema already documents.

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

Purpose4/5

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

The description names a specific verb and output ('Forecast how many days an ad creative test needs to reach a sound sample size') and enumerates the exact inputs that drive it. That is enough to separate it from near-neighbors like ad_creative_fatigue_forecaster and ab_test_significance_calculator, though it never names an alternative explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use statement, no prerequisites, and no mention of when this should be chosen over the many sibling calculators (e.g. ab_test_significance_calculator, ad_creative_fatigue_forecaster). The ad-creative-test framing implies a context but never states it as guidance.

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

crm_cleanup_roi_calculatorCRM Cleanup ROI CalculatorB
Read-onlyIdempotent
Inspect

Quantify the rep hours and revenue lost to dirty CRM data each year, and the selling capacity a cleanup would free up. See the full version at https://rahuldsarker.co/calculators/crm-cleanup-roi-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
repsYesReps/users on the CRM
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
hourlyCostYesFully-loaded hourly cost per rep
hoursWastedPerWeekYesHours per week lost to bad data, per rep

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered and the description does not contradict it. The description confirms the output is an annualized loss/capacity figure, but adds nothing about determinism, units of the result, or how the currency omission behaves.

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

Conciseness4/5

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

Two short sentences, front-loaded with the outcome the agent cares about. The trailer pointing at an external full version is a slight dilution but does not obscure the core statement.

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

Completeness3/5

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

An output schema exists and annotations cover safety, so returns and side effects need no elaboration. What is missing is the one thing the structured fields cannot supply: how this differs from the sibling crm_roi_calculator, leaving selection ambiguous.

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

Parameters3/5

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

Schema description coverage is 100%, so reps, hoursWastedPerWeek, hourlyCost and currency are all documented in the schema itself. The phrase 'each year' mildly clarifies that the weekly input is annualized, but that is marginal added meaning, so the baseline 3 applies.

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

Purpose4/5

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

Specific verb (quantify) plus specific outputs (rep hours and revenue lost to dirty CRM data, selling capacity freed by cleanup), which is far more than a restatement of the name. It does not distinguish itself from the nearby sibling crm_roi_calculator, so an agent must infer which CRM-ROI tool applies.

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

Usage Guidelines2/5

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

The description never states when to reach for this tool instead of crm_roi_calculator, data_enrichment_value_predictor, or the other ROI calculators in the catalog. The only secondary content is an external link to a 'full version', which is not usage guidance.

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

crm_roi_calculatorCRM ROI CalculatorB
Read-onlyIdempotent
Inspect

Weigh a CRM subscription and implementation cost against the win-rate lift it buys. See the full version at https://rahuldsarker.co/calculators/crm-roi-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
repsYesNumber of sales reps
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
annualCostYesAnnual CRM subscription cost
avgDealValueYesAverage deal value
winRateLiftPctYesExpected win-rate improvement from the CRM, as a percentage
dealsPerRepPerYearYesAverage deals closed per rep per year, before the CRM
implementationCostYesOne-time implementation/setup cost

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

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 fully covered by structured data. The description adds nothing beyond that – no note on units, rounding, or interpretation of the result – but for a pure calculator the residual behavioral burden is small, so this is adequate rather than deficient.

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

Conciseness3/5

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

The first sentence is tight and front-loaded. The second sentence is purely a promotional link to the author's site and carries no operational value for an agent, so half the description does not earn its place.

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

Completeness3/5

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

With an output schema present and complete parameter documentation, the description need not explain return values, and the annotations cover safety. What remains missing is the disambiguation from sibling ROI tools, which is the one thing structured fields cannot supply.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters (including the optional currency code) are already documented in the schema. The description contributes no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

The description names a specific action (weigh cost against lift) and the exact resource (CRM subscription plus implementation cost vs. win-rate lift), so the agent knows what the tool computes. It does not, however, distinguish itself from the closely named sibling crm_cleanup_roi_calculator, which an agent could easily confuse it with.

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

Usage Guidelines2/5

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

There is no guidance on when to reach for this tool versus the many nearby ROI calculators (crm_cleanup_roi_calculator, ltv_cac_calculator, acv_weight_planner). No prerequisites, no exclusions, no alternatives are named.

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

cross_channel_ad_spend_allocatorCross-Channel Ad Spend AllocatorB
Read-onlyIdempotent
Inspect

Suggest a starting Google/Meta/LinkedIn budget split based on total budget and average contract value. See the full version at https://rahuldsarker.co/calculators/cross-channel-ad-spend-allocator

ParametersJSON Schema
NameRequiredDescriptionDefault
acvYesAverage contract value
budgetYesTotal monthly budget
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is fully covered by structured data. The description adds only that the output is a suggested 'starting' split (heuristic, not authoritative), which is mildly useful but not rich behavioral context. A 3 is appropriate when annotations carry the safety burden.

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

Conciseness4/5

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

Front-loaded purpose in the first sentence with no wasted words. The second sentence is a promotional link to the 'full version' that does not help an agent invoke the tool, which slightly dilutes the structure but is brief.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and annotations cover the safety profile. Purpose and the two required inputs are stated, leaving only minor gaps around usage context and the optional currency parameter.

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

Parameters3/5

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

Schema description coverage is 100%, so budget, acv, and currency are all documented in the schema with the ISO 4217 pattern and examples. The description mentions budget and ACV but adds no syntax or format detail beyond the schema, and omits currency entirely. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource: 'Suggest a starting Google/Meta/LinkedIn budget split'. The channel specification distinguishes it from generic budget siblings like brand_vs_performance_budget_allocator and marketing_budget. It does not explicitly name an alternative, so it falls short of a 5.

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

Usage Guidelines2/5

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

It names the two inputs ('based on total budget and average contract value') and implies a planning-stage use via 'starting', but gives no when-to-use guidance, no conditions, and no alternatives among the many budget-related siblings. An agent gets no routing help.

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

cross_sell_opportunity_estimatorCross-Sell Opportunity EstimatorC
Read-onlyIdempotent
Inspect

Estimate the expansion ARR available from cross-selling a second product into your existing single-product customer base. See the full version at https://rahuldsarker.co/calculators/cross-sell-opportunity-estimator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
crossSellAcvYesCross-sell ACV
activeCustomersYesActive customers
expectedAttachRatePctYesExpected attach rate among eligible customers, as a percentage
singleProductSharePctYesShare of customers on a single product (not yet cross-sold), as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond that – nothing about determinism, units, or what the estimate represents operationally. It is a pure stateless calculator, so the annotation bar is low, but the description contributes nothing new.

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

Conciseness3/5

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

The first sentence is efficient and front-loaded. The second sentence is a promotional pointer to an external 'full version' URL, which does not help an agent invoke the tool and dilutes the definition. Appropriate length overall, but one sentence does not earn its place.

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

Completeness4/5

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

With a 100% covered schema, full annotations, and an output schema that carries the return shape, the description only needs to frame the calculation, which it does. It is largely complete for a self-contained estimator, with the minor gap being no explicit positioning against sibling expansion tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description's phrasing ('single-product customer base', 'expansion ARR') loosely maps to singleProductSharePct and crossSellAcv but adds no format or unit detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb (Estimate) and resource (expansion ARR from cross-selling a second product into the existing single-product base). This is fairly precise, but it does not explicitly distinguish itself from close siblings like customer_expansion_revenue_matrix or expansion_revenue_impact_simulator, 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.

Usage Guidelines2/5

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

The description states what the tool computes but gives no when-to-use guidance, no prerequisites, and no mention of alternatives among the many expansion/revenue siblings. An agent is left to infer the appropriate context entirely.

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

cta_visual_hierarchy_testerCTA Visual Hierarchy TesterB
Read-onlyIdempotent
Inspect

Score a call-to-action button's visibility using its real WCAG contrast ratio against the background plus size and placement. See the full version at https://rahuldsarker.co/calculators/cta-visual-hierarchy-tester

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYesButton size: large/prominent, medium, or small/text-like
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
placementYesPlacement: primary (above fold, standout), inline with content, or buried (below fold/crowded)
buttonColorHexYesButton color as a hex code, e.g. "#7C3AED"
backgroundColorHexYesBackground color as a hex code, e.g. "#FAFAFB"

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare this as a safe, read-only, idempotent, closed-world computation. The description adds that the score is derived from an actual WCAG contrast ratio plus size and placement, which clarifies the deterministic scoring basis. It says nothing about score ranges, thresholds, or output shape, so it adds only modest 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.

Conciseness3/5

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

The scoring sentence is well front-loaded and efficient, but the trailing promotional URL consumes roughly a third of the text without helping an agent invoke the tool. Trimming it would make this a tight, single-purpose definition.

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

Completeness4/5

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

With an output schema present, the description is not obligated to explain return values, and it covers all three scoring inputs plus the contrast basis. The unmentioned currency parameter is documented in the schema, and annotations cover the safety profile, so nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, including enum semantics for size and placement and the hex format and ISO currency pattern, so the schema carries the parameter burden. The description confirms the three scoring inputs but adds no format or constraint detail beyond what the schema already provides — the correct baseline of 3.

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

Purpose5/5

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

States a specific verb (score) and resource (CTA button visibility) and names the exact factors used: WCAG contrast ratio, size, and placement. An agent can distinguish it from near-neighbors like typography_legibility_grader or landing_page_vs_ad_match_quality_auditor without opening the schema.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no routing to or away from any sibling tool. The only extra sentence is a promotional URL, not usage context.

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

customer_expansion_revenue_matrixCustomer Expansion Revenue MatrixB
Read-onlyIdempotent
Inspect

Compound net monthly expansion revenue (upsell + cross-sell minus contraction) forward 1, 2, and 3 years from current ARR, with no new logos. See the full version at https://rahuldsarker.co/calculators/customer-expansion-revenue-matrix

ParametersJSON Schema
NameRequiredDescriptionDefault
arrYesCurrent ARR
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
monthlyExpansionPctYesNet monthly expansion rate from existing accounts, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 by structured data. The description usefully defines what 'net expansion' means (upsell + cross-sell minus contraction) and the horizon (1/2/3 years), but adds nothing about precision, rounding, or edge cases such as negative expansion.

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

Conciseness4/5

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

The core sentence is front-loaded and dense with useful specifics. The trailing external URL is promotional rather than invocation-relevant, a minor waste, but the definition stays short and readable.

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

Completeness4/5

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

An output schema exists, so return values need not be described. For a three-parameter, read-only deterministic calculator, the description supplies the formula semantics and horizon needed to call it correctly; only the lack of usage routing is a gap.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are documented in the schema itself (arr, currency ISO 4217, monthlyExpansionPct). The description clarifies that monthlyExpansionPct is net of contraction and excludes new logos, which slightly enriches the schema wording, but the baseline of 3 is appropriate when the schema carries the load.

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

Purpose4/5

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

The description names a specific computation (compound net monthly expansion revenue forward 1, 2, and 3 years from current ARR) and adds a distinctive constraint ('no new logos') that separates it from siblings like expansion_revenue_impact_simulator or net_revenue_retention_forecaster. It is clear what the tool does, though it never explicitly names a sibling alternative.

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

Usage Guidelines2/5

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

There is no when-to-use framing, no prerequisites, and no steering toward or away from the many adjacent calculators (cross_sell_opportunity_estimator, ltv_growth_multiplier_simulator, expansion_revenue_impact_simulator). The agent must infer fit from the purpose sentence alone.

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

customer_success_capacity_plannerCustomer Success Capacity PlannerB
Read-onlyIdempotent
Inspect

Compare CSM account load against a healthy book size to see capacity utilization and the hiring gap. See the full version at https://rahuldsarker.co/calculators/customer-success-capacity-planner

ParametersJSON Schema
NameRequiredDescriptionDefault
csmCountYesNumber of customer success managers
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
totalAccountsYesTotal accounts under management
healthyAccountsPerCsmYesHealthy accounts per CSM, before retention starts slipping

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 output includes a hiring gap, and its second sentence points to an external 'full version', implying this may be a trimmed variant — mildly relevant but no detail on determinism, rounding, or units.

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

Conciseness3/5

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

The purpose sentence is front-loaded and efficient, but the second sentence is a promotional URL that conveys almost no invocation value and dilutes the definition.

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

Completeness4/5

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

With an output schema present and annotations covering the behavioral profile, the description need not explain return format. For a deterministic single-purpose calculator the purpose statement is sufficient, missing only usage context that a slightly richer description could supply.

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

Parameters3/5

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

Schema description coverage is 100% and all four parameters (including optional currency) are documented in the schema itself. The description contributes no additional parameter meaning, so the baseline 3 applies.

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

Purpose4/5

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

The first sentence names a specific verb (compare) and resource (CSM account load vs. healthy book size) and states the two outputs: capacity utilization and hiring gap. It's clear what the tool computes, though it never explicitly differentiates itself from adjacent planning calculators like sdr_capacity_and_inbound_quota_planner.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no stated prerequisites or inputs context, and no routing to or away from alternatives. The agent is left to infer applicability purely from the purpose sentence.

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

data_enrichment_value_predictorData Enrichment Value PredictorB
Read-onlyIdempotent
Inspect

Compare the cost of manual rep research against an enrichment tool subscription, and calculate the net monthly savings and ROI. See the full version at https://rahuldsarker.co/calculators/data-enrichment-value-predictor

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
hourlyCostYesFully-loaded hourly cost per rep
minutesPerLeadYesMinutes per lead spent on manual research
toolCostPerMonthYesEnrichment tool cost per month
repsDoingResearchYesReps doing manual research
leadsResearchedPerWeekYesLeads researched per week, per rep

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds that it performs a cost comparison and calculates net savings and ROI, but this is largely restated by the title and output schema and does not disclose additional behavioral traits like constraints or data sources.

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

Conciseness4/5

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

The description is two sentences, front-loading the core action in the first sentence. The external link is short and does not disrupt readability, though it may be unnecessary for an AI agent.

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

Completeness4/5

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

For a calculator with a rich output schema and full parameter descriptions, the description adequately conveys the purpose. It does not need to explain return values or parameter formats because those are covered elsewhere, and no critical behavioral or usage details are missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema itself documents all six parameters in detail. The description does not mention any parameter, which is acceptable given the comprehensive schema, but it adds no parameter-level meaning beyond what is already structured.

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

Purpose4/5

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

The description states a specific verb (compare) and resources (manual rep research cost vs enrichment tool subscription cost), plus the computed outcomes (net monthly savings and ROI). It does not name an alternative sibling tool, but the domain is specific enough to distinguish it from most other calculators.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternative tools or when not to use this one. The description implies a scenario but leaves selection among the many calculator siblings entirely to inference.

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

deferred_revenue_amortization_plannerDeferred Revenue Amortization PlannerB
Read-onlyIdempotent
Inspect

Straight-line an upfront payment across the contract term to see revenue recognized to date versus the remaining deferred-revenue liability. See the full version at https://rahuldsarker.co/calculators/deferred-revenue-amortization-planner

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
termMonthsYesContract term, in months
monthsElapsedYesMonths elapsed since the contract started
upfrontPaymentYesUpfront payment collected

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

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 by structured data. The description adds the output framing (recognized to date vs. remaining liability) but omits assumptions such as rounding, mid-month proration, or what happens when monthsElapsed exceeds termMonths.

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

Conciseness3/5

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

The first sentence is efficient and front-loaded. The second sentence is a promotional URL pointing off-platform, which does not help an agent invoke the tool correctly and dilutes the definition.

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

Completeness3/5

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

With annotations and an output schema present, the description needn't explain safety or return values, and it covers the core computation. It remains silent on assumptions and boundary behavior for a 4-parameter financial calculator, leaving a modest but real gap.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter documented in the schema including the ISO 4217 currency pattern. The description adds no format, unit, or edge-case detail beyond what the schema already provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: straight-lining an upfront payment across a contract term to derive revenue recognized to date versus remaining deferred liability. An agent can identify the computation immediately. It does not, however, distinguish itself from conceptually adjacent siblings such as mrr_bridge_planner or net_revenue_retention_forecaster.

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

Usage Guidelines2/5

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

There is no statement of when to choose this tool over alternatives, no prerequisites, and no exclusions. Usage must be inferred entirely from the description's formula summary.

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

email_marketing_roi_calculatorEmail Marketing ROI CalculatorA
Read-onlyIdempotent
Inspect

Estimate monthly revenue, ROI, revenue per email and revenue per subscriber from an email programme, in ecommerce or B2B pipeline mode. See the full version at https://rahuldsarker.co/calculators/email-marketing-roi-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
openPctYesOpen rate, as a percentage
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
listSizeYesSubscribers on the list
toolCostYesEmail tool cost per month
peopleCostYesPeople cost per month for the programme
winRatePctNoB2B only: win rate on that pipeline, as a percentage. Omit for ecommerce.
conversionPctYesConversion rate of clicks, as a percentage
clickToOpenPctYesClick-to-open rate, as a percentage
emailsPerMonthYesEmails sent to the list per month
valuePerConversionYesAverage order value (ecommerce) or pipeline value per conversion (B2B)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds the dual-mode framing, but says nothing about accuracy caveats, rounding, or how omitted optional inputs behave. Some added value over annotations, not much.

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

Conciseness4/5

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

The core sentence is dense, front-loaded and earns its place. The trailing promotional URL link is not operationally useful to an agent and slightly dilutes an otherwise efficient definition.

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

Completeness4/5

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

With an output schema present and full schema descriptions, the agent has everything needed to invoke this correctly; the description only needs to frame scope, which it does. Minor gap: it never states that the mode is selected by supplying winRatePct.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema, including the currency pattern and the winRatePct 'B2B only, omit for ecommerce' rule. The description adds no parameter-level meaning beyond that; baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Estimate') plus the exact outputs (monthly revenue, ROI, revenue per email, revenue per subscriber) and the resource (an email programme). The named inputs and modes make it trivially distinguishable from near-neighbours like crm_roi_calculator or roas_calculator.

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

Usage Guidelines3/5

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

It names the two operating modes (ecommerce vs B2B pipeline), which implies how to configure the call, but gives no explicit when-to-use or when-not-to-use guidance relative to the many sibling ROI calculators. Usage is inferable, not stated.

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

enterprise_contract_discount_evaluatorEnterprise Contract Discount EvaluatorB
Read-onlyIdempotent
Inspect

Show how much lifetime profit an enterprise discount actually gives away, since cost-to-serve does not drop with price. See the full version at https://rahuldsarker.co/calculators/enterprise-contract-discount-evaluator

ParametersJSON Schema
NameRequiredDescriptionDefault
listAcvYesList (undiscounted) annual contract value
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
termYearsYesContract term, in years
discountPctYesDiscount offered, as a percentage
grossMarginPctYesGross margin, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint false, and openWorldHint false, covering the safety profile. The description adds the behavioral insight that cost-to-serve does not drop with price, which explains the model's logic. It does not add operational details like rate limits or auth, so it is a modest addition.

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

Conciseness3/5

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

Two sentences: the first front-loads the purpose, and the second points to an external full version. The link may be promotional rather than essential for invoking the tool, slightly reducing efficiency.

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

Completeness4/5

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

With a complete input schema and an output schema, the description need not detail parameters or return values. It provides enough context for a calculation tool, though it lacks guidance on interpreting or applying results.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are documented in the schema. The description does not add any parameter semantics beyond what the schema 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.

Purpose4/5

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

States a specific verb ('Show') and resource ('lifetime profit an enterprise discount gives away'), and adds the rationale that cost-to-serve does not drop with price. It does not explicitly differentiate from sibling calculators like gross_margin_impact_calculator, so it is clear but not fully distinguishing.

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

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are mentioned. The implied context is evaluating an enterprise discount, but the description does not say when to choose this tool over other pricing or margin calculators.

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

exit_intent_timing_optimizerExit-Intent Timing OptimizerB
Read-onlyIdempotent
Inspect

Estimate the best time to fire a timed exit-intent popup, based on average session duration, pages per session, and engaged-visitor share. See the full version at https://rahuldsarker.co/calculators/exit-intent-timing-optimizer

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
engagedSharePctYesEngaged-visitor share, as a percentage: roughly how far into a session real intent forms
pagesPerSessionYesPages per session
avgSessionSecondsYesAverage session duration, in seconds

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare that this is a safe, read-only, idempotent, closed-world operation. The description adds useful context by naming the inputs that drive the estimate, but it does not disclose output format, rate limits, or other behavioral traits 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.

Conciseness4/5

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

The description is front-loaded with the core purpose and is only two sentences long. The second sentence is an external link to a fuller version, which adds little for an agent but does not bloat the definition.

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

Completeness4/5

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

The tool has a full output schema and complete input schema coverage, so the description does not need to explain return values. It adequately states the purpose and inputs for a simple read-only estimator, though it could say more about when to use it.

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

Parameters3/5

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

Schema description coverage is 100%, so the input parameters are fully documented in the schema. The description lists three of the four parameters in prose but adds no syntax, format, or meaning beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific verb and resource: 'Estimate the best time to fire a timed exit-intent popup'. It also names the three inputs that drive the estimate. It is clear, but it does not explicitly distinguish this tool from any of the many sibling calculators.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description only says what the tool does, not when a user should choose it.

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

expansion_revenue_impact_simulatorExpansion Revenue Impact SimulatorB
Read-onlyIdempotent
Inspect

Estimate expansion ARR from an upsell offer and the new-logo CAC it would take to buy the same growth. See the full version at https://rahuldsarker.co/calculators/expansion-revenue-impact-simulator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
upsellAcvYesAnnual contract value of the upsell
newLogoCacYesCAC to acquire a new logo, for comparison
adoptionRatePctYesShare of existing customers expected to take the upsell offer, as a percentage
existingCustomersYesNumber of existing customers

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only that it is an estimator/comparison model; it discloses nothing extra about computation, inputs assumptions, or limits, and the trailing URL is promotional rather than behavioral.

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

Conciseness3/5

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

The functional sentence is front-loaded and efficient, but the second sentence is a pure marketing link to an external site that adds no invocation value. Two sentences, one of which does not earn its place.

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

Completeness4/5

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

With a full output schema, complete parameter descriptions, and annotations carrying the safety profile, the description needs only to frame the calculation, which it does. It is nearly sufficient, missing only guidance on scenario selection relative to the numerous overlapping growth calculators.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description echoes upsell offer and new-logo CAC but adds no syntax, units, or edge-case detail beyond what the schema provides; baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Estimate') plus the resource ('expansion ARR from an upsell offer') and frames the comparison against new-logo CAC. This is clear enough to distinguish it from most siblings, but it never names an adjacent tool like customer_expansion_revenue_matrix or net_revenue_retention_forecaster to disambiguate.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is provided. The agent must infer the scenario (expansion vs new-logo growth comparison) from the description alone, with no routing signal among the many sibling calculators.

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

find_calculatorFind the right calculatorA
Read-onlyIdempotent
Inspect

Search the 110+ marketing, sales, RevOps and SaaS calculators by what you want to work out (e.g. "payback on ad spend", "churn", "valuation"). Returns tool names and their inputs; run one with run_calculator or call it directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many matches, 1 to 10 (default 5)
queryYesWhat to calculate, in plain words

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds valuable context beyond that: it returns tool names and their inputs, and the results can be run via run_calculator or called directly. It does not cover result pagination or rate limits, but the safety profile is fully annotated.

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

Conciseness5/5

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

Two sentences with no wasted words. The purpose and scope are front-loaded, and the follow-up action is placed immediately after the return description.

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

Completeness4/5

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

For a search tool with two parameters, full schema coverage, and no output schema, the description covers the essential return content (tool names and inputs) and the next step. It omits details like result count defaults or empty-result behavior, but those are minor against the annotated safety profile and rich schema.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents query and limit. The description adds meaning by giving example query phrases like 'payback on ad spend', 'churn', and 'valuation', which clarify how to phrase the query parameter. The limit parameter is not mentioned, but the query semantics are enriched beyond the schema.

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

Purpose5/5

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

States a specific verb (Search) and resource (110+ marketing, sales, RevOps and SaaS calculators) with scope, and distinguishes itself from run_calculator by describing discovery rather than execution. An agent can tell it apart from individual calculator siblings and from run_calculator 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.

Usage Guidelines4/5

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

Explicitly says to use the results with run_calculator or call them directly, which names the alternative and the follow-up action. It does not explicitly say 'use this when you don't know the exact calculator, otherwise call run_calculator directly,' leaving a small inference gap, but the routing intent is clear.

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

form_field_friction_cost_calculatorForm Field Friction Cost CalculatorB
Read-onlyIdempotent
Inspect

Estimate the extra leads and pipeline value unlocked by trimming form fields, using a per-field conversion recovery rate. See the full version at https://rahuldsarker.co/calculators/form-field-friction-cost-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
targetFieldsYesTarget number of form fields
valuePerLeadYesValue per lead
currentFieldsYesCurrent number of form fields
monthlyVisitorsYesForm visitors per month
recoveryPerFieldPctYesRelative conversion recovered per field removed, as a percentage, typically 3-8
currentConversionPctYesCurrent form conversion rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds that the model uses a per-field conversion recovery rate, which is useful framing, but discloses nothing else (e.g. how fields beyond the rate are treated). With strong annotation coverage, 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.

Conciseness4/5

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

Two sentences, front-loaded with the core purpose. The trailing link to the 'full version' is promotional rather than operational for an agent, slightly diluting the otherwise tight structure.

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

Completeness4/5

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

With 7 well-described parameters, a declared output schema, and complete annotations, the description supplies enough context for correct invocation. The only gap is the absence of any usage/routing guidance, which is minor for a self-contained calculator.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (including the ISO currency code and the 3-8 recovery rate hint) is already documented in the schema. The description adds no syntax, units, or format detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Estimate') and resource ('extra leads and pipeline value unlocked by trimming form fields'), plus the mechanism (per-field conversion recovery rate). It is clearly separable from generic siblings like run_calculator or find_calculator, though it never names or distinguishes itself from a specific alternative.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no alternative tool is referenced. The description says only what the tool computes, leaving the agent to infer the use case entirely.

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

freemium_to_paid_pipeline_modelerFreemium to Paid Pipeline ModelerB
Read-onlyIdempotent
Inspect

Model monthly and annual new ARR from a freemium funnel, and the ARR still lagging in the upgrade pipeline. See the full version at https://rahuldsarker.co/calculators/freemium-to-paid-pipeline-modeler

ParametersJSON Schema
NameRequiredDescriptionDefault
paidAcvYesAnnual contract value once a user converts to paid
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
monthlySignupsYesFree signups per month
conversionRatePctYesFree-to-paid conversion rate, as a percentage
timeToUpgradeMonthsYesAverage time to upgrade, in months

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the substantive point that the model outputs both new ARR and the lagging upgrade-pipeline ARR, but says nothing about assumptions, rounding, or time horizon. With annotations doing the heavy lifting, this is an adequate 3.

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

Conciseness4/5

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

The modeling scope is front-loaded in the first sentence with no filler. The second sentence is a promotional URL that serves the human reader rather than the agent, slightly weakening an otherwise tight definition.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the four required inputs plus optional currency are fully described in the schema. Combined with the rich safety annotations, the description covers enough for correct invocation, missing only any statement of modeling assumptions or horizon.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters (including currency and its ISO 4217 pattern) are already documented in the schema. The description adds no syntax, units, or edge-case detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Model') and resource ('monthly and annual new ARR from a freemium funnel'), and adds the second output dimension ('ARR still lagging in the upgrade pipeline'). This distinguishes it from adjacent siblings like mrr_to_arr_calculator or ltv_growth_multiplier_simulator, though it never names an alternative explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus sibling calculators (e.g. saas_magic_number_calculator, product_led_growth_feasibility_grader), nor any prerequisite or exclusion. The only extra content is a promotional link to the web calculator, which does not help an agent decide.

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

friction_point_identifierFriction Point IdentifierB
Read-onlyIdempotent
Inspect

Count how many of 8 common conversion-flow friction points are present and turn that into a flow health score. See the full version at https://rahuldsarker.co/calculators/friction-point-identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
forcedUpsellsYesForced upsells or interstitials mid-flow
noTrustSignalsYesNo trust/security signals at the point of entry
slowOrLaggyStepsYesSlow steps or laggy interactions
tooManyFormFieldsYesToo many form fields
noProgressIndicatorYesNo progress indicator on multi-step flows
unclearOrLateErrorsYesUnclear or late error messages
limitedPaymentOptionsYesLimited payment / wallet options
accountRequiredBeforeValueYesAccount required before purchase / value

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds only that it counts 8 friction points and produces a health score, without disclosing permissions, rate limits, or other behavioral traits beyond what annotations and the output schema provide.

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

Conciseness4/5

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

The description is two sentences and front-loads the core function. The second sentence is a promotional link to an external full version, which does not help an agent invoke the tool and is a minor waste.

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

Completeness4/5

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

Given the simple 8-boolean calculator shape, full schema coverage, safety annotations, and an existing output schema, the description is adequately complete. It does not need to explain return values or list the eight friction points because the schema already does.

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

Parameters3/5

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

Schema description coverage is 100%, so all 9 parameters are fully documented in the input schema. The description does not add any parameter-level meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific action: counting how many of 8 conversion-flow friction points are present and converting that into a flow health score. It clearly identifies the resource and output, but does not differentiate itself from sibling calculators like mobile_checkout_friction_tester or form_field_friction_cost_calculator.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is provided. The description does not mention any alternatives or conditions for selecting this tool over the many sibling friction-related calculators.

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

google_search_impression_share_value_estimatorGoogle Search Impression Share Value EstimatorB
Read-onlyIdempotent
Inspect

Estimate missed clicks, conversions, and revenue from operating below 100% search impression share. See the full version at https://rahuldsarker.co/calculators/impression-share-opportunity-matrix

ParametersJSON Schema
NameRequiredDescriptionDefault
clicksYesCurrent clicks per month
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
convRatePctYesClick-to-conversion rate, as a percentage
impressionSharePctYesSearch impression share, as a percentage
valuePerConversionYesValue per conversion

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds nothing beyond the purpose — no note on instant calculation, determinism, or units/money handling. Acceptable but thin for a tool whose behavior is entirely defined by 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.

Conciseness3/5

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

The first sentence is well-formed and front-loaded. The second sentence is a promotional pointer to an external URL and contributes nothing to correct invocation, diluting an otherwise tight definition.

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

Completeness3/5

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

An output schema exists and parameters are fully documented, so return values need not be explained. The gap is the unresolved relationship to the similarly named sibling `impression_share_opportunity_matrix`, which an agent must resolve unaided to avoid picking the wrong tool.

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

Parameters3/5

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

Schema description coverage is 100%, with each of the five parameters (clicks, impressionSharePct, convRatePct, valuePerConversion, currency) documented in the schema itself. The description adds no additional meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb and scope: 'Estimate missed clicks, conversions, and revenue from operating below 100% search impression share.' That is clear about what is computed. However, it does not differentiate from the closely named sibling `impression_share_opportunity_matrix`, which is implied by the URL it points to.

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

Usage Guidelines3/5

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

The condition 'operating below 100% search impression share' implies the usage context, so an agent can infer when this is appropriate. There is no explicit when-not guidance and no stated alternative among the many sibling calculators (e.g. `ppc_click_volume_predictor`, `roas_calculator`).

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

gross_margin_impact_calculatorGross Margin Impact CalculatorB
Read-onlyIdempotent
Inspect

Calculate gross profit and gross margin from revenue, infrastructure cost, and support/delivery cost. See the full version at https://rahuldsarker.co/calculators/gross-margin-impact-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
revenueYesAnnual recurring revenue
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
supportCostYesSupport and delivery cost
infrastructureCostYesCloud/infrastructure cost

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds no behavioral context beyond the computation itself (e.g. no note about auth, rate limits, or rounding). With annotations carrying the load, 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.

Conciseness3/5

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

The first sentence is efficient and front-loaded, but the second sentence is a promotional external URL that adds no value for tool selection or invocation – it is noise in an MCP context. The core content is well-sized, the trailing link is not.

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

Completeness4/5

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

For a simple, read-only calculator with full schema coverage, complete annotations, and an output schema that documents return values, the description is nearly sufficient. It omits only usage context, which the other dimensions already penalize.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (including currency) are documented in the schema. The description restates the three required inputs but adds no format, units, or default details beyond that. 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.

Purpose4/5

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

The description states a specific verb ('Calculate') and clearly names the outputs (gross profit and gross margin) and the inputs (revenue, infrastructure cost, support/delivery cost). It does not explicitly differentiate itself from the many sibling calculators, but the resource ('gross margin') is distinctive enough to be recognizable.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The only extra sentence is an external link, which does not help the agent decide when this tool applies versus siblings like roas_calculator or ltv_cac_calculator.

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

growth_runway_extension_simulatorGrowth Runway Extension SimulatorB
Read-onlyIdempotent
Inspect

See how much cash runway a cut to gross burn buys you, given current cash, burn, and revenue. See the full version at https://rahuldsarker.co/calculators/growth-runway-extension-simulator

ParametersJSON Schema
NameRequiredDescriptionDefault
cashYesCash in bank
revenueYesMonthly revenue
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
grossBurnYesGross monthly burn
burnReductionPctYesBurn reduction from efficiency gains, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds the core calculation framing but no additional behavioral context such as result interpretation, assumptions, or limitations; the external link is promotional rather than behavioral.

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

Conciseness4/5

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

The main purpose is front-loaded in the first sentence with no wasted words. The second sentence is an external promotional link that does not help an agent invoke the tool, but it is brief and does not obscure the primary description.

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

Completeness4/5

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

Given the rich input schema, output schema, and complete annotations, the description is largely sufficient for calling the tool correctly. It could be more complete by adding when-to-use guidance or calculation assumptions, but the structured fields carry most of the invocation burden.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters, including currency and burnReductionPct, are already documented in the schema. The description mentions cash, burn, and revenue but adds no syntax, units, or defaults beyond what the schema provides.

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

Purpose4/5

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

The description clearly states a specific calculation: how much cash runway a gross burn cut buys given cash, burn, and revenue. It distinguishes the tool's core purpose well, though it does not explicitly contrast itself with sibling simulators or forecasters.

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

Usage Guidelines2/5

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

The description provides no explicit when-to-use guidance, no exclusions, and does not name any alternative sibling tool. It implies a runway-extension scenario but leaves selection entirely to the agent.

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

growth_strategy_prioritization_toolGrowth Strategy Prioritization Tool (ICE Scoring)A
Read-onlyIdempotent
Inspect

Rank growth ideas by ICE score (Impact, Confidence, Ease averaged, each scored 1-10) to decide what to run next. See the full version at https://rahuldsarker.co/calculators/growth-strategy-prioritization-tool

ParametersJSON Schema
NameRequiredDescriptionDefault
ideasYesList of growth ideas to score and rank
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the scoring method (averaging I/C/E) which is genuinely useful behavioral context, but says nothing about tie-handling, ordering of results, or the promotion link's intent beyond a URL. Adequate but shallow 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.

Conciseness4/5

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

Front-loaded with the core action and scoring definition in the first sentence, which is efficient. The second sentence is a promotional link rather than functional information, which slightly dilutes the value but stays brief.

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

Completeness5/5

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

With an output schema present, return-value explanation is unnecessary, and the readOnly/idempotent annotations carry the safety envelope. For a two-parameter, 100%-covered calculator, the description supplies purpose plus the scoring method, which is enough for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 'ideas' and its fields and the 'currency' parameter. The description reinforces the 1-10 range for I/C/E but never mentions the currency parameter at all, adding no meaning beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Rank growth ideas') and even defines the ICE methodology (Impact, Confidence, Ease averaged, each 1-10), which is unusually concrete. However, it makes no distinction from the many sibling calculators, so an agent cannot route to it versus e.g. strategic_pivot_risk_grader or growth_runway_extension_simulator from the text alone.

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

Usage Guidelines3/5

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

'to decide what to run next' implies the usage context (prioritization among candidate growth ideas), but there is no explicit when-to-use/when-not, no prerequisites, and no named alternative among the ~110 sibling tools. Usage is inferable but not guided.

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

growth_team_hiring_sequence_plannerGrowth Team Hiring Sequence PlannerB
Read-onlyIdempotent
Inspect

Recommend the right growth/marketing hiring sequence for your ARR band, from founder-led at pre-$1M to a full leadership team at $10M+. See the full version at https://rahuldsarker.co/calculators/growth-team-hiring-sequence-planner

ParametersJSON Schema
NameRequiredDescriptionDefault
arrYesCurrent annual recurring revenue (ARR)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

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 only the ARR-band framing, which is more purpose than behavior; it says nothing about how recommendations are derived or what assumption set drives the sequence.

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

Conciseness3/5

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

The core sentence is front-loaded and economical, but the trailing 'See the full version at https://...' is promotional filler that does not help an agent invoke the tool correctly and dilutes an otherwise tight sentence.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile for a read-only calculator. With 100% schema coverage the remaining gaps are modest, but the description still omits any usage context or differentiation from a crowded set of planning siblings.

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

Parameters3/5

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

Schema description coverage is 100%, so both arr and currency are fully documented in the schema with format and pattern constraints. The description adds no syntax or interpretation detail beyond what the schema already provides, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Recommend) and resource (growth/marketing hiring sequence) scoped by ARR band, with concrete bounds (pre-$1M to $10M+). An agent can identify the tool's output without opening the schema, though it does not differentiate against near-neighbors like in_house_vs_fractional_cmo or sdr_capacity_and_inbound_quota_planner.

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

Usage Guidelines2/5

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

The description says what the tool produces but gives no when-to-use guidance, no prerequisites, and names no alternative. There is no signal for choosing this over the other org/headcount planning tools in the sibling list.

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

gtm_audit_scorecardGTM Tracking Audit ScorecardA
Read-onlyIdempotent
Inspect

Score your Google Tag Manager container health across eight weighted dimensions covering tag hygiene, consent, and reconciliation. See the full version at https://rahuldsarker.co/calculators/gtm-audit-scorecard

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
consentModeV2YesConsent Mode v2 is implemented and verified, weight 15
noDuplicateTagsYesNo duplicate tags tracking the same event, weight 15
taggedOwnershipYesEvery tag has a documented purpose and owner, weight 15
versionChangeNotesYesEvery container version has a change note, weight 10
dataLayerDocumentedYesData layer is versioned and documented, weight 15
noOverfiringTriggersYesNo tags trigger on "All Pages" that should not, weight 15
previewBeforePublishYesEvery publish goes through Preview mode first, weight 10
monthlyReconciliationYesGA4, Ads and CRM numbers are reconciled monthly, weight 5

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds that scoring is weighted across eight dimensions, but nothing about how the score is computed, the yes/partial/no scale, or what happens with omitted optional inputs. With annotations carrying the behavioral load, this is adequate but thin.

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

Conciseness4/5

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

Two sentences, purpose front-loaded, no redundant restatement of the title. The second sentence is a promotional link to an external full version rather than operative guidance, which slightly dilutes the value but costs little space.

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

Completeness4/5

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

With an output schema present, annotations covering the safety profile, and complete per-parameter documentation, the description only needs to establish purpose — which it does. It stops short of explaining the scoring scale or aggregation, so it is not fully self-contained, but nothing required to invoke the tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and each of the eight required enums already documents its own weight, so the schema does the heavy lifting. The description's 'eight weighted dimensions' aligns with but does not enrich the parameter documentation. Baseline 3 applies when the schema is self-sufficient.

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

Purpose4/5

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

States a specific verb and resource: scoring Google Tag Manager container health across eight weighted dimensions of tag hygiene, consent, and reconciliation. It is clearly distinguishable from the many revenue/ROI calculators among its siblings, though it never names a sibling or states an explicit boundary.

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

Usage Guidelines3/5

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

Usage is only implied — an agent can infer this is for auditing a GTM container setup. There is no statement of when to choose this versus the related audit-style siblings (tech_stack_duplication_inspector, utm_generator_and_validation_helper), nor any prerequisites or exclusions.

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

historical_data_drift_estimatorHistorical Data Drift EstimatorB
Read-onlyIdempotent
Inspect

Estimate how much of a contact database has gone stale since it was last cleansed, using an annual B2B data decay rate. See the full version at https://rahuldsarker.co/calculators/historical-data-drift-estimator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
totalContactsYesTotal contacts in the database
annualDecayRatePctYesAnnual data decay rate, as a percentage, B2B data typically decays 20-30%/year
monthsSinceLastCleanseYesMonths since the database was last cleansed/verified

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.4/5.0
Behavior3/5

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 the modeling trait that it applies an annual B2B decay rate, which is useful context but not rich behavioral disclosure (no rate limits, no note on compounding/assumptions).

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

Conciseness4/5

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

Two sentences, front-loaded with the core purpose. The trailing promotional URL is slightly wasteful but does not disrupt comprehension.

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

Completeness5/5

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

An output schema exists, so return-value explanation is unnecessary, and annotations cover the safety profile. For a simple read-only calculator, the description plus structured fields are sufficient to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters including the currency code and the 20-30% decay convention. The description adds nothing beyond what the schema provides, which is baseline-appropriate.

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

Purpose4/5

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

States a specific verb ('estimate') and resource ('how much of a contact database has gone stale'), with the modeling basis (annual B2B data decay rate). The purpose is clear, but it does not differentiate itself from related siblings like crm_cleanup_roi_calculator or data_enrichment_value_predictor.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance, and no alternatives named. The context (post-cleanse staleness) is inferable from the description, but the agent gets no routing help among the many sibling calculators.

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

impression_share_opportunity_matrixImpression Share Opportunity MatrixB
Read-onlyIdempotent
Inspect

Estimate missed conversions and revenue from operating below 100% impression share on a search campaign. See the full version at https://rahuldsarker.co/calculators/impression-share-opportunity-matrix

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
conversionsYesConversions per month, now
impressionSharePctYesCurrent impression share, as a percentage
valuePerConversionYesValue per conversion

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safe read-only nature is covered by structured data. The description adds that it is a below-100% impression-share estimation but does not explain the estimate's basis, assumptions, or how results are framed beyond the purpose sentence; the second sentence is a promotional link rather than behavioral context.

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

Conciseness4/5

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

The core purpose is front-loaded in a single efficient sentence with no waste. The trailing 'See the full version at ...' link is mildly promotional but provides a potential reference; it is the only expendable element.

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

Completeness4/5

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

For a read-only calculator with a full output schema and completely documented parameters, the description conveys enough to invoke correctly. The main omission is sibling differentiation, which is more a usage issue than a completeness gap for the call itself.

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

Parameters3/5

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

Schema coverage is 100%, and each parameter (impressionSharePct, conversions, valuePerConversion, currency) is self-documented in the schema. The description adds no additional semantics, syntax, or units 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.

Purpose4/5

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

States a specific verb ('Estimate') and clearly names the resource — missed conversions and revenue from operating below 100% impression share on a search campaign. However, it does not differentiate itself from the very similar sibling google_search_impression_share_value_estimator, leaving the agent to infer which of the two near-duplicates to pick.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no mention of the obvious alternative tool (google_search_impression_share_value_estimator) that appears in the sibling list. The agent gets a purpose but no routing logic for a crowded calculator family.

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

inbound_call_center_routing_auditorInbound Call Center Routing AuditorB
Read-onlyIdempotent
Inspect

Estimate the customers and ARR put at risk each year by slow support routing and SLA breaches. See the full version at https://rahuldsarker.co/calculators/inbound-call-center-routing-auditor

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
excessChurnPctYesExtra annual churn among those affected, from poor experience, as a percentage
activeCustomersYesActive customers
slowSupportSharePctYesShare of customers hitting slow support (breaching your response SLA), as a percentage
annualRevenuePerCustomerYesAnnual revenue per customer (ARPU)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safe, pure-computation profile is covered. The description adds only the annualization framing ('each year') and a promotional link to a fuller web version; it says nothing about output detail, assumption sensitivity, or how the estimate is derived. With annotations carrying the safety burden, 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.

Conciseness4/5

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

Two sentences with the purpose front-loaded and no filler in the first sentence. The second sentence is a short promotional pointer to an external full version, which is marginal value for an agent but costs little space.

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

Completeness4/5

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

For a low-complexity, flat-schema calculator with a complete output schema and 100% parameter description coverage, the definition is nearly sufficient: the agent knows what it computes and what to pass. The remaining gap is disambiguation from near-identical routing/churn calculators, which the description never addresses.

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

Parameters3/5

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

Schema description coverage is 100% — all five parameters (including currency and the three percentage inputs) are documented in the schema itself. The description contributes no additional semantics about units, ranges, or how excessChurnPct interacts with slowSupportSharePct, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb and output ('Estimate the customers and ARR put at risk each year') plus the causal inputs ('slow support routing and SLA breaches'), so an agent knows exactly what the tool computes. It does not, however, differentiate itself from the very similar sibling lead_routing_delay_cost_calculator, which appears to compute an adjacent quantity.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: no stated conditions, prerequisites, or named alternatives. The agent must infer from the name and the crowded calculator sibling list whether this or lead_routing_delay_cost_calculator / no_show_rate_revenue_restorer is the right call.

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

in_house_vs_fractional_cmoIn-House vs Fractional CMO CalculatorA
Read-onlyIdempotent
Inspect

Compare the loaded annual cost of a full-time CMO hire against a fractional CMO retainer, including the ramp-up cost before a full-time hire makes impact. See the full version at https://rahuldsarker.co/calculators/in-house-vs-fractional-cmo

ParametersJSON Schema
NameRequiredDescriptionDefault
salaryYesFull-time CMO base salary
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
loadedPctYesBenefits + overhead loading on top of salary, as a percentage, e.g. 30 for 30%
rampMonthsYesMonths of ramp before the full-time hire delivers impact
recruitingYesRecruiting / search cost for the full-time hire
fractionalMonthlyYesFractional CMO monthly retainer

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, non-destructive, and closed-world, so the safety profile is covered. The description adds that ramp-up cost is included in the comparison, which is useful computational context, but it does not disclose return format, precision, or other behavioral details.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the core comparison and followed by a secondary link. No unnecessary text or repetition.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. The description gives enough context to understand the calculation's scope, though it omits usage conditions and parameter specifics that are covered by the schema and annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is documented in the schema itself. The description only indirectly references loaded cost and ramp-up, without adding parameter-level 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.

Purpose5/5

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

The description states a specific verb ('Compare') and the exact resources being compared (loaded annual cost of a full-time CMO hire vs. a fractional CMO retainer, including ramp-up cost). This distinguishes it from generic cost or hiring calculators among the siblings.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool, when not to use it, or which alternative calculators might apply. It only states the calculation and links to an external full version.

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

internationalization_market_prioritization_gridInternationalization Market Prioritization GridA
Read-onlyIdempotent
Inspect

Score a candidate international market on size, localization ease, competitive whitespace, regulatory ease, and payments/GTM readiness to decide whether to prioritize, plan, or deprioritize it. See the full version at https://rahuldsarker.co/calculators/internationalization-market-prioritization-grid

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYesMarket size / demand: high/med/low. Weight 30
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
paymentsYesPayments & go-to-market readiness: high/med/low. Weight 15
regulatoryYesRegulatory / compliance ease: high/med/low. Weight 15
competitionYesWhitespace vs. competition: high/med/low. Weight 20
localizationYesLocalization ease (language, product): high/med/low. Weight 20

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.9/5.0
Behavior3/5

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, making this a safe, deterministic calculation. The description adds context by naming the dimensions and output decision categories, but does not describe the numeric output, weights, or scale, leaving that to the schema/output schema. With robust annotations, a 3 is adequate.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the purpose and dimensions. However, the appended URL is promotional and does not earn its place for an AI agent, slightly reducing conciseness.

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

Completeness4/5

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

Given the rich schema (100% coverage, enums, weights) and the presence of an output schema, the description provides enough context about the five dimensions and the decision output to guide an agent. It could be improved by briefly mentioning the output format (e.g., score or category) but is largely complete for a calculator tool.

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

Parameters3/5

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

Schema description coverage is 100%, with each of the five enum parameters extensively documented including weights (e.g., 'Weight 30'). The description adds no new parameter syntax or format information beyond what the schema provides. Baseline 3 applies when the schema fully documents parameters.

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

Purpose5/5

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

The description names a specific verb+resource ('Score a candidate international market') and enumerates the exact five dimensions it evaluates (size, localization ease, competition, regulatory, payments). It distinguishes itself from siblings like total_addressable_market_estimator and product_market_fit_scoring_grader by its multi-factor prioritization decision output.

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

Usage Guidelines4/5

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

The description creates clear context for when to use by stating the scoring dimensions and decision outcome (prioritize, plan, deprioritize). It doesn't explicitly exclude related tools like total_addressable_market_estimator or explicitly name alternatives, but the specificity of the internationalization use-case effectively scopes it.

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

landing_page_vs_ad_match_quality_auditorLanding Page vs. Ad Match Quality AuditorB
Read-onlyIdempotent
Inspect

Score message-match continuity between an ad and its landing page across five weighted criteria (headline, keyword, offer, CTA, visuals). See the full version at https://rahuldsarker.co/calculators/landing-page-vs-ad-match-quality-auditor

ParametersJSON Schema
NameRequiredDescriptionDefault
ctaYesCTA wording is consistent (weight 15)
offerYesAd offer / promise matches the page (weight 25)
visualYesCreative visuals match the page (weight 10)
keywordYesTarget keyword present above the fold (weight 20)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
headlineYesAd headline echoed in the page H1 (weight 30)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds that scoring is weighted across five criteria, which is useful, but it does not explain how the yes/partial/no inputs are combined or what thresholds/verdicts the result carries. With annotations carrying the safety 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.

Conciseness3/5

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

The first sentence is tight, front-loaded and earns its place. The second sentence is a marketing link that adds no selection or invocation value for an agent, diluting an otherwise efficient definition.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and all six parameters are fully documented in the schema. What is missing is usage context: when to pick this auditor over the many adjacent graders and what the scoring output is meant to drive.

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

Parameters3/5

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

Schema description coverage is 100% and every enum parameter already documents its criterion and weight, so the description adds little beyond listing the same five criteria. The currency parameter is not referenced in the description at all. Baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource (score message-match between an ad and its landing page) and enumerates the five criteria, so the agent knows exactly what is evaluated. It does not, however, differentiate itself from close siblings such as above_the_fold_messaging_clarity_grader or cta_visual_hierarchy_tester.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives among the many sibling grading/auditing tools. The only extra content is a promotional URL, which gives the agent no routing information.

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

lead_grading_calculatorLead Grading CalculatorA
Read-onlyIdempotent
Inspect

Turn firmographic fit criteria into an A–F lead grade, distinct from behavioral lead scoring. See the full version at https://rahuldsarker.co/calculators/lead-grading-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
industryFitYesRight industry / vertical, weight 25
companySizeFitYesRight company size, weight 20
budgetConfirmedYesBudget confirmed or implied, weight 20
decisionMakerAccessYesTalking to a decision-maker, weight 20
serviceableGeographyYesServiceable geography, weight 15

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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 by structured data. The description adds that this is a pure criteria-to-grade transform with a bounded A–F output, which is mild extra context but no detail on determinism, weighting behavior, or refresh semantics. It also points to an external URL while openWorldHint is false — a slight tension, though the tool itself does not fetch it.

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

Conciseness4/5

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

Two short sentences with the core purpose front-loaded. The trailing 'See the full version at <URL>' is promotional filler rather than operational information, which keeps it from being a clean 5.

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

Completeness4/5

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

For a deterministic multi-factor calculator with a 100%-documented schema, an output schema handling return values, and annotations covering safety, the description is sufficient to call the tool correctly. It only omits how weights combine into the final letter grade, which the schema largely implies.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents every enum value and its weight (25/20/20/20/15), so the description has essentially nothing left to add. It never mentions the optional currency parameter or the yes/partial/no tri-state semantics. Baseline 3 for a schema-saturated tool.

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

Purpose4/5

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

States a specific transformation — firmographic fit criteria in, A–F grade out — and explicitly positions itself against behavioral lead scoring, which is the key ambiguity in this dense calculator family. It does not distinguish itself from the nearer neighbours (lead_quality_intent_evaluator, lead_scoring_logic_architect, paid_search_intent_tier_grader), but the verb+resource+output are unambiguous.

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

Usage Guidelines3/5

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

The clause 'distinct from behavioral lead scoring' is an implicit routing hint for when this tool applies, but there is no explicit when-to-use / when-not-to-use statement and no named alternative among the many grading/scoring siblings. Usage is inferable rather than stated.

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

lead_magnet_copy_graderLead Magnet Copy GraderB
Read-onlyIdempotent
Inspect

Score a lead magnet's perceived opt-in value across five weighted criteria into a 0-100 score. See the full version at https://rahuldsarker.co/calculators/lead-magnet-copy-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
feelsCredibleYesFeels credible / worth an email (weight 15)
appealingFormatYesFormat is appealing, tool/template over PDF (weight 15)
deliversValueFastYesDelivers value fast, not a 40-page slog (weight 20)
relevantToIcpProblemYesDirectly relevant to your ICP's problem (weight 25)
specificTangibleOutcomeYesPromises a specific, tangible outcome (weight 25)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 the scoring scale (0-100 across five weighted criteria), which is useful context, but discloses nothing about scoring edge cases, weighting behavior, or output beyond what annotations and the output schema already carry.

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

Conciseness4/5

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

The first sentence is front-loaded, specific, and complete. The second sentence is a marketing URL that adds no invocation value, a minor blemish on an otherwise tight two-sentence definition.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and annotations cover safety. The description is complete enough to invoke correctly, missing only usage guidance, which is a secondary concern for a self-contained scoring tool.

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

Parameters3/5

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

Schema coverage is 100% with per-field descriptions and enum values, so the schema fully documents all six parameters. The description adds only the aggregate notion of 'five weighted criteria' and does not explain the currency parameter or how weights combine. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (Score) and resource (a lead magnet's perceived opt-in value) plus the method (five weighted criteria into a 0-100 score). It is clearly distinguishable from sibling graders like value_prop_strength_grader or pricing_page_architecture_grader, though it never explicitly contrasts 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.

Usage Guidelines2/5

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

The description says what the tool does but gives no when-to-use context, no prerequisites, and no alternatives. An agent gets no help deciding when a lead magnet grader is the right pick versus other copy/value graders.

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

lead_quality_intent_evaluatorLead Quality & Intent EvaluatorB
Read-onlyIdempotent
Inspect

Split signups into corporate-email vs personal-email intent segments, apply different close rates to each, and score overall lead quality. See the full version at https://rahuldsarker.co/calculators/lead-quality-intent-evaluator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
signupsPerMonthYesSignups per month
personalCloseRatePctYesPersonal-email close rate, as a percentage
corporateCloseRatePctYesCorporate-email close rate, as a percentage
corporateEmailSharePctYesCorporate-email share, as a percentage, vs gmail/outlook/free personal domains

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description adds the segmentation-and-scoring computation model, which is useful, but says nothing about how the segments are split (domain matching), what the score scale means, or currency handling.

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

Conciseness4/5

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

Front-loaded single sentence that describes the computation efficiently. The trailing promotional URL adds little value for an agent and is the only real waste.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and inputs are fully schema-documented. However, with roughly 100 sibling calculators in the lead/marketing space, the absence of any selection guidance leaves an agent without enough context to choose this tool confidently.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are documented in the schema and the baseline of 3 applies. The description names the corporate/personal split and close rates conceptually but adds no syntax, units, or bounds beyond what the schema already states.

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

Purpose4/5

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

States a concrete, specific operation: segmenting signups by corporate vs personal email, applying distinct close rates, and scoring lead quality. That is a real verb+resource, though it does not distinguish itself from close siblings like lead_grading_calculator or lead_scoring_logic_architect.

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

Usage Guidelines2/5

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

No statement of when to use this tool rather than the many adjacent lead-scoring/grading calculators. It also gives no prerequisites (e.g. that signups and both close rates are required). The only routing hint is a link to an external 'full version', which is not agent-usable guidance.

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

lead_routing_delay_cost_calculatorLead Routing Delay Cost CalculatorB
Read-onlyIdempotent
Inspect

Estimate the deals and revenue lost each month from slow lead response times, modeling how conversion decays with response delay. See the full version at https://rahuldsarker.co/calculators/lead-routing-delay-cost-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
dealValueYesAverage deal value
monthlyLeadsYesInbound leads per month
conversionAtTargetPctYesLead-to-deal conversion rate when responding at the target speed, as a percentage
targetResponseMinutesYesTarget response time, in minutes
currentResponseMinutesYesCurrent average response time, in minutes

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds one useful behavioral fact, that conversion is modeled as decaying with response delay, but does not explain the decay model, units expectations, or what happens if target exceeds current response time.

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

Conciseness4/5

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

Two sentences, front-loaded with the core purpose. The second sentence is purely a promotional link to an external page, which does not help the agent act and is mild filler, keeping it short of a 5.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the params are fully documented in the schema. However, for a 6-parameter financial modeling tool with no annotations needed but heavy sibling overlap, the description omits any routing guidance, leaving the agent without decision criteria.

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

Parameters3/5

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

Schema description coverage is 100% with all six parameters documented in the schema, so the baseline is 3. The description adds no additional meaning about the parameters, not even clarifying that currentResponseMinutes and targetResponseMinutes are the comparison driving the loss estimate.

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

Purpose4/5

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

The description states a specific verb and resource: estimate deals and revenue lost per month from slow lead response, with the modeling mechanism (conversion decay by response delay) named. It is distinguishable from graders and funnel tools, but it never names or contrasts any sibling (e.g. ae_sdr_hand_off_friction_calculator or b2b_implementation_delay_cost_calculator), so sibling differentiation is absent.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no alternative named. The only context is the vague "See the full version at ..." link, which points off-tool rather than helping the agent choose between this and the many other lead/response-time calculators.

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

lead_scoring_logic_architectLead Scoring Logic ArchitectB
Read-onlyIdempotent
Inspect

Score a lead on weighted fit and behavior criteria and get a routing recommendation (route to sales, nurture, or disqualify). See the full version at https://rahuldsarker.co/calculators/lead-scoring-logic-architect

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
industryFitYesIndustry / ICP match, weight 15
companySizeFitYesCompany size fit, weight 15
titleSeniorityYesJob title / seniority match, weight 10
highIntentActionYesHigh-intent action such as trial or contact, weight 25
pricingPageVisitYesVisited pricing / demo page, weight 20
contentEngagementYesContent / email engagement, weight 15

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds that the result is a weighted score plus a routing bucket, but says nothing about how the weighting works, whether the decision thresholds are configurable, or how ties/partial inputs are handled.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and the returned recommendation. The trailing URL is promotional filler rather than task-relevant information, a minor waste of budget.

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

Completeness4/5

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

For a stateless read-only calculator with a complete schema and an output schema, the description covers purpose and output adequately. The remaining gap is routing relative to the many sibling lead tools, which the description leaves unaddressed.

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

Parameters3/5

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

Schema description coverage is 100% and every enum parameter is documented with its weight, so the schema does the heavy lifting. The description adds no parameter-level detail (currency, enum semantics, or how weights combine), which is the baseline 3 case.

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

Purpose4/5

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

The description names a specific verb+resource (score a lead) and states the output form (a routing recommendation among route-to-sales, nurture, or disqualify), which is more than a restatement of the name. It does not, however, differentiate itself from near-identical siblings like lead_grading_calculator or lead_quality_intent_evaluator, so an agent cannot tell which lead-scoring tool to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives despite a large set of overlapping lead tools. The implied context (you have lead signals and want a routing call) is inferable from the output description, but nothing explicit is provided.

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

linkedin_ad_cost_threshold_calculatorLinkedIn Ad Cost Threshold CalculatorB
Read-onlyIdempotent
Inspect

Calculate implied CAC from LinkedIn CPC, landing conversion, and close rate, and check it against the maximum CAC a contract can fund. See the full version at https://rahuldsarker.co/calculators/linkedin-ad-cost-threshold-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
cpcYesLinkedIn cost per click
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
closeRatePctYesLead-to-customer close rate, as a percentage
contractValueYesContract value
grossMarginPctYesGross margin, as a percentage
landingConvPctYesLanding page conversion rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the two-step computation behavior (derive implied CAC, then compare to a threshold), but nothing about determinism, precision, or result shape; with annotations carrying the load, 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.

Conciseness3/5

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

The core purpose is front-loaded in a single well-formed sentence. However, the second sentence is a promotional link to an external 'full version' site that does not help an agent decide or invoke the tool, so it does not earn its place.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and annotations cover the safety profile, so the remaining descriptive burden is modest. The description supplies the formula inputs and the threshold comparison, making it complete enough for invocation, though it could note the LinkedIn-specific scope more explicitly.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters (including the optional currency code with its ISO 4217 pattern) are already documented in the schema. The description names the input concepts but adds no format, unit, or edge-case meaning beyond what the schema provides — baseline 3.

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

Purpose4/5

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

States a specific verb (Calculate) and a specific derived metric (implied CAC) with named inputs (LinkedIn CPC, landing conversion, close rate) plus a second check against the maximum fundable CAC. This is more specific than the generic CAC siblings, though it never names an alternative to disambiguate from ltv_cac_calculator or cpa_to_cac_scalability_matrix.

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

Usage Guidelines3/5

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

The description implies a use case (evaluating whether LinkedIn ad economics clear a contract's CAC ceiling) but never states when to prefer this over the many other CAC/LTV calculators in the sibling set, nor any exclusions. Usage is left to inference.

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

lookalike_audience_pool_calculatorLookalike Audience Pool CalculatorB
Read-onlyIdempotent
Inspect

Estimate the addressable pool from a lookalike percentage and market population, and grade seed audience quality. See the full version at https://rahuldsarker.co/calculators/lookalike-audience-pool-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
seedYesSeed audience size (customers/leads the model is built from)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
populationYesTarget market population (addressable users in the country/region)
lookalikePctYesLookalike percentage, e.g. 1 for tightest match, 10 for broadest

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 one genuine behavioral detail beyond the annotations: the tool both estimates a pool size and returns a seed-quality grade. It says nothing about validity ranges (e.g., acceptable lookalikePct bounds) or error behavior.

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

Conciseness4/5

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

The core sentence is efficient and front-loaded with the verb and inputs. The trailing URL sentence is promotional rather than functional and does not help the agent invoke the tool, which slightly dilutes an otherwise tight definition.

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

Completeness3/5

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

With an output schema present, return values need not be explained, and annotations plus 100% schema coverage carry most of the load. However, for a calculator sitting among many near-duplicate siblings, the absence of any disambiguation or input-range guidance leaves a real gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (population, lookalikePct, seed, currency) are already documented in the schema. The description only alludes to percentage and population, and says nothing about the optional currency parameter, so baseline 3 applies with no added semantic value.

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

Purpose4/5

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

The description states a specific verb ('Estimate') and resource ('addressable pool') and names the exact inputs (lookalike percentage, market population), plus a secondary function ('grade seed audience quality'). It is clear what the tool does, but it never distinguishes itself from close siblings such as retargeting_pool_size_estimator or total_addressable_market_estimator.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives despite a crowded field of similar audience/market-size calculators. The only routing signal is a promotional link, which gives the agent no decision criteria.

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

ltv_cac_calculatorLTV : CAC Ratio CalculatorB
Read-onlyIdempotent
Inspect

Calculate customer LTV, CAC, the LTV:CAC ratio, and CAC payback period. See the full version at https://rahuldsarker.co/calculators/cac-ltv

ParametersJSON Schema
NameRequiredDescriptionDefault
segmentNoCustomer segment for the benchmark verdict: smb, mid_market or enterprise (default smb)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
monthlyArpaYesAverage monthly revenue per account (ARPA)
newCustomersYesNew customers acquired in that same period
grossMarginPctYesGross margin, as a percentage
monthlyChurnPctYesMonthly customer churn rate, as a percentage
salesAndMarketingSpendYesTotal sales and marketing spend for the period

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this a safe, read-only, idempotent computation, so the safety profile is covered. The description adds that it also derives ratio and payback from the inputs, which is mild value, but discloses nothing about input assumptions, validity constraints, or error behavior.

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

Conciseness4/5

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

The operative sentence is front-loaded and efficient. The trailing external-link sentence does not help an agent select or invoke the tool and is mildly promotional, but the overall size is small and not padded.

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

Completeness3/5

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

With an output schema, full parameter coverage, and annotations, the description is functionally sufficient to invoke the tool. Given the extremely dense field of sibling calculators, however, it lacks the disambiguation an agent needs to choose correctly among several LTV/CAC-related tools.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters (including the segment enum, currency pattern, and the five required inputs) are already documented in the schema. The description adds no syntax or interpretation detail beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb plus the exact outputs computed (LTV, CAC, LTV:CAC ratio, CAC payback period), so the agent knows precisely what it produces. It does not, however, distinguish itself from close siblings like cac_payback_period_matrix or ltv_to_cac_ratio_health_grader, which cover overlapping ground.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus the many overlapping sibling calculators (health grader, payback matrix, LTV growth simulator). The only extra sentence points to an external 'full version' URL, which is promotional rather than routing guidance.

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

ltv_growth_multiplier_simulatorLTV Growth Multiplier SimulatorB
Read-onlyIdempotent
Inspect

Show how much gross-margin LTV grows when monthly churn improves, using LTV = ARPA x gross margin / monthly churn. See the full version at https://rahuldsarker.co/calculators/ltv-growth-multiplier-simulator

ParametersJSON Schema
NameRequiredDescriptionDefault
arpaYesMonthly revenue per account (ARPA)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
grossMarginPctYesGross margin, as a percentage
currentChurnPctYesCurrent monthly churn, as a percentage
improvedChurnPctYesImproved monthly churn, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds useful context by disclosing the exact computation model (LTV = ARPA x gross margin / monthly churn), but says nothing about units handling, edge cases like zero churn, or output shape beyond what the output schema provides.

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

Conciseness3/5

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

The first sentence is tight and front-loaded with the core purpose and formula. However, roughly a third of the text is a promotional outbound link to an external page rather than tool guidance, which dilutes conciseness.

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

Completeness3/5

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

With an output schema present, return values need not be explained, and the formula gives the agent the model behind the calculation. Still missing is any routing guidance among the many sibling calculators and any note on percentage vs. decimal input conventions, which leaves the definition merely adequate for a 5-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters (including the optional currency) are already documented in the schema; baseline is 3. The formula in the description corroborates how arpa, grossMarginPct, and churn are used, but adds no syntax or constraint detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Show how much gross-margin LTV grows when monthly churn improves') and even names the formula, so the agent knows precisely what is computed. It does not, however, contrast itself with nearby siblings such as ltv_cac_calculator or saas_churn_cohort_visualizer, so sibling differentiation is left to inference.

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

Usage Guidelines2/5

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

There is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The formula implies a churn-improvement scenario, but the agent must guess when this is preferable to the other churn/LTV tools in the catalog.

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

ltv_to_cac_ratio_health_graderLTV : CAC Ratio Health GraderB
Read-onlyIdempotent
Inspect

Grade the LTV:CAC ratio on a gross-margin basis against health bands, from losing money to under-investing. See the full version at https://rahuldsarker.co/calculators/cac-ltv

ParametersJSON Schema
NameRequiredDescriptionDefault
cacYesFully-loaded customer acquisition cost
ltvYesCustomer LTV (revenue basis)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
grossMarginPctYesGross margin, as a percentage, applied to LTV

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this a safe, idempotent, read-only calculation. The description adds the useful context that grading is gross-margin based and spans bands from 'losing money' to 'under-investing', which characterizes the output. It says nothing about thresholds or band definitions, so credit is moderate.

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

Conciseness3/5

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

The first sentence is tight and front-loaded. The second sentence is a promotional URL ('See the full version at ...') that does not help an agent select or invoke the tool, so it does not fully earn its place.

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

Completeness4/5

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

For a 4-parameter read-only calculator with a full output schema and full annotation coverage, the description is nearly sufficient. The one real gap is not routing the agent between this grader and the ltv_cac_calculator sibling.

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

Parameters3/5

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

Schema description coverage is 100% (each of ltv, cac, grossMarginPct, currency is documented in-schema), so the baseline is 3. The description's 'gross-margin basis' phrasing corroborates grossMarginPct but adds no new syntax or constraint information.

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

Purpose4/5

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

States a specific verb+resource+scope: 'Grade the LTV:CAC ratio on a gross-margin basis against health bands.' The grading-vs-calculation framing implicitly separates it from the sibling ltv_cac_calculator, but the sibling is never named, so an 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.

Usage Guidelines2/5

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

No when-to-use guidance, prerequisites, or exclusions. With a sibling literally named ltv_cac_calculator sitting in the same toolset, the description should say when to grade versus when to just compute the ratio, and it does not.

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

marketing_agency_pitch_bullshit_detectorMarketing Agency Pitch Bullshit DetectorA
Read-onlyIdempotent
Inspect

Score an agency pitch on whether it's grounded in real, verifiable outcomes or dressed-up vanity metrics and vague promises. Answer 6 checks and get a credibility score, a BS meter, and a verdict before you sign anything. See the full version at https://rahuldsarker.co/calculators/marketing-agency-pitch-bullshit-detector

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
pipelineYesTies work to pipeline/revenue, not just impressions: yes/vague/no. Weight 25
ownershipYesYou own the accounts, assets & data: yes/vague/no. Weight 15
reportingYesTransparent reporting & data access: yes/vague/no. Weight 15
guaranteesYesAvoids guaranteed-results / vanity promises: yes/vague/no. Weight 10
referencesYesRelevant references / case studies: yes/vague/no. Weight 15
attributionYesExplains how they attribute results: yes/vague/no. Weight 20

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safe, repeatable read profile is covered. The description adds that the tool performs "6 checks" and returns a credibility score, BS meter, and verdict, which is useful workflow context, though an output schema exists that likely documents returns.

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

Conciseness4/5

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

Front-loaded with the core purpose and outcome in the first sentence, then the payoff and verdict in the second. The trailing external link is mild promotional filler but does not obscure the essential content.

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

Completeness4/5

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

For a self-contained scoring calculator, the description conveys what it does, what it consumes (6 checks) and what it produces (score/verdict), and an output schema plus robust annotations cover the remaining structure. Nothing critical to correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100% with all six graded parameters carrying yes/vague/no enums and explicit weights. The description's "Answer 6 checks" maps loosely to them but adds no syntax or weighting detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Score) and resource (agency pitch) with the exact criteria (grounded in verifiable outcomes vs. vanity metrics). It is clearly distinguishable from every sibling calculator, none of which evaluate agency pitches.

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

Usage Guidelines4/5

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

"before you sign anything" gives clear timing context for when to invoke it. It lacks explicit when-not guidance or named alternatives, but no sibling tool overlaps this use case, so the practical risk is low.

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

marketing_budgetMarketing Budget CalculatorA
Read-onlyIdempotent
Inspect

Size an annual and monthly marketing budget as a percentage of revenue, based on a growth posture (maintain, grow, or aggressive) or a custom override. See the full version at https://rahuldsarker.co/calculators/marketing-budget

ParametersJSON Schema
NameRequiredDescriptionDefault
postureNoGrowth posture benchmark: 'maintain' (~6% of revenue, hold position), 'grow' (~11%, take share), or 'aggressive' (~18%, capture the market). Defaults to 'grow'.
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
customPctNoCustom percentage of revenue, overrides the posture benchmark when set
annualRevenueYesAnnual revenue

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds no behavioral context beyond what those annotations provide, but it also does not contradict them.

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

Conciseness4/5

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

The core purpose is front-loaded in a single efficient sentence. The trailing 'See the full version' link is extra and does not help an agent invoke the tool, but it is brief and does not obscure the main point.

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

Completeness5/5

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

With a fully described input schema, an output schema, and annotations covering the safety profile, the description contains everything an agent needs to call a read-only calculator correctly. Return values need not be explained.

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

Parameters3/5

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

Schema description coverage is 100%, so the week-typed schema already documents posture, currency, customPct, and annualRevenue in detail. The description mentions posture and custom override but adds no syntax, defaults, or constraints beyond the schema.

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

Purpose5/5

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

States a specific verb ('Size') and resource ('annual and monthly marketing budget as a percentage of revenue'), with the key posture/custom-override logic. The scope is clear enough to distinguish it from sibling budget allocation and ad spend tools, even though no sibling is named.

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

Usage Guidelines2/5

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

Provides no explicit when-to-use guidance or alternatives. The posture/custom override mention is parameter behavior, not tool-selection advice, so an agent must infer when this calculator is appropriate relative to the many sibling budget tools.

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

micro_budget_ad_feasibility_checkerMicro-Budget Ad Feasibility CheckerA
Read-onlyIdempotent
Inspect

Check whether a small daily ad budget can generate the ~50 weekly conversions platforms typically need to exit the learning phase. See the full version at https://rahuldsarker.co/calculators/micro-budget-ad-feasibility-checker

ParametersJSON Schema
NameRequiredDescriptionDefault
estCpaYesEstimated CPA (cost per optimization event)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
dailyBudgetYesDaily ad budget

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety and determinism are covered structurally. The description adds genuinely useful domain behavior — the ~50 weekly conversions learning-phase threshold — which is not derivable from the schema or annotations, though it says nothing about how the verdict is computed or what the returned result contains beyond what the output schema supplies.

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

Conciseness4/5

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

Two sentences, front-loaded with the actual check and its threshold; nothing is buried. The trailing promotional URL is not useful to an agent deciding how to invoke the tool, which slightly dilutes an otherwise tight definition.

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

Completeness4/5

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

With a 3-parameter schema at full description coverage, read-only annotations, and a declared output schema, the description only needs to convey the domain intent and success criterion, which it does. An agent can call it correctly; only the absence of alternatives/disambiguation keeps it from being fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so dailyBudget, estCpa and currency are already fully documented in the schema, including the ISO 4217 pattern and the 'omit for plain numbers' behavior. The description adds no parameter-level syntax or format detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: checks whether a small daily ad budget yields the ~50 weekly conversions needed to exit a platform's learning phase. That is concrete and distinct from generic CPA or spend calculators in the sibling list, though it does not name which sibling (e.g. cpl_cpa_calculator, ad_spend_waste_calculator) it should be preferred over.

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

Usage Guidelines3/5

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

The phrase 'small daily ad budget' implies the scenario in which this applies (early-stage / low-budget campaigns stuck in learning phase), but there is no explicit when-not guidance or named alternative for a larger-budget feasibility question. Usage context is inferable rather than stated.

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

micro_conversion_value_modelerMicro-Conversion Value ModelerB
Read-onlyIdempotent
Inspect

Back into a proxy dollar value for an early-funnel micro-conversion from the value of a won customer and the micro-to-customer conversion rate. See the full version at https://rahuldsarker.co/calculators/micro-conversion-value-modeler

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
wonCustomerValueYesValue of a won customer
microToCustomerRatePctYesMicro-action to customer conversion rate, as a percentage
monthlyMicroConversionsYesMicro-conversions per month

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 that the result is a 'proxy' estimate rather than a measured value, which is meaningful context, but says nothing about accuracy caveats, rounding, or how the currency omission behaves.

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

Conciseness4/5

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

One tight sentence front-loads the operation and its inputs with no wasted words. The trailing external URL is mildly extraneous marketing rather than tool guidance, but it costs little.

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

Completeness4/5

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

For a single-purpose read-only calculator with full schema coverage and an output schema, the description is sufficient to invoke correctly. Only the absence of any usage/alternative routing keeps it from being fully complete.

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

Parameters3/5

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

Schema description coverage is 100% and all four parameters are documented with descriptions and a regex pattern for currency, so the schema does the heavy lifting. The description restates the semantic link between wonCustomerValue and microToCustomerRatePct but adds no format, unit, or default detail beyond the schema.

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

Purpose4/5

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

The description gives a specific verb ('back into') and a precisely defined output ('proxy dollar value for an early-funnel micro-conversion'), plus the inputs it derives from. An agent can tell it is a back-calculation of micro-conversion value, though it never explicitly differentiates itself from adjacent modelers like video_conversion_modeler.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The only usage signal is the implied derivation logic from the two named inputs, which is not the same as guidance for selecting this tool over its many siblings.

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

mobile_checkout_friction_testerMobile Checkout Friction TesterB
Read-onlyIdempotent
Inspect

Score a mobile checkout flow's friction from step count, guest checkout, wallet pay, autofill, and mobile input types into a 0-100 score. See the full version at https://rahuldsarker.co/calculators/mobile-checkout-friction-tester

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesCheckout steps/screens: one (single page), two, or threeplus
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
walletPayYesWallet / one-tap pay (Apple/Google Pay) available
guestCheckoutYesGuest checkout available
autofillSupportedYesAutofill & saved details supported
correctMobileInputsYesCorrect mobile input types & keyboards used

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds the output range (0-100) and that the score derives from the listed factors, but does not describe result structure, error handling, or behavior on partial inputs. With annotations carrying the safety burden, this is adequate but not rich.

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

Conciseness4/5

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

Two sentences, with the core purpose front-loaded and no filler. The trailing marketing URL does not help an agent invoke the tool and is the only wasted element, keeping it just under a 5.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the schema fully documents all six parameters. The description covers what is computed and the score range, leaving only usage guidance missing for a simple, closed-world scoring calculator.

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

Parameters3/5

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

Schema description coverage is 100% and five of six parameters are enums, so the schema already documents every input thoroughly. The description names the five factors (steps, guest checkout, wallet pay, autofill, mobile input types) but adds no syntax, weighting, or format meaning 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.

Purpose4/5

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

States a specific verb (score) and resource (mobile checkout flow friction), enumerates the five input factors, and specifies the output (0-100 score). An agent can tell this apart from generic funnel or cart-abandonment calculators. It stops short of explicitly naming a sibling alternative, so it does not reach 5.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The second sentence only points to an external web page, which does not help the agent decide whether to call this tool versus friction_point_identifier or form_field_friction_cost_calculator.

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

mql_calculatorMQL CalculatorC
Read-onlyIdempotent
Inspect

Turn traffic and conversion rates into MQL volume, cost per lead, and cost per MQL. See the full version at https://rahuldsarker.co/calculators/mql-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
mqlRatePctYesLead-to-MQL rate, as a percentage
monthlySpendYesMonthly marketing spend driving this traffic
monthlyVisitorsYesMonthly website visitors
leadConversionPctYesVisitor-to-lead conversion rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds no behavioral context beyond what those annotations provide, such as calculation assumptions, input constraints, or result format. It does not contradict 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.

Conciseness3/5

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

The first sentence is front-loaded and useful, but the second sentence is a promotional link to an external full version that does not help an agent select or invoke the tool. The description is short, but one of its two sentences does not earn its place for tool usage.

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

Completeness3/5

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

The tool is a simple calculator with full schema coverage, annotations covering safety, and an output schema. The description is adequate for basic invocation and need not explain return values. However, it lacks usage guidance and sibling differentiation, leaving minor gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents all five parameters. The description does not add any additional parameter meaning or formatting guidance. Baseline 3 is appropriate when the schema carries the full parameter burden.

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

Purpose4/5

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

The description states a specific transformation: traffic and conversion rates into MQL volume, cost per lead, and cost per MQL. It clearly identifies the resource and outputs. However, it does not differentiate from similar sibling calculators such as cpl_cpa_calculator or lead_grading_calculator.

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

Usage Guidelines2/5

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

The description explains what the tool calculates but gives no guidance on when to use it instead of alternatives. There are no exclusions, prerequisites, or sibling references. The agent must infer usage from the purpose alone.

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

mql_to_sales_disconnect_analyzerMQL-to-Sales Disconnect AnalyzerA
Read-onlyIdempotent
Inspect

Measure the marketing spend wasted on MQLs that sales rejects, based on the accept rate between the two teams. See the full version at https://rahuldsarker.co/calculators/mql-to-sales-disconnect-analyzer

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
costPerMqlYesCost per MQL
monthlyMqlsYesMQLs generated per month
salesAcceptRatePctYesShare of MQLs sales accepts as genuine SQLs, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile of this pure computation is fully covered. The description adds only the accept-rate premise, which is definitional rather than behavioral; no assumptions, edge cases, or input sensitivity are disclosed beyond what the annotations and schema carry.

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

Conciseness4/5

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

The operational purpose is front-loaded in a single efficient sentence. The trailing 'See the full version at...' link is promotional filler that does not help an agent decide or invoke, slightly diluting an otherwise tight definition.

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

Completeness4/5

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

With an output schema present, the description needn't explain return values, and the annotations cover the safety profile; the schema documents all parameters. What remains is complete for a stateless calculator. Absent guidance on alternatives keeps it from a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are self-documented, establishing a baseline of 3. The description's mention of 'accept rate between the two teams' loosely maps to salesAcceptRatePct and 'marketing spend' to costPerMql, but adds no format, unit, or range detail beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource: 'Measure the marketing spend wasted on MQLs that sales rejects.' It goes beyond the title by defining the mechanism (accept rate between teams), distinguishing it from generic siblings like mql_calculator or ad_spend_waste_calculator. It stops short of explicitly naming a sibling it replaces, so 4 rather than 5.

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

Usage Guidelines3/5

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

Usage is implied by the purpose statement but no explicit when-to-use, when-not-to-use, or alternative routing is given. An agent can infer this is for MQL-rejection cost analysis, but nothing names the sibling calculators it should be chosen over. Minimum-viable guidance.

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

mrr_bridge_plannerMRR Bridge PlannerA
Read-onlyIdempotent
Inspect

Bridge starting MRR to ending MRR across new, expansion, resurrected, contraction, and churned movements. See the full version at https://rahuldsarker.co/calculators/mrr-bridge-planner

ParametersJSON Schema
NameRequiredDescriptionDefault
newMrrYesNew MRR from new logos
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
churnedMrrYesMRR lost to cancellations/churn
startingMrrYesStarting MRR
expansionMrrYesExpansion MRR from existing customers
contractionMrrYesMRR lost to downgrades/contraction
resurrectedMrrYesResurrected MRR from win-back customers

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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 no behavioral context beyond that (no note on units, rounding, or what 'bridging' returns), so it neither helps nor contradicts the structured hints.

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

Conciseness4/5

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

Two sentences, front-loaded with the core purpose. The second sentence is a promotional URL that does little for an agent, but it is short and does not obscure the primary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, complete annotations, and full schema coverage, all structured information an agent needs is present; the description supplies the high-level purpose. Nothing critical is missing for a pure deterministic calculator, though it could clarify units or the return shape of the bridge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including currency is already documented in the schema. The description's enumeration of movements mirrors those parameter names rather than adding new semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Bridge") and resource (MRR) and enumerates the exact movements involved (new, expansion, resurrected, contraction, churn), so the agent knows precisely what it computes. It does not differentiate itself from close siblings like mrr_to_arr_calculator or net_revenue_retention_forecaster, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope of the calculation implies when it applies (MRR waterfall / movement reconciliation), but there is no explicit when-to-use, when-not-to-use, or reference to alternative tools. The agent must infer the scenario from the metric list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mrr_to_arr_calculatorMRR to ARR CalculatorA
Read-onlyIdempotent
Inspect

Annualize MRR into ARR, with an optional 12-month projection from expected net-new monthly revenue. See the full version at https://rahuldsarker.co/calculators/mrr-to-arr-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
mrrYesCurrent monthly recurring revenue (MRR)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
monthlyChurnAndContractionNoExpected monthly dollars lost to churn and contraction, optional, defaults to 0
monthlyExpansionAndNewBusinessNoExpected monthly dollars added from new business plus expansion, optional, defaults to 0

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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 fully covered. The description adds the behavioral note that the projection is driven by expected net-new monthly revenue, but says nothing about how churn/contraction affects the projection or about output shape, leaving gaps beyond the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact clauses that front-load the core operation before the optional extension. The trailing marketing URL adds no call-time value and is the one element that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple single-purpose calculator with full schema coverage, rich annotations, and an output schema, so little is left for the description to carry. It adequately covers the primary and optional modes, with only a minor gap around how the churn/expansion parameters shape the projection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are self-documenting; baseline is 3. The description restates the projection input in prose but adds no syntax, bounds, or interaction detail (e.g., how churn and expansion combine) beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Annualize MRR into ARR') and adds a distinct secondary capability (optional 12-month projection). This distinguishes it from similarly-named siblings like arr_multiple_calculator and mrr_bridge_planner, though it never names or contrasts with them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose: feed in MRR to get ARR, optionally enable the projection. There is no statement of when to prefer this over sibling revenue calculators, nor any prerequisites or exclusions, so the agent must infer scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

net_promoter_score_impact_modelerNet Promoter Score Impact ModelerB
Read-onlyIdempotent
Inspect

Turn promoter and detractor percentages into NPS, net advocacy, and the organic referral pipeline promoters generate. See the full version at https://rahuldsarker.co/calculators/net-promoter-score-impact-modeler

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
promoterPctYesShare of respondents who are promoters (score 9-10), as a percentage
customerBaseYesCustomers surveyed or in the base
detractorPctYesShare of respondents who are detractors (score 0-6), as a percentage
referralRatePctYesShare of promoters who refer someone, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds which outputs are produced, but says nothing about the underlying model (e.g. passives ignored, NPS = promoter% - detractor%) or edge cases like percentages summing above 100. Adequate but thin for a pure-computation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and efficient. The second sentence is a promotional URL that does nothing to help an agent invoke the tool correctly, so it is wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema and 100% parameter coverage, the description needn't explain return values or field formats. It supplies the conceptual framing (NPS, net advocacy, referral pipeline) that an agent needs, and only the missing usage conditions keep it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters (including the optional currency pattern) are already documented. The description restates promoter/detractor percentages and referral flow without adding format, unit, or constraint detail beyond the schema — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific transformation ('turn promoter and detractor percentages into NPS, net advocacy, and the organic referral pipeline'), naming concrete outputs. It is clearly distinguishable from most siblings (ltv_cac, churn, etc.), though it doesn't explicitly contrast with any near-neighbor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no alternatives named. The inputs imply a survey/NPS context, but the agent gets no condition that selects this tool over any other growth-mode calculator.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

net_revenue_retention_forecasterNet Revenue Retention ForecasterA
Read-onlyIdempotent
Inspect

Project ARR over three years from net revenue retention (gross churn and expansion), compounded on the existing base with no new customers. See the full version at https://rahuldsarker.co/calculators/net-revenue-retention-forecaster

ParametersJSON Schema
NameRequiredDescriptionDefault
arrYesCurrent annual recurring revenue (ARR)
segmentNoCustomer segment for the benchmark verdict: smb, mid_market or enterprise (default smb)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
annualExpansionPctYesAnnual expansion from upsell and cross-sell, as a percentage
annualGrossChurnPctYesAnnual gross revenue churn, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, covering the safety profile. The description adds the modeling behavior (three-year compounding on the existing base, excluding new customers), which is useful context, but says nothing about return format or assumptions beyond the model itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight and front-loads the modeling scope. The second sentence is a promotional link to an external 'full version', which is slightly wasteful in a tool definition but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and annotations carry the safety profile. The description supplies the modeling assumptions an agent needs to select and call it correctly; only explicit usage routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter is already documented, including the segment enum's 'benchmark verdict' purpose and the currency format. The description adds only the conceptual relationship between churn and expansion, which is marginally helpful but does not extend the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Project ARR'), names the mechanism ('net revenue retention (gross churn and expansion)'), the horizon ('three years'), and the key constraint ('no new customers'). This scope detail cleanly separates it from siblings like expansion_revenue_impact_simulator or mrr_bridge_planner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement or named alternative. However, the scoping phrase 'compounded on the existing base with no new customers' implicitly tells the agent this is for base-only retention forecasting rather than new-customer growth modeling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

no_show_rate_revenue_restorerNo-Show Rate Revenue RestorerA
Read-onlyIdempotent
Inspect

Calculate the revenue lost each month to demo no-shows, and how much would be recovered by cutting the no-show rate by 5 or 10 points. See the full version at https://rahuldsarker.co/calculators/no-show-rate-revenue-restorer

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
avgDealValueYesAverage deal value
noShowRatePctYesCurrent no-show rate, as a percentage
demosBookedPerMonthYesDemos booked per month
heldDemoCloseRatePctYesClose rate for held demos, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A4/5.0
Behavior3/5

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 covered. The description adds the calculation's scenario focus but does not disclose assumptions, currency handling, or other behavioral details beyond what the schema and annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and directly states what the tool calculates. The second sentence is a promotional link, which is not essential for tool invocation, but overall the description remains short and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a deterministic calculator with full schema coverage, rich annotations, and an output schema. The description sufficiently explains the calculation scope and recovered-rate scenarios, so an agent has what it needs to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description does not add parameter-level meaning beyond the high-level calculation purpose, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: calculating monthly revenue lost to demo no-shows and recovery from reducing the no-show rate by 5 or 10 points. This is granular enough to distinguish it from the many generic marketing and revenue calculators in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context—analyzing demo no-show revenue loss and scenario-based recovery—but does not explicitly say when to avoid it or name alternative tools. The context is sufficient for an agent to know when this calculator applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organic_traffic_value_monetizerOrganic Traffic Value MonetizerB
Read-onlyIdempotent
Inspect

Value organic search traffic in ad-equivalent spend (clicks x CPC), and split out the non-branded portion that represents genuine, defensible SEO value. See the full version at https://rahuldsarker.co/calculators/organic-traffic-value-monetizer

ParametersJSON Schema
NameRequiredDescriptionDefault
avgCpcYesAverage cost-per-click if these keywords were paid
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
organicClicksYesMonthly organic clicks
brandedSharePctYesBranded share of traffic, as a percentage (traffic you would likely get for free anyway)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 the computation model (ad-equivalent spend via clicks x CPC) but nothing about rate limits, auth, or edge cases, so the incremental value is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded and dense with useful detail. The second sentence is a promotional link to an external site, which is waste for an agent deciding how to invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full schema coverage and an output schema present, the description need not explain return values; it adequately conveys what is computed. It is largely complete for a deterministic, four-parameter calculator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (organicClicks, avgCpc, brandedSharePct, currency) is already documented, and the description names none of them. The mention of 'clicks x CPC' and the non-branded split loosely maps to the inputs but adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names a specific verb and resource ('Value organic search traffic'), gives the exact formula ('clicks x CPC'), and clarifies the branded/non-branded split. No sibling is named, so it doesn't explicitly route against the many other calculator tools, but the resource and formula make it distinctive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to use this tool versus alternatives such as google_search_impression_share_value_estimator or ppc_click_volume_predictor. Usage context is only implied by the tool's domain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

page_speed_leak_calculatorPage Speed Leak CalculatorB
Read-onlyIdempotent
Inspect

Estimate the extra conversions and revenue recovered by cutting page load time, using an industry-average per-second conversion penalty. See the full version at https://rahuldsarker.co/calculators/page-speed-leak-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
monthlyVisitorsYesMonthly visitors
lossPerSecondPctNoConversion loss per second of load time, as a percentage, defaults to 7 (studies cluster around 5-7%)
conversionRatePctYesCurrent conversion rate, as a percentage
targetLoadSecondsYesTarget page load time, in seconds
currentLoadSecondsYesCurrent page load time, in seconds
valuePerConversionYesValue per conversion

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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). The description adds one genuinely useful behavioral fact: the result is modeled on an industry-average per-second conversion penalty rather than measured data, which tells the agent outputs are approximations. It stops there — no note on sensitivity to the penalty assumption or confidence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in one efficient sentence. The second sentence is a promotional URL for an external 'full version' that does not help an agent invoke the tool, so it costs a little structure credit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% parameter documentation, the description does not need to explain return values. It is complete enough for invocation, with the only gap being the absence of guidance on when this estimator is the right choice among the large calculator family.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all seven parameters, including the 7% default for lossPerSecondPct and the ISO 4217 currency pattern. The description only alludes to the per-second penalty model, adding marginal meaning beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Estimate') and a concrete resource (extra conversions and revenue recovered by cutting page load time), so an agent can tell what it computes. It does not, however, differentiate itself from the many other revenue/conversion calculators in the sibling list, so sibling discrimination rests on the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this versus alternatives (e.g. ad_spend_waste_calculator or cart_abandonment_calculator), no prerequisites, no mention of required inputs already being known. The only routing-ish content is a link to a 'full version', which is not actionable for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_marketing_margin_protectorPerformance Marketing Margin ProtectorB
Read-onlyIdempotent
Inspect

Calculate the break-even and maximum CPA that protect a target profit margin, and check current CPA against that ceiling. See the full version at https://rahuldsarker.co/calculators/performance-marketing-margin-protector

ParametersJSON Schema
NameRequiredDescriptionDefault
aovYesAverage order / contract value
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
currentCpaYesCurrent CPA
grossMarginPctYesGross margin, as a percentage
targetProfitPctYesTarget profit margin to keep after ad cost, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world scope, so safety is covered. The description adds useful behavioral context about the three computed outputs, but nothing about currency behavior, result format, or any constraints, so it is only modestly additive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded and information-dense, but the trailing external URL is promotional rather than invocation-relevant and consumes part of a very short description. Slightly wasteful rather than harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter documentation, the description needs only to convey purpose and scenario, which it does. The missing piece is guidance on when to prefer this over the other CPA and ROAS calculators, which would complete it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters (aov, grossMarginPct, targetProfitPct, currentCpa, currency) are already documented in the schema. The description adds no syntax, unit, or edge-case guidance beyond that, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states specific verbs and a precise resource: break-even CPA, maximum CPA, and a check of current CPA against that ceiling. It is clearly a margin-protection CPA calculator, but it does not name or distinguish itself from the many nearby siblings (cpl_cpa_calculator, linkedin_ad_cost_threshold_calculator, roas_calculator), leaving the agent to infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The implied use case (deciding whether current CPA fits inside a profit-margin ceiling) is readable from the description, but there is no explicit when-to-use/when-not-to-use statement and no pointer to an alternative tool for adjacent CPA questions. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pipeline_velocity_equation_enginePipeline Velocity Equation EngineB
Read-onlyIdempotent
Inspect

Calculate sales velocity, the revenue your pipeline generates per day, from open opportunities, win rate, deal value, and cycle length. See the full version at https://rahuldsarker.co/calculators/pipeline-velocity-equation-engine

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
cycleDaysYesAverage sales cycle length, in days
winRatePctYesWin rate, as a percentage
avgDealValueYesAverage deal value (ACV)
openOpportunitiesYesNumber of open opportunities

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 the meaning of the result (revenue per day) but says nothing about error behavior, edge cases (e.g. zero cycleDays), or output shape beyond what the output 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with the core purpose and inputs front-loaded. The trailing external link to the calculator page is promotional rather than operational and slightly dilutes focus, but the description remains short and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full input schema, an output schema, and complete annotations, the description only needs to convey what the tool computes and from what. It does that adequately. The missing piece is usage context relative to the many sibling calculators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented with units and format (percent, ACV, ISO 4217 code). The description only restates the four required inputs in prose and adds no syntax, unit, or constraint detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (calculate) and resource (sales velocity), and even defines the output semantics: 'the revenue your pipeline generates per day'. The four required inputs are named. It stops short of distinguishing itself from adjacent siblings such as sales_cycle_length_forecaster or saas_quick_ratio_engine.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no routing to or away from any alternative tool. The agent has to infer from the name alone whether this or a sibling calculator applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_ios14_blended_attribution_modelerPost-iOS14 Blended Attribution ModelerB
Read-onlyIdempotent
Inspect

Compare summed platform-claimed revenue against actual backend revenue to quantify over-reporting and the true blended ROAS. See the full version at https://rahuldsarker.co/calculators/post-ios14-blended-attribution-modeler

ParametersJSON Schema
NameRequiredDescriptionDefault
adSpendYesTotal ad spend
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
actualRevenueYesActual revenue from backend / finance system
platformRevenueYesSum of revenue all ad platforms report

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 what the computation produces (over-reporting delta and blended ROAS), but says nothing about assumptions, edge cases, or how inputs are validated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight and front-loaded with the core comparison. The second sentence is a promotional link to an external calculator, which adds little operational value for an agent deciding whether to call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile. The main remaining gap is when-to-use guidance, but for a simple four-input calculator the description is sufficient to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the four parameters are already documented, making 3 the baseline. The description implies the roles of platformRevenue and actualRevenue but does not mention adSpend or currency format beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (compare) and names the exact resources being compared (platform-claimed revenue vs. backend revenue) plus the derived outputs (over-reporting, true blended ROAS). That is enough to separate it from roas_calculator or roas_to_mer_converter, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many attribution/ROAS-adjacent siblings (roas_calculator, roas_to_mer_converter, ad_spend_waste_calculator), and no prerequisites or exclusions. Usage is only implied by the tool's name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ppc_click_volume_predictorPPC Click Volume PredictorA
Read-onlyIdempotent
Inspect

Predict monthly clicks, conversions, and effective CPA from budget, CPC, and conversion rate, and check whether volume clears the ~50 weekly conversions platforms need to exit learning. See the full version at https://rahuldsarker.co/calculators/ppc-click-volume-predictor

ParametersJSON Schema
NameRequiredDescriptionDefault
cpcYesAverage cost per click
budgetYesMonthly budget
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
convRatePctYesClick-to-conversion rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.6/5.0
Behavior3/5

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 the ~50 weekly conversions framework, which is useful domain context, but says nothing about determinism, rounding, or currency behavior beyond what the schema covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional content is a single front-loaded sentence, which is good, but it is bloated by a trailing promotional URL that gives the agent no invocation value and is not a legitimate parameter or usage note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the safety profile, the description only needs to convey scope, which it does: inputs, predicted outputs, and the learning-phase check. The missing piece is guidance on alternatives among the many sibling calculators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all four parameters (including currency with its ISO 4217 pattern) are documented in the schema. The description names three of the four inputs but adds no format or unit 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (predict) with concrete outputs (monthly clicks, conversions, effective CPA) and inputs (budget, CPC, conversion rate), plus the distinctive learning-phase threshold check. This separates it from siblings like cpl_cpa_calculator or roas_calculator, which do not model click volume or learning-phase exit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (predicting PPC volume and checking learning-phase viability) but never states when to pick this over sibling calculators such as ad_spend_waste_calculator or meta_budget tools, nor any 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.

pricing_elasticity_sandboxPricing Elasticity SandboxB
Read-onlyIdempotent
Inspect

Model how a price change affects volume, revenue, and gross profit given a price elasticity of demand. See the full version at https://rahuldsarker.co/calculators/pricing-elasticity-sandbox

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesCurrent price
volumeYesCurrent volume, units per month
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
unitCostYesUnit / delivery cost
elasticityYesPrice elasticity of demand: percent volume change per 1% price change, usually negative
priceChangePctYesPrice change, as a percentage (positive = increase, negative = cut)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that (no notes on formula assumptions, precision, or that the result is a projection), so it neither helps nor contradicts; a 3 is the right baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional sentence is front-loaded and efficient, but the trailing 'See the full version at <URL>' is promotional filler that consumes space without helping an agent invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage, the description only needs to convey purpose, which it does. It is reasonably complete, though it omits the modeling assumption (linear elasticity) that would tell an agent when results are valid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (price, volume, unitCost, priceChangePct, elasticity, currency) is already documented in the schema. The description only restates the conceptual model and adds no syntax, units, or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Model') and the exact outcomes it computes (volume, revenue, gross profit) plus the driving input (price elasticity of demand). An agent can distinguish it from generic margin or pricing-page tools, though it never names a sibling it overlaps with (e.g. gross_margin_impact_calculator).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus the many other pricing/margin calculators in the sibling list, nor any stated prerequisites. Usage is only implied by the scenario described.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pricing_page_architecture_graderPricing Page Architecture GraderA
Read-onlyIdempotent
Inspect

Score a pricing page's choice architecture across six weighted criteria (tiers, highlighting, anchoring, comparison, CTA, billing toggle) into a 0-100 score. See the full version at https://rahuldsarker.co/calculators/pricing-page-architecture-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
oneCtaPerTierYesOne clear CTA per tier (weight 15)
anchoringPresentYesAnchoring, a high tier frames the others (weight 15)
threeToFourTiersYes3-4 tiers, not too few, not overwhelming (weight 15)
clearFeatureComparisonYesClear feature comparison across tiers (weight 20)
billingToggleWithSavingsYesMonthly/annual toggle with savings shown (weight 15)
recommendedPlanHighlightedYesA recommended / most-popular plan is highlighted (weight 20)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds that this is a deterministic weighted scoring computation producing a bounded 0-100 result, which is useful behavioral context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tightly front-loaded and complete. The second sentence is a promotional pointer to an external 'full version' that does not help an agent invoke the tool, so it does not fully earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the rich 100%-coverage input schema covers the criteria and weights. The description is complete enough for a self-contained scoring calculator, though it omits any routing guidance relative to siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter carrying its own description and weight, and six of seven have enums. The description's criterion list mirrors the schema without adding syntax or format detail, so the schema does the heavy lifting and the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (score) on a specific resource (pricing page's choice architecture), enumerates the six weighted criteria it evaluates, and declares the output form (0-100 score). An agent can distinguish it from siblings like pricing_elasticity_sandbox or other '*_grader' tools without inspecting the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The list of criteria implies the applicable context (a pricing page with tiers, CTAs, billing toggle), but there is no explicit when-to-use, when-not-to-use, or named alternative among the many sibling graders. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

product_led_growth_feasibility_graderProduct-Led Growth Feasibility GraderA
Read-onlyIdempotent
Inspect

Score whether a product can support a self-serve, product-led growth motion, versus a hybrid or sales-led approach, across 5 weighted criteria. See the full version at https://rahuldsarker.co/calculators/product-led-growth-feasibility-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
ttvYesTime-to-value is minutes, not weeks: yes/partial/no. Weight 25
priceYesPrice point supports self-serve / low ACV: yes/partial/no. Weight 15
valueYesValue is obvious before talking to sales: yes/partial/no. Weight 20
viralYesNatural virality or collaboration built in: yes/partial/no. Weight 15
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
selfserveYesA user can onboard with no human help: yes/partial/no. Weight 25

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds the weighted-scoring model (5 weighted criteria) which is useful context, but says nothing about how ties, partial answers, or missing optional inputs are handled. It neither contradicts nor richly extends 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence front-loads the purpose and criterion count. The trailing marketing URL (advertising 'the full version') is low-value for an agent deciding invocation, which keeps this from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, annotations cover safety, and the six-parameter schema is fully self-documenting. The description supplies the scoring concept, leaving only routing among similar grading siblings unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: all five enum inputs carry their own descriptions with per-criterion weights, and the optional currency parameter has a format example. The description adds no parameter-level detail beyond '5 weighted criteria', so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: score whether a product can support a self-serve PLG motion versus hybrid or sales-led, across 5 weighted criteria. That is clear and actionable, but it never contrasts itself with close siblings such as product_market_fit_scoring_grader or freemium_to_paid_pipeline_modeler, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'versus a hybrid or sales-led approach' implies the decision context for use, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many grading/calculator siblings. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

product_market_fit_scoring_graderProduct-Market Fit Scoring GraderB
Read-onlyIdempotent
Inspect

Score product-market fit signals (the "very disappointed" test, retention, organic pull, NPS) into a weighted 0-100 PMF score and scale-readiness verdict. See the full version at https://rahuldsarker.co/calculators/product-market-fit-scoring-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
npsYesStrong NPS & referrals: strong, ok, or weak/no. Weight 20
organicYesOrganic / word-of-mouth pull: strong, ok, or weak/no. Weight 20
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
retentionYesRetention curve flattens (users stick): strong, ok, or weak/no. Weight 30
disappointedYes"Very disappointed if it went away" test (>40%): strong, ok (mixed), or weak/no. Weight 30

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, non-destructive, and closed-world, so the safety profile is covered. The description adds that this is a deterministic weighted aggregation with a verdict output, but says nothing about edge cases (e.g., missing/partial signals) or how ties or thresholds are resolved. Adequate given the low burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and output range. The trailing marketing link is minor noise rather than a structural fault, but it does not earn its place as tool guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no prose explanation, and the description covers inputs, scoring range, and the verdict. For a self-contained calculator this is nearly complete; only the absence of any selection guidance against the many sibling graders holds it back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: each parameter already documents its enum values and its weight. The description only restates the signal names ('very disappointed' test, retention, organic pull, NPS) without adding format, ordering, or interdependence details 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Score product-market fit signals ... into a weighted 0-100 PMF score and scale-readiness verdict') and enumerates the input signals, so an agent knows exactly what the tool produces. It stops short of distinguishing itself from nearby sibling graders like product_led_growth_feasibility_grader or value_prop_strength_grader.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, when not to, or which sibling alternative applies for adjacent questions. The only extra content is a promotional URL, which gives no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

product_tour_effectiveness_graderProduct Tour Effectiveness GraderB
Read-onlyIdempotent
Inspect

Model a multi-step product tour funnel from start through completion to activation, and flag the biggest drop-off step. See the full version at https://rahuldsarker.co/calculators/product-tour-effectiveness-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
toursStartedYesTours started per month
activationPctYesPercentage of finishers who activate (reach the product's aha moment)
step1CompletionPctYesPercentage who complete step 1
step2CompletionPctYesPercentage who go from step 1 to step 2
step3CompletionPctYesPercentage who go from step 2 to step 3 (finish)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it as a read-only, idempotent, non-destructive, closed-world operation, so the safety profile is covered. The description adds that the tool flags the biggest drop-off step, a useful behavioral outcome, but does not discuss assumptions or limitations of the funnel model.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded and efficient. The second sentence is a promotional link to an external 'full version' that consumes space without helping the agent invoke the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and annotations cover the safety profile while the schema documents all six parameters. The description names the funnel stages and the flagged output, so it is complete enough to invoke correctly, though it omits any interpretation guidance for the results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including currency and the step completion percentages is already documented in the schema. The description adds no additional semantics beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (model) and resource (multi-step product tour funnel from start through completion to activation) plus the deliverable (flag the biggest drop-off step). An agent can distinguish it from siblings like product_led_growth_feasibility_grader or product_usage_frequency_grader, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative selection guidance is given. The only additional sentence points to an external marketing URL for a 'full version', which does not help the agent decide whether to call this tool versus a sibling grader.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

product_usage_frequency_graderProduct Usage Frequency GraderB
Read-onlyIdempotent
Inspect

Grade product stickiness from DAU/MAU into bands from idle tab to daily utility. See the full version at https://rahuldsarker.co/calculators/product-usage-frequency-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
dauYesDaily active users
mauYesMonthly active users
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

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 fully covered by structured data. The description adds the banding outcome ('idle tab to daily utility'), which is useful context, but says nothing about how DAU/MAU must relate (e.g. DAU <= MAU) or what the bands mean.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is well front-loaded and tight. The trailing external URL consumes roughly half the description and provides no value to an invoking agent, which dilutes an otherwise efficient definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the input schema is fully documented. What remains missing is any statement of the DAU/MAU constraint or interpretation of the bands, making the definition adequate but not complete for a scoring tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with dau, mau and the ISO 4217 currency pattern all documented in the schema. The description adds nothing about parameter syntax or constraints, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (grade) and resource (product stickiness from DAU/MAU) plus the output bands ('idle tab to daily utility'), which is enough to tell it apart from the many other *grader siblings. It stops short of naming which sibling to prefer, but the purpose itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no pointer to an alternative. The second sentence is a promotional external link rather than usage context, so an agent gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_contentRead an article or case study in fullA
Read-onlyIdempotent
Inspect

Get the full text of one rahuldsarker.co article or case study, by its slug or URL (from search_content), so you can quote it accurately. Always cite the returned link.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe slug or URL, e.g. "why-server-side-capi-cut-signal-loss" or https://rahuldsarker.co/insights/…

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so safety is covered. The description adds a real behavioral instruction beyond the annotations - 'Always cite the returned link' - which tells the agent what to do with the output. It does not discuss size limits or truncation, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler, with the core action front-loaded and the usage chain and citation instruction following. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with full annotation coverage and no output schema, the definition covers what is returned (full text) and the citation requirement. It could note output length or truncation behavior, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the single parameter is fully documented in the schema with examples. The description's mention of 'slug or URL' merely restates the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get the full text') and resource ('one rahuldsarker.co article or case study'), scoped to a single item. It clearly distinguishes itself from the sibling search_content, which is the discovery tool feeding this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It indicates the slug/URL comes from search_content, implying the discover-then-read workflow, and states the goal ('so you can quote it accurately'). No explicit exclusions are given, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

renewals_pipeline_health_graderRenewals Pipeline Health GraderA
Read-onlyIdempotent
Inspect

Grade an account renewal on weighted 90-day signals (adoption, sponsor strength, support sentiment, realised value) and quantify ARR at risk. See the full version at https://rahuldsarker.co/calculators/renewals-pipeline-health-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
accountArrYesAccount ARR
productAdoptionTrendYesProduct adoption / usage trend, weight 30
realisedValueVsGoalsYesRealised value vs. goals, weight 30
supportSentimentTrendYesSupport sentiment / ticket trend, weight 20
executiveSponsorStrengthYesExecutive sponsor strength, weight 20

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety behavior needs no restatement. The description adds the 90-day weighted-scoring framing and the ARR-at-risk outcome, but no computational caveats beyond what the schema's weight annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and outputs are front-loaded in one dense sentence; the second sentence is purely a promotional link, which is the only element not strictly earning its place. Still compact and well-ordered overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values are covered, and annotations cover the safety profile. Combined with a 100%-documented parameter schema this is nearly complete; only the external-link sentence and absent usage prerequisites keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each input has an enum plus a weight note, so the schema does the heavy lifting. The description only restates the same four signal names and adds no extra meaning (no rating criteria, no threshold interpretation).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Grade) and resource (an account renewal), names the four weighted signals it consumes, and adds the concrete second outcome (ARR at risk). That combination distinguishes it from adjacent graders such as ltv_to_cac_ratio_health_grader or product_usage_frequency_grader without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is only implied: an agent can infer it is for renewal-risk assessment of a single account, but there is no explicit when-to-use, no prerequisites (e.g. data needed to rate the signals), and no pointer to alternatives like net_revenue_retention_forecaster or saas_churn_cohort_visualizer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_callbackAsk Rahul D Sarker to get in touchAInspect

Send the person's name, email, phone and what they need help with to Rahul D Sarker, who replies directly. Only use when the person asks to be contacted. Where the client supports forms, they review and submit the details themselves; otherwise show them the details and set confirmed only after they agree. To pick a call time instead, use check_availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
phoneNoWith country code, e.g. +1 415 555 0100
companyNo
messageNoWhat they want help with, in their words
lastNameNo
confirmedNoTrue only after the person has seen these exact details and asked to be contacted
firstNameNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say the call is a non-idempotent write to an open world; the description adds the real behavioral picture: the details go to a specific human who replies directly, the client either renders a form for self-submission or shows the details manually, and 'confirmed' must only be set after explicit agreement. That consent-gating flow is valuable context beyond the annotations, though rate limits, failure behavior, and what happens after submission are unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and recipient, then the usage constraint, then the confirmation workflow and alternative tool. No filler or restated schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, zero-required write tool with no output schema, the description covers intent, the consent gate, and the sibling alternative well. The remaining gap is mundane: no explanation of what 'company' is for or what a caller should expect as a response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 43%, but the description maps its first sentence onto the core fields (name, email, phone, message) and restates the meaning of the 'confirmed' flag. It adds nothing, however, about 'company' or which fields matter, so it partially compensates for the low coverage rather than fully explaining the 7-parameter surface.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete action (send the person's name, email, phone, and need to Rahul D Sarker) with a named recipient and outcome ('who replies directly'). It also names the sibling check_availability it must not be confused with, so an agent can separate the two 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not: 'Only use when the person asks to be contacted,' plus an alternative route for a different intent ('To pick a call time instead, use check_availability'). Both the trigger and the competing intent are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retargeting_pool_size_estimatorRetargeting Pool Size EstimatorB
Read-onlyIdempotent
Inspect

Estimate the addressable retargeting pool from monthly visitors, window, and match rate, plus the budget needed to hit a target weekly frequency. See the full version at https://rahuldsarker.co/calculators/retargeting-pool-size-estimator

ParametersJSON Schema
NameRequiredDescriptionDefault
cpmYesRetargeting CPM
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
visitorsYesMonthly unique visitors
targetFreqYesTarget weekly impressions per user
windowDaysYesRetargeting window, in days
matchRatePctYesCookie / match rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds only the calculation scope and a link to a fuller version; it does not disclose assumptions, input limitations, auth needs, or rate behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler. The core estimate is front-loaded, the secondary budget output follows, and the link is deferred to the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the schema fully documents the six parameters. The description is complete enough for calling the tool, though it could note estimator assumptions or that currency is optional.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema carries the parameter documentation and the baseline is 3. The description maps "monthly visitors," "window," and "match rate" to inputs and mentions budget, but adds no syntax, unit clarification, or handling for the optional currency parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Estimate") and resource ("addressable retargeting pool") and adds the secondary output ("budget needed to hit a target weekly frequency"). It is clear but does not explicitly distinguish itself from similar siblings like lookalike_audience_pool_calculator or total_addressable_market_estimator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the calculator computes but gives no when-to-use guidance, no conditions for choosing it over alternatives, and no exclusions. A user must infer its place from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revops_maturity_benchmarkerRevOps Maturity BenchmarkerB
Read-onlyIdempotent
Inspect

Score RevOps maturity across five dimensions (systems, attribution, governance, forecasting, automation) on a 1-4 scale and identify the weakest area. See the full version at https://rahuldsarker.co/calculators/revops-maturity-benchmarker

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
dataGovernanceYesData governance & hygiene, 1=Reactive/manual to 4=Optimized
forecastingRigorYesForecasting & pipeline rigor, 1=Reactive/manual to 4=Optimized
processAutomationYesProcess automation & enablement, 1=Reactive/manual to 4=Optimized
systemConnectivityYesSystem connectivity (CRM ↔ MAP ↔ data), 1=Reactive/manual to 4=Optimized
attributionAndReportingYesAttribution & reporting, 1=Reactive/manual to 4=Optimized

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly=true, idempotent=true, destructive=false, and a closed-world scope, so the safety profile is fully covered. The description only adds that the tool both scores and surfaces the weakest dimension, without stating score aggregation, weighting, or what happens with optional currency omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence delivers the verb, dimensions, scale, and key output with no padding. The trailing URL is mildly promotional and adds no invocation value, costing a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile. The remaining gap is usage context — for a tool sitting among ~100 calculation siblings, the description never says when this one is the right pick.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented with its 1-4 anchor scale. The description's list of dimensions ('systems, attribution, governance, forecasting, automation') loosely maps to the five required params but adds no syntax, defaults, or edge-case behavior beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Score') and resource ('RevOps maturity'), enumerates the five dimensions, and specifies the 1-4 scale plus the derived output ('identify the weakest area'). It does not, however, differentiate itself from the closest siblings (e.g. gtm_audit_scorecard), so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus the many sibling graders/scorecards, no prerequisites, and no exclusions. The reader must infer applicability from the dimension names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roas_calculatorROAS & Break-even ROAS CalculatorB
Read-onlyIdempotent
Inspect

Calculate ROAS, ACOS, break-even ROAS, and profit from ad revenue, ad spend, and gross margin. See the full version at https://rahuldsarker.co/calculators/roas

ParametersJSON Schema
NameRequiredDescriptionDefault
spendYesTotal ad spend
revenueYesRevenue attributed to the ad spend
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
marginPctYesGross margin, as a percentage, e.g. 60 for 60%

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare this as read-only, idempotent, non-destructive, and closed-world, so the safety profile is well covered. The description adds useful context about what is computed, but it does not go beyond that to disclose return format, edge-case behavior, or currency handling beyond what the schema already states. No annotation contradiction is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core calculation output is stated first. The second sentence is a promotional link to an external full version, which is not strictly necessary for invoking the tool but does not obscure the main point. It could be tightened slightly, but it is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only calculator with a fully described input schema, rich annotations, and an existing output schema, the description is largely complete. It tells the agent what metrics are produced and what primary inputs are expected. It leaves out usage routing and some optional-parameter context, but those are minor against the structured data already available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters in detail. The description maps three of them to business terms (ad revenue, ad spend, gross margin) but adds no syntax, format, or optionality details beyond the schema, and it does not mention the optional currency parameter. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Calculate) and lists the exact outputs it produces: ROAS, ACOS, break-even ROAS, and profit. It clearly distinguishes itself from generic calculators by naming those metrics, though it does not explicitly differentiate itself from the sibling roas_to_mer_converter or other ad-spend calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or sibling tools such as roas_to_mer_converter or ad_spend_waste_calculator. At best, its context is implied by the listed metrics and inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roas_to_mer_converterROAS to MER ConverterB
Read-onlyIdempotent
Inspect

Compare a platform-reported ROAS against your true blended Marketing Efficiency Ratio (MER) to see how much pixels over-claim. See the full version at https://rahuldsarker.co/calculators/roas-to-mer-converter

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
totalSpendYesTotal marketing spend across all channels
platformRoasYesBlended ROAS as reported by the ad platform(s)
totalRevenueYesTotal revenue from all sources (backend/store, not the ad platform)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare a read-only, idempotent, non-destructive, closed-world computation, so the safety profile is fully covered. The description adds the framing that the output reveals platform over-claiming, but nothing about assumptions, required data sources, or edge cases; for a stateless calculator the bar is low, so a 3 is fair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and earns its place. The second sentence is purely a promotional link to an external calculator page, which does not help an agent decide or invoke, so it dilutes rather than informs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage, the description need not explain return values, and the core computation is conveyed. However, in a sibling set containing roas_calculator and several attribution modelers, the lack of any routing guidance leaves a real gap for correct tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – totalRevenue, totalSpend, platformRoas and currency are each documented in the schema, including the ISO 4217 pattern and the backend-vs-platform distinction. The description adds no parameter meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific comparison verb and both resources: platform-reported ROAS vs. true blended Marketing Efficiency Ratio, ending with the concrete outcome (how much pixels over-claim). The purpose is unambiguous, but it never distinguishes itself from the sibling roas_calculator or post_ios14_blended_attribution_modeler.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to reach for this tool versus roas_calculator, nor any prerequisites or when-not-to-use guidance. The agent must infer usage entirely from the one-line purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rto_adjusted_roas_calculatorRTO-Adjusted ROAS Calculator (India COD)A
Read-onlyIdempotent
Inspect

Work out ROAS after Return-to-Origin (RTO) on cash-on-delivery orders: delivered revenue, RTO cost, RTO-adjusted ROAS and effective cost per delivered order. See the full version at https://rahuldsarker.co/calculators/rto-adjusted-roas-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
aovYesAverage order value
spendYesAd spend for the period
ordersYesOrders placed from that spend
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
codRtoPctYesRTO rate on COD orders, as a percentage
codSharePctYesShare of orders paid cash on delivery, as a percentage
prepaidRtoPctYesRTO rate on prepaid orders, as a percentage
shippingPerRtoYesForward plus reverse shipping cost per RTO order

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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 lower. The description adds useful output semantics (what gets computed), but no interpretation guidance, assumptions, or edge-case behavior 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core computation. The trailing link to the 'full version' is promotional and does not help an agent invoke the tool, which slightly dilutes an otherwise tight description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the schema covers all parameters. For a pure deterministic calculator with complete annotations, the description supplies what the agent needs; only explicit sibling routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (spend, orders, aov, codSharePct, codRtoPct, prepaidRtoPct, shippingPerRto, currency) is already documented. The description adds no additional parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: it computes ROAS adjusted for Return-to-Origin on COD orders, and it enumerates the outputs (delivered revenue, RTO cost, adjusted ROAS, cost per delivered order). This clearly separates it from the generic roas_calculator and roas_to_mer_converter, though it never explicitly names those siblings as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by 'on cash-on-delivery orders' and the '(India COD)' framing, so an agent can infer the scenario. But there is no explicit when-to-use, when-not-to-use, or routing to roas_calculator for non-COD cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rule_of_40_sandboxRule of 40 SandboxA
Read-onlyIdempotent
Inspect

Add YoY revenue growth and profit margin to see if a SaaS business clears the Rule of 40 benchmark. See the full version at https://rahuldsarker.co/calculators/rule-of-40-sandbox

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
yoyGrowthPctYesYear-over-year revenue growth, as a percentage
profitMarginPctYesEBITDA or FCF margin, as a percentage (can be negative)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds that this is a sandbox/pure calculation and points to a fuller version, but says nothing about rate limits, output interpretation, or what 'clears the benchmark' means numerically (>=40).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and inputs, and no wasted preamble. The trailing URL is mildly promotional but plausibly useful for a user wanting the fuller tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the tool is a simple three-parameter deterministic calculation whose annotations fully cover the safety profile. Only the exact benchmark threshold and result semantics are left implicit, a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (yoyGrowthPct, profitMarginPct, currency) are already documented in the schema. The description restates the two required inputs but adds no format, unit, or edge-case detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific computation and resource: feed YoY growth and profit margin to test the Rule of 40 benchmark for a SaaS business. The verb+resource is unambiguous, though it doesn't explicitly distinguish itself from sibling SaaS metric tools like saas_quick_ratio_engine or saas_magic_number_calculator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context (a SaaS business with growth and margin figures) and notes a 'full version' exists elsewhere, but it names no alternatives, no prerequisites, and no when-not-to-use conditions. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_calculatorRun a calculator by nameA
Read-onlyIdempotent
Inspect

Run any rahuldsarker.co calculator by its tool name (from find_calculator). Inputs you leave out are asked of the person directly when the client supports forms; otherwise the result lists what to ask for.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCalculator tool name, e.g. "roas_calculator"
argumentsNoThe calculator's inputs, including optional currency (e.g. "USD")

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe, idempotent, read-only, closed-world operation, so the safety bar is low. The description goes beyond them by disclosing interaction behavior that the annotations cannot: omitted inputs are either collected through client-side forms or surfaced back as a list of questions to ask. This is genuinely useful runtime behavior for the calling agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the primary action front-loaded and the fallback behavior placed second. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description covers the important return case (a list of missing inputs when forms are unsupported) plus the read-only nature implied by the annotations. It leaves the success-result shape and error handling for unknown calculator names unstated, a minor gap for a dispatcher tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented, including that arguments holds the calculator's inputs with an optional currency. The description only reiterates the name-source and adds no argument syntax, required-key, or naming conventions beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("run any rahuldsarker.co calculator by its tool name") and names the sibling (find_calculator) that supplies the name, so the agent can separate it from the ~100 sibling calculators and from find_calculator itself without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical "(from find_calculator)" establishes the prerequisite workflow: discover the tool name first, then run it. There is no explicit when-not guidance or statement about what happens if the name is invalid, but the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

saas_churn_cohort_visualizerSaaS Churn Cohort VisualizerB
Read-onlyIdempotent
Inspect

Project how a customer cohort decays over time under a monthly churn rate, and the implied average customer lifespan. See the full version at https://rahuldsarker.co/calculators/saas-churn-cohort-visualizer

ParametersJSON Schema
NameRequiredDescriptionDefault
segmentNoCustomer segment for the benchmark verdict: smb, mid_market or enterprise (default smb)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
cohortSizeYesStarting cohort size (number of customers)
monthlyChurnPctYesMonthly logo churn rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 useful context about what is being projected (cohort decay and average customer lifespan), but does not add behavioral details beyond annotations, such as output format or calculation constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the core purpose efficiently. The URL to the full version is slightly extraneous for an agent invocation but does not significantly detract from conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and schema coverage for parameters is 100%, the description does not need to explain return values or parameter details. It adequately conveys the tool's purpose for a read-only calculator, though it could mention the optional segment and currency parameters to be fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented in the input schema. The description mentions monthly churn rate generically but adds no parameter-specific meaning beyond the schema, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (project cohort decay over time) and resource (customer cohort, monthly churn rate, implied average lifespan). It is clear what the tool computes, but it does not explicitly differentiate itself from similar calculation siblings like ltv_cac_calculator or net_revenue_retention_forecaster.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only explains what the tool does, with no guidance on when to use it versus alternatives. It does not name any sibling tool or specify conditions or exclusions for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

saas_magic_number_calculatorSaaS Magic Number CalculatorC
Read-onlyIdempotent
Inspect

Measure how efficiently sales and marketing spend turns into new ARR. See the full version at https://rahuldsarker.co/calculators/saas-magic-number-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
priorArrYesPrior period ARR
currentArrYesCurrent period ARR
priorPeriodSalesAndMarketingSpendYesSales and marketing spend in the prior period

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds no behavioral context of its own: it doesn't state the magic-number formula/threshold interpretation, period-alignment expectations, unit handling, or any limits. It adds nothing 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is efficiently front-loaded, but the second is a promotional link to an external 'full version', which occupies half the text without helping the agent invoke the tool correctly. Two sentences, but only one earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering the safety profile and an output schema covering return values, the remaining burden is light and the 100%-covered input schema handles the parameters. What is missing is any usage framing or result interpretation (what a good vs poor magic number is), leaving the definition minimally viable for a calculator in a family of ~100 similar tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (currentArr, priorArr, priorPeriodSalesAndMarketingSpend, currency) is already documented in the schema, and the baseline is 3. The description adds no extra meaning such as period-consistency requirements or the mismatch between 'prior period' spend and current ARR.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: it measures how efficiently sales and marketing spend converts into new ARR, which is exactly what a magic-number tool does. It is clear enough that an agent can tell it apart from most sibling calculators, but it never references the crowded calculator family or names a distinguishing alternative, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative routing. With siblings like ltv_cac_calculator, cac_payback_period_matrix, roas_calculator and run_calculator, the agent has to infer that this tool is for S&M efficiency relative to ARR growth; the description only implies that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

saas_quick_ratio_engineSaaS Quick Ratio EngineB
Read-onlyIdempotent
Inspect

Divide MRR gained (new + expansion) by MRR lost (contraction + churn) to measure growth durability. See the full version at https://rahuldsarker.co/calculators/saas-quick-ratio-engine

ParametersJSON Schema
NameRequiredDescriptionDefault
newMrrYesNew MRR added this period
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
churnedMrrYesMRR lost to cancellations/churn
expansionMrrYesExpansion MRR from existing customers
contractionMrrYesMRR lost to downgrades/contraction

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety and reproducibility are fully covered. The description adds the ratio formula (useful behavioral detail) but says nothing about edge cases such as a zero denominator or what happens when optional currency is omitted. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core formula front-loaded and no padding. The trailing URL is mildly extraneous for an agent invocation context, keeping it just below a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. For a simple deterministic calculator the remaining gap is minor — only undefined behavior at a zero denominator is missing, which is a small omission given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema, establishing a baseline of 3. The description reinforces the grouping of the four required inputs into numerator and denominator, which is genuine added meaning, but it says nothing about the optional currency parameter beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the exact computation — (new + expansion MRR) ÷ (contraction + churn MRR) — which pins down both the operation and the inputs unambiguously. It never names a sibling tool or explains how it differs from neighbors like mrr_bridge_planner or net_revenue_retention_forecaster, so it falls short of the top tier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no alternatives named. The only pointer is a URL to a web version of the same calculator, which is not routing guidance for an agent choosing between ~110 sibling analytics tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

saas_valuation_multiple_predictorSaaS Valuation Multiple PredictorB
Read-onlyIdempotent
Inspect

Estimate a directional ARR multiple and enterprise value range from growth, net revenue retention, and gross margin. See the full version at https://rahuldsarker.co/calculators/arr-multiple-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
arrYesCurrent annual recurring revenue (ARR)
nrrPctYesNet revenue retention, as a percentage
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
yoyGrowthPctYesYear-over-year growth rate, as a percentage
grossMarginPctYesGross margin, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds that the result is 'directional' and delivered as a 'range', which usefully sets accuracy expectations, but says nothing about precision, edge cases, or how the estimate is derived.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose. The second sentence is essentially a promotional link rather than operational guidance, which costs some value but is not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. The remaining completeness gap is the failure to differentiate this tool from the closely overlapping arr_multiple_calculator sibling, which an agent needs in order to select correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters including currency are documented in the schema itself. The description names three drivers (growth, NRR, gross margin) but omits arr and currency, adding little beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Estimate') and specific outputs ('directional ARR multiple and enterprise value range') plus the three drivers it uses. However, it does not distinguish this tool from the near-identical sibling arr_multiple_calculator, leaving the agent to guess which of the two to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use, when-not, or alternative-tool guidance. The only hint is 'See the full version at ...', which implies this is a simplified/directional variant, but that routing condition is never stated explicitly relative to arr_multiple_calculator.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sales_commission_tier_modelerSales Commission Tier ModelerA
Read-onlyIdempotent
Inspect

Model a rep's commission payout under a base-plus-accelerator plan, and check it against gross margin to catch plans that outrun profitability. See the full version at https://rahuldsarker.co/calculators/sales-commission-tier-modeler

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
annualQuotaYesAnnual quota
attainmentPctYesQuota attainment, as a percentage
acceleratedRatePctYesAccelerated commission rate, as a percentage
dealGrossMarginPctYesDeal gross margin, as a percentage
baseCommissionRatePctYesBase commission rate, as a percentage
acceleratorThresholdPctYesQuota attainment percentage at which the accelerator kicks in

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, destructiveHint false, and openWorldHint false, so the safety profile is fully covered. The description adds the dual calculation behavior (payout plus margin check), but does not disclose any further operational traits such as input constraints, assumptions, or output format. With annotations carrying the behavioral burden, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences and front-loads the core functionality. The second sentence is a promotional link to a full version, which does not help an agent invoke this MCP tool, so it is not fully waste-free.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, 100% parameter description coverage, and annotations covering safety and side effects, the description only needs to communicate the tool's purpose and context. It does so clearly, making the definition complete enough for reliable agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the input schema. The description does not add any parameter-level detail, which is acceptable given the high schema coverage. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: model a rep's commission payout under a base-plus-accelerator plan. It also adds a second, distinctive function: checking the plan against gross margin to catch profitability overruns. This differentiates it from generic calculator siblings without needing to name one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear contextual use cases: modeling a base-plus-accelerator commission plan and testing whether that plan outruns gross margin. It does not explicitly state when not to use it or name an alternative sibling tool, but the scenario is specific enough to guide invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sales_cycle_length_forecasterSales Cycle Length ForecasterB
Read-onlyIdempotent
Inspect

Project total deal cycle length by adding stakeholder count and compliance/procurement gates to a base single-buyer cycle. See the full version at https://rahuldsarker.co/calculators/sales-cycle-length-forecaster

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
baseCycleDaysYesBase cycle length for a single buyer, in days
complianceGateYesCompliance/procurement gate: none (0 days), security (security review, 15 days), securityLegal (security + legal, 30 days), or full (security + legal + procurement, 50 days)
decisionMakersYesNumber of decision-makers involved
daysPerExtraStakeholderYesDays added per extra stakeholder beyond the first

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, non-destructive, and closed-world, so the safety profile is covered. The description usefully discloses the additive calculation model, but says nothing about units of the output, determinism caveats, or limits beyond what the schema enumerates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and efficient. The trailing 'full version' link is marginally useful but reads as promotional filler rather than information an agent needs to invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic calculator with a fully described 5-parameter schema, an output schema, and safety annotations, the description covers the model's mechanics adequately. The main gap is usage guidance, which is minor given the self-explanatory name and complete schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including explicit day-values for each complianceGate enum option, so the schema carries the parameter meaning. The description restates the input concepts at a high level but adds no syntax or format detail beyond the schema, making baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (project deal cycle length) and the model it uses (base single-buyer cycle + stakeholder count + compliance/procurement gates). An agent can distinguish it from related calculators like contract_redline_duration_predictor, though no sibling is explicitly named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use / when-not guidance and no alternatives named. The only extra sentence points to an external 'full version' URL, which is promotional rather than routing guidance. Usage is only inferable from the tool name and the formula description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sales_pipeline_leak_evaluatorSales Pipeline Leak EvaluatorB
Read-onlyIdempotent
Inspect

Run leads through the Lead → MQL → SQL → Opportunity → Win funnel and flag the weakest converting stage. See the full version at https://rahuldsarker.co/calculators/sales-pipeline-leak-evaluator

ParametersJSON Schema
NameRequiredDescriptionDefault
leadsYesLeads per month, top of funnel
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
toMqlPctYesLead → MQL conversion rate, as a percentage
toOppPctYesSQL → Opportunity conversion rate, as a percentage
toSqlPctYesMQL → SQL conversion rate, as a percentage
toWinPctYesOpportunity → Win conversion rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only the output framing ('flag the weakest stage'), which is largely redundant given an output schema exists; no mention of units, rounding, or edge cases for the rates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and efficient, but the second sentence is a marketing link to an external site that adds no invocation value to an agent. Structure is fine; one of two sentences does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 100% schema coverage, full annotations, and an output schema, the only real gap is the absence of any selection guidance against the many adjacent funnel/calculator siblings. Adequate for calling the tool, thin for choosing it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented in the schema. The description adds no additional meaning beyond the funnel framing, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource — running lead counts through the Lead → MQL → SQL → Opportunity → Win funnel — and names the derived output ('flag the weakest converting stage'). An agent can distinguish this from siblings like mql_calculator or conversion_funnel without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as mql_to_sales_disconnect_analyzer, pipeline_velocity_equation_engine, or conversion_funnel, and no prerequisites noted. The only extra sentence is a promotional URL, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sales_quota_calculatorSales Quota Calculator (Top-Down vs Bottom-Up)A
Read-onlyIdempotent
Inspect

Set sales quotas two ways and compare: top-down (revenue target split across reps at an expected attainment) and bottom-up (what each rep can realistically close). See the full version at https://rahuldsarker.co/calculators/sales-quota-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
repsYesNumber of quota-carrying reps
targetYesAnnual revenue target for the team
rampPctYesAverage rep productivity after ramp, as a percentage (100 if fully ramped)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
dealSizeYesAverage deal size
winRatePctYesWin rate, as a percentage
cycleMonthsYesAverage sales cycle in months
attainmentPctYesExpected average quota attainment, as a percentage (e.g. 80)
openOppsPerRepYesOpportunities each rep works at a time

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

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 fully covered. The description adds the two-mode framing and hints the tool is a 'lite' version pointing to a fuller one, but says nothing about return shape or limits beyond what annotations and the output schema provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences that front-load the core capability, with no redundant filler. The trailing promotional URL to an external full version is the only element that does not directly serve tool selection, keeping it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a pure calculator with 100% schema coverage, an output schema, and full annotations, the description supplies enough framing to invoke it correctly. It could do more to differentiate from quota-adjacent siblings, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description conceptually maps inputs to the two methods (target/attainment for top-down, closeability for bottom-up) but adds no syntax or format detail beyond the already-documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (set quotas) and resource (sales quotas) and explains the two calculation methods (top-down vs bottom-up), which helps an agent understand the output. However, it does not distinguish this from adjacent siblings like sales_rep_ramp_calculator or sdr_capacity_and_inbound_quota_planner, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by describing the two comparison modes, but gives no explicit when-to-use, when-not-to-use, or guidance about alternatives. Usage is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sales_rep_ramp_calculatorSales Rep Ramp Time and Cost CalculatorA
Read-onlyIdempotent
Inspect

Estimate the cost of ramping new sales reps: unproductive cost during ramp, bookings lost versus fully ramped reps, first-year bookings and payback month. See the full version at https://rahuldsarker.co/calculators/sales-rep-ramp-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
curveNoRamp shape: linear (default), slow start, or fast start
hiresYesNumber of reps being hired
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
rampMonthsYesMonths until a new rep is fully productive
monthlyCostYesFully loaded monthly cost per rep
monthlyQuotaYesMonthly bookings of a fully ramped rep

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile for a calculation tool. The description adds no behavioral context beyond that, but it does not contradict the annotations either.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded with the tool's purpose and outputs, and the second sentence is short. However, the external URL to the full version does not help an agent invoke the tool and slightly dilutes conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a rich schema, full annotations, and an output schema, the description provides enough context to identify the tool's calculations. It does not need to explain return values or parameter details, though it could say more about when to choose it over similar calculators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the input schema, including the ramp curve enum and currency format. The description adds no parameter meaning beyond what the schema provides, making 3 the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Estimate) and resource (cost of ramping new sales reps), then names the exact outputs: unproductive cost, bookings lost, first-year bookings, and payback month. This clearly distinguishes it from sibling sales calculators like quota or commission modelers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. It simply describes what the calculator computes, leaving the agent to infer usage from the name and siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_capacity_and_inbound_quota_plannerSDR Capacity & Inbound Quota PlannerB
Read-onlyIdempotent
Inspect

Work out how much inbound volume an SDR team can properly cover per month, and how many reps you would need to fully cover current inbound. See the full version at https://rahuldsarker.co/calculators/sdr-capacity-and-inbound-quota-planner

ParametersJSON Schema
NameRequiredDescriptionDefault
sdrsYesNumber of SDRs on the team
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
touchesPerLeadYesTouches per lead in the cadence
minutesPerTouchYesMinutes required per quality touch
sellingHoursPerDayYesSelling hours per day, per rep, after meetings/admin/breaks
workingDaysPerMonthYesWorking days per month
inboundLeadsPerMonthYesInbound leads per month

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a read-only, idempotent, non-destructive, closed-world computation, and the description is consistent with that. Beyond restating the two outputs, it discloses nothing extra — no assumptions about the cadence model, no rounding or edge-case behaviour — but with full annotation coverage the bar is lower and nothing is misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is efficient and front-loads the core value. The second sentence is purely promotional (a link to a 'full version') and does nothing to help selection or invocation, so it fails the 'every sentence earns its place' test.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderate-complexity calculator with a full schema, complete annotations, and an output schema, the description covers what the tool produces and needs no return-value explanation. It stops short of explaining the capacity model's assumptions, which would help an agent sanity-check inputs, hence not a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all seven inputs (sdrs, sellingHoursPerDay, minutesPerTouch, touchesPerLead, workingDaysPerMonth, inboundLeadsPerMonth, currency) are already documented. The description adds no format, unit, or default guidance beyond that, which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific computation (monthly inbound volume an SDR team can cover, plus reps needed to cover current inbound), which is more than a restatement of the name. It does not, however, distinguish itself from near-neighbours such as customer_success_capacity_planner or growth_team_hiring_sequence_planner, so an 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-tool guidance at all. The only routing signal is the trailing marketing link to a 'full version', which does not tell an agent which sibling capacity/hiring calculator to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_contentSearch Rahul D Sarker's articles, guides and case studiesA
Read-onlyIdempotent
Inspect

Search rahuldsarker.co for articles, long-form guides and client case studies on fractional CMO work, revenue operations, attribution, server-side tracking, performance marketing, CRM and AI marketing. Returns titles, summaries and links to cite. Use read_content to get the full text of a result.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOnly return one kind of content
limitNoHow many results, 1 to 10 (default 5)
queryYesWhat to look for, in plain words, e.g. "server-side CAPI signal loss" or "RevOps for Series A SaaS"

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, closed-world behavior, so the bar is lower. The description adds useful non-annotation context: the shape of the return (titles, summaries, citable links) and the follow-up tool for full text.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is searched and closing with the read_content handoff. The topic list is long but serves discovery; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full schema coverage, annotations covering the safety profile, and no output schema (return shape described in prose), an agent has everything needed to call it. Only minor gap is pagination/limit-default behavior, which the schema already encodes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the enum, limit range and query format are already fully documented. The description only echoes the content kinds covered by the type enum and adds no syntax or format detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and a precise resource (articles, guides, case studies on rahuldsarker.co) and enumerates the topical scope. It is unmistakably distinct from the surrounding calculator siblings and names read_content as its companion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context ('Returns titles, summaries and links to cite') and an explicit handoff rule: use read_content for the full text. It doesn't state when NOT to use it, but with no competing search tool in the sibling list there is little to exclude.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seasonal_ad_cpm_predictorSeasonal Ad CPM PredictorB
Read-onlyIdempotent
Inspect

Project CPM and reach impact for a given season (back-to-school, Black Friday, Q4, January) from a baseline CPM. See the full version at https://rahuldsarker.co/calculators/seasonal-ad-cpm-predictor

ParametersJSON Schema
NameRequiredDescriptionDefault
seasonYesSeason: normal (baseline), backToSchool (Aug-Sep), blackFriday (BFCM peak), q4 (Nov-Dec holiday), january (post-holiday reset)
baseCpmYesBaseline CPM
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
monthlyBudgetYesMonthly budget

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 outputs are projections derived from a baseline CPM; it says nothing extra about output shape or limits, so a baseline 3 is apt.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight and front-loads the purpose and inputs. The second sentence is a promotional link to an external calculator, which does not help an agent invoke the tool, so it slightly dilutes an otherwise efficient definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the safety profile, the description needn't explain return values. The purpose, inputs and season scope are covered well enough to invoke the tool correctly; only routing vs siblings is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum for season is documented inline with season meanings, so the schema carries the parameter burden. The description's parenthetical list of seasons ("back-to-school, Black Friday, Q4, January") duplicates the schema rather than adding semantics, warranting the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Project") and resources ("CPM and reach impact") with scope ("for a given season ... from a baseline CPM"), so an agent knows exactly what it computes. It does not, however, distinguish itself from adjacent forecasting siblings like ad_creative_fatigue_forecaster or channel_saturation_estimator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. Only the implicit framing "from a baseline CPM" hints at the scenario, leaving the agent to guess when this beats sibling forecasting tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seat_utilization_risk_assessorSeat Utilization Risk AssessorB
Read-onlyIdempotent
Inspect

Estimate renewal ARR at risk from low seat utilization on a subscription contract. See the full version at https://rahuldsarker.co/calculators/seat-utilization-risk-assessor

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
renewalArrYesRenewal ARR at stake for this account
seatsActiveYesSeats actively used (e.g. active in the last 30 days)
seatsPurchasedYesSeats purchased

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds no behavioral context beyond the basic purpose, such as calculation assumptions, data sources, or output determinism.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the purpose. The second sentence is a promotional link to an external full version, which is concise but of questionable value for an agent selecting and invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema and full parameter descriptions, so return values and inputs need not be explained. However, the description omits usage context, assumptions, and how it differs from the many sibling calculators, leaving meaningful gaps for correct tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (including currency, renewalArr, seatsActive, seatsPurchased) are already documented in the schema. The description adds no parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Estimate), resource (renewal ARR at risk), and precise condition (low seat utilization on a subscription contract). This distinguishes it from generic renewal or ARR calculators in the sibling list, such as renewals_pipeline_health_grader or net_revenue_retention_forecaster.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus the many other calculators, nor any exclusions or prerequisites. It only implies usage for subscription contracts with seat utilization concerns, leaving the agent to infer the context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seat_vs_usage_pricing_calculatorSeat vs Usage Pricing CalculatorB
Read-onlyIdempotent
Inspect

Compare per-seat, usage-based and hybrid (platform fee plus overage) pricing revenue for a customer mix of small, mid and large accounts. See the full version at https://rahuldsarker.co/calculators/seat-vs-usage-pricing-calculator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
midSeatsYesSeats per mid-size customer
midUnitsYesUsage units per mid-size customer per month
seatPriceYesPrice per seat per month
unitPriceYesPrice per usage unit
largeSeatsYesSeats per large customer
largeUnitsYesUsage units per large customer per month
smallSeatsYesSeats per small customer
smallUnitsYesUsage units per small customer per month
platformFeeYesHybrid: platform fee per customer per month
midCustomersYesNumber of mid-size customers
overagePriceYesHybrid: price per unit above the included amount
includedUnitsYesHybrid: units included in the platform fee
largeCustomersYesNumber of large customers
smallCustomersYesNumber of small customers

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds no behavioral context beyond that (no caveats about assumptions, rounding, or the 'full version' limitation). With annotations carrying the load, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core comparison and no padding. The second sentence is a promotional pointer to the full version rather than functional information, which slightly dilutes the payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the 15 parameters are fully documented in the schema. However, for a 15-parameter financial tool the description is thin: it omits any note about the assumptions (monthly basis, currency behavior already in schema) or the limits of this 'short' version, leaving some context for the agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description loosely mirrors a few parameters ('platform fee plus overage') but adds no meaning, units, or constraints beyond what the schema already documents. No value is added over the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Compare') plus the three pricing models it contrasts (per-seat, usage-based, hybrid) and the input domain (small/mid/large customer mix). An agent can tell what it computes without opening the schema. It does not explicitly differentiate from any sibling, but there is no near-twin in the list, so the gap is minor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, no exclusions, and no prerequisites. Usage is only implied by the topic. Related siblings like seat_utilization_risk_assessor or pricing_elasticity_sandbox are never referenced as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

social_proof_strength_auditorSocial Proof Strength AuditorC
Read-onlyIdempotent
Inspect

Score the persuasive strength of testimonials and proof elements across six weighted criteria into a 0-100 credibility score. See the full version at https://rahuldsarker.co/calculators/social-proof-strength-auditor

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
enoughVolumeYesEnough volume to feel credible (weight 10)
namedAndAttributedYesTestimonials are named & attributed to real people (weight 20)
photosLogosOrVideoYesPhotos, logos or video, not just text (weight 15)
matchesVisitorSegmentYesProof matches the visitor's segment (weight 15)
placedNearDecisionPointsYesPlaced near decision points / CTAs (weight 15)
specificQuantifiedResultsYesThey cite specific, quantified results (weight 25)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered structurally. The description adds no behavioral context beyond the purpose — it does not say how the score should be interpreted, whether inputs are validated, or what a borderline score means. The external URL is marketing, not 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight and front-loaded with the core action and output. The second sentence, a link to an external 'full version,' is promotional and does not earn its place in an agent-facing definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% schema coverage for parameters, the definition does not need to explain return values or argument formats. It is minimally adequate, but a scoring tool for a subjective quality dimension would benefit from a note on how to interpret the resulting 0-100 score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each of the six enum parameters carrying its own weight annotation, so the schema does the heavy lifting. The description's mention of 'six weighted criteria' lightly reinforces this but adds no syntax or format detail beyond the schema, which is the correct baseline-3 outcome.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (score) and resource (testimonials/proof elements) and defines the output shape (0-100 credibility score from six weighted criteria). It is clear enough to distinguish from generic calculators, though it does not explicitly name or contrast with close siblings like trust_badge_roi_estimator or value_prop_strength_grader.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no alternatives named; the second sentence is a promotional link to an external site rather than routing guidance. An agent must infer usage purely from the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strategic_pivot_risk_graderStrategic Pivot Risk GraderA
Read-onlyIdempotent
Inspect

Grade the risk of pivoting upmarket to enterprise across sales motion, pricing/packaging, cash buffer, product compliance, and team experience. See the full version at https://rahuldsarker.co/calculators/strategic-pivot-risk-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
cashYesCash buffer for a longer sales cycle: ready/partial/no. Weight 20
teamYesTeam has enterprise experience: ready/partial/no. Weight 15
motionYesSales motion built for enterprise (AEs, SEs, ABM): ready/partial/no. Weight 25
pricingYesPricing & packaging fit larger contracts: ready/partial/no. Weight 15
productYesProduct security / compliance (SOC2, SSO): ready/partial/no. Weight 25
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered without the description. The description adds the domain framing and the fact that scoring spans five weighted dimensions, but says nothing about how the score is computed or bounded beyond what the schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded single sentence covering verb, resource, and dimensions, followed by a short link. Efficient, though the promotional URL is slightly expendable rather than strictly earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and annotations cover the safety profile. For a 6-parameter, fully documented scoring tool the description is sufficient, with only minor gaps in explaining the weighting outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter documents its ready/partial/no enum and weight, so the schema carries the semantic load. The description's list of dimensions mirrors the parameters but adds no format or interpretation detail beyond them — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (grade) and a specific resource (risk of pivoting upmarket to enterprise), and enumerates the five dimensions scored, which map directly to the required parameters. An agent can distinguish this from the many other '*_grader' siblings because the pivot-upmarket framing is unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context (assessing an upmarket/enterprise pivot) but gives no explicit when-to-use, prerequisites, or alternatives among the many adjacent graders (e.g. product_market_fit_scoring_grader, gtm_audit_scorecard). Usage is inferable but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tech_stack_duplication_inspectorTech Stack Duplication InspectorB
Read-onlyIdempotent
Inspect

Estimate the monthly and annual SaaS spend wasted on overlapping tools, from total spend, tool count, and estimated feature overlap. See the full version at https://rahuldsarker.co/calculators/tech-stack-duplication-inspector

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
toolCountYesNumber of tools in the stack
overlapPctYesEstimated share of spend on redundant/overlapping capabilities, as a percentage
monthlySpendYesTotal SaaS spend per month

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds that results are estimates of wasted spend at monthly and annual granularity, which is modest added context, but nothing about precision, assumptions, or edge cases. Appropriate for a pure calculator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded and does the real work. The second sentence is a promotional URL to an external page, which does not help an agent select or invoke the tool and dilutes an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations carry the safety and idempotency profile for this closed-world read calculator. The description covers the core computation and inputs; only the optional currency parameter and any assumption caveats are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (including the optional currency ISO code) are already documented in the schema. The description names only the three required inputs and adds no format or unit detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (estimate) and a narrowly-scoped resource (monthly/annual SaaS spend wasted on overlapping tools), plus names the inputs that drive it. The scenario is distinct from waste-adjacent siblings like ad_spend_waste_calculator, but no sibling is named or contrasted, so this sits at a clear 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists the inputs (total spend, tool count, feature overlap), which weakly implies preconditions, but never says when to reach for this tool versus alternatives or when it is not applicable. There is no explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

thank_you_page_revenue_maximizerThank-You Page Revenue MaximizerB
Read-onlyIdempotent
Inspect

Estimate the extra revenue from adding a secondary action (referral, upsell, booking, or community) on a thank-you page, using typical take rates. See the full version at https://rahuldsarker.co/calculators/thank-you-page-revenue-maximizer

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesSecondary action to add: referral ask (~8%), order-bump/upsell (~12%), book a call/demo (~18%), or join community/follow (~22%)
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
conversionsPerMonthYesConversions per month (thank-you page views)
takeRatePctOverrideNoCustom take rate override, as a percentage; if omitted, uses the typical rate for the chosen action
valuePerSecondaryActionYesValue per secondary action, e.g. avg. value of a referral, upsell, or booked call

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that results are based on 'typical take rates,' which lightly signals estimate quality, but says nothing about calculation assumptions, precision, or the override behavior beyond what the schema states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose. The trailing marketing URL is mild filler but the definition stays short and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return values need not be explained, and annotations cover the safety profile. For a straightforward calculator, the description-plus-schema is nearly sufficient; only the absence of when-to-use routing keeps it from full marks.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the enum values, currency format, and override semantics are already fully documented in the schema. The description only restates the four action types, adding no meaning beyond the structured fields. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Estimate) and resource (extra revenue from a secondary action on a thank-you page), and enumerates the action types. It is clear what the tool computes, but it does not differentiate itself from numerically adjacent siblings like micro_conversion_value_modeler or cross_sell_opportunity_estimator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what is computed but gives no when-to-use guidance, no prerequisites, and no explicit alternative among the many sibling calculators. Usage is only implied from the tool's subject matter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

total_addressable_market_estimatorTotal Addressable Market (TAM/SAM/SOM) EstimatorB
Read-onlyIdempotent
Inspect

Build a bottom-up TAM, SAM, and SOM from company counts, reachable share, ACV, and obtainable market share. See the full version at https://rahuldsarker.co/calculators/total-addressable-market-estimator

ParametersJSON Schema
NameRequiredDescriptionDefault
acvYesAverage contract value
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
companiesYesTotal target companies that fit the category
reachablePctYesShare of those companies realistically reachable, as a percentage
targetSharePctYesObtainable share of the reachable market (SAM) you can win near-term, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior2/5

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 covered. The description adds no behavioral context beyond what annotations provide, such as side effects, auth needs, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and efficient, covering purpose and inputs. The second sentence is a promotional external link to a full version, which is not essential for invoking the tool and slightly dilutes conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only calculator with a fully described schema, comprehensive annotations, and an output schema, the description is adequate: it names the computation and inputs, and the structured fields cover safety and return values. It lacks usage context, but the core invocation requirements are covered elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The description mentions the main inputs (company counts, reachable share, ACV, obtainable market share), which aligns with the schema but adds no syntax, format, or edge-case detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Build') and names the exact outputs (bottom-up TAM, SAM, and SOM) along with the input drivers. It is clear what the tool computes, though it does not explicitly differentiate itself from the many sibling calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no prerequisites, and no alternatives. It only states what the tool builds, leaving the agent to infer that this is the correct calculator for TAM/SAM/SOM estimates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trust_badge_roi_estimatorTrust Badge ROI EstimatorA
Read-onlyIdempotent
Inspect

Estimate the monthly and annual revenue lift from adding trust/security badges near a conversion point. See the full version at https://rahuldsarker.co/calculators/trust-badge-roi-estimator

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
expectedLiftPctNoExpected relative lift from trust badges, as a percentage, defaults to 8 (typically 3-15%)
monthlyVisitorsYesMonthly visitors to the form/checkout
valuePerConversionYesValue per conversion
currentConversionRatePctYesCurrent conversion rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false. The description adds no further behavioral context (e.g., assumptions, defaults, rate limits, auth needs) beyond restating the purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, with the purpose front-loaded. The second sentence is a link to an external site, which does not help an agent select or invoke the tool, slightly reducing conciseness value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and 100% schema coverage, return values and parameters are fully documented. The description states the purpose adequately, though it lacks guidance on when to choose this tool over related calculators among its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are fully documented in the schema. The description adds no additional parameter semantics, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Estimate') and resource ('monthly and annual revenue lift from adding trust/security badges near a conversion point'), clearly distinguishing it from other ROI calculators in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage scenario (adding trust/security badges near a conversion point) but provides no explicit when-to-use, prerequisites, or alternatives among the many sibling calculators.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

typography_legibility_graderTypography Legibility GraderB
Read-onlyIdempotent
Inspect

Score body copy legibility on font size, line height, and line length against ideal bands, into a 0-100 score. See the full version at https://rahuldsarker.co/calculators/typography-legibility-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
fontSizePxYesBody font size in pixels
lineHeightYesLine height as a multiplier of font size, e.g. 1.5
lineLengthCharsYesLine length in characters per line

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorldHint=false, so the safety profile is covered by structured data. The description adds the 0-100 scoring range and that comparison is done 'against ideal bands', which is mildly useful, but says nothing about how those bands are defined or how the currency parameter affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and reasonably tight, but the second sentence is a promotional URL that does not help an agent select or invoke the tool, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full input schema, an output schema, and annotations present, most structured detail is already covered. What is missing is the calibration context an agent would need — what the ideal bands are, whether scores are comparable across typography contexts, and why a currency code appears in a typography tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter already has a description with units, so the baseline is 3. The description names the three grading inputs but adds no format, range, or validity detail beyond the schema, and never mentions the optional currency parameter at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (score), resource (body copy legibility), the three inputs judged (font size, line height, line length), and the output scale (0-100). It is understandable without the schema, though it does not distinguish itself from the many other '*_grader' siblings that also return scores.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to reach for this tool versus alternatives such as cta_visual_hierarchy_tester or pricing_page_architecture_grader, and no preconditions or exclusions. The only second sentence is a marketing link, which provides no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

utm_generator_and_validation_helperUTM Generator & Validation HelperA
Read-onlyIdempotent
Inspect

Generate a cleaned, encoded UTM-tagged URL from source, medium, campaign, term, and content, and flag common tagging errors. See the full version at https://rahuldsarker.co/calculators/utm-generator-and-validation-helper

ParametersJSON Schema
NameRequiredDescriptionDefault
termNoutm_term (paid keyword), optional
mediumYesutm_medium, e.g. cpc, paid-social
sourceYesutm_source, e.g. google, linkedin
baseUrlYesBase URL to tag, e.g. https://example.com/pricing
contentNoutm_content (creative / A-B variant), optional
campaignYesutm_campaign, e.g. q3-demo-push
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine behavioral context beyond that: it cleans and encodes the URL and flags common tagging errors, which tells the agent the output includes validation feedback.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight and front-loaded. The second sentence is a promotional link to an external site that does not help an agent decide or invoke, so it dilutes rather than earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and annotations carry the safety profile. The core action, inputs, and the validation behavior are all covered, leaving only usage context as a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description maps the five UTM fields to their roles but adds no format or constraint detail beyond the schema, and omits the currency parameter entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb set (generate, flag) and a precise resource (a cleaned, encoded UTM-tagged URL) plus the exact input fields. It is clearly distinguishable from every sibling, none of which build UTM URLs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus alternatives, no prerequisites, and no exclusions — only an 'optional' note already carried in the schema. The second sentence points to a marketing site rather than guiding invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ux_pattern_anti_pattern_checkerUX Pattern Anti-Pattern CheckerB
Read-onlyIdempotent
Inspect

Count how many of 8 known dark patterns are present in a user experience and turn that into an integrity score. See the full version at https://rahuldsarker.co/calculators/ux-pattern-anti-pattern-checker

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
fakeUrgencyYesFake urgency or countdown timers
disguisedAdsYesDisguised ads or fake system messages
trickWordingYesTrick wording on buttons / consent
confirmshamingYesConfirmshaming, e.g. "No thanks, I hate saving money"
hiddenCostsLateYesHidden costs revealed late in checkout
forcedContinuityYesForced continuity (auto-renew, hard to spot)
hardCancellationYesDeliberately hard cancellation / downgrade
preselectedAddOnsYesPre-selected paid add-ons / opt-ins

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that the output is an 'integrity score'; it does not add domain behavioral context such as how the score is weighted or what the input assumptions are.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight and front-loaded. The second sentence is a bare promotional URL with no informational function for an agent, which dilutes an otherwise efficient definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the return values need no explanation, and the input side is fully documented in the schema. What is missing is usage context: when this check is appropriate versus the many adjacent audit tools in the catalog. Adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all 8 required booleans plus the optional currency field are individually documented in the schema. The description adds no parameter meaning 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: counting which of 8 named dark patterns appear and converting them to an integrity score. An agent can distinguish it from a generic 'calculator'. It stops short of naming any sibling, so it does not earn a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative reference. With close siblings like mobile_checkout_friction_tester, friction_point_identifier, and cta_visual_hierarchy_tester in the catalog, the agent gets no help routing between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

value_prop_strength_graderValue Proposition Strength GraderB
Read-onlyIdempotent
Inspect

Score a value proposition on clarity, specificity, differentiation, outcome focus, and pain relevance into a 0-100 score. See the full version at https://rahuldsarker.co/calculators/value-prop-strength-grader

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
instantlyClearYesInstantly clear, no second read needed (weight 25)
focusedOnOutcomeYesFocused on the customer's outcome (weight 20)
speaksToRealPainYesSpeaks to a real, felt pain (weight 15)
specificNotGenericYesSpecific, not generic (weight 20)
differentiatedFromCompetitorsYesDifferentiated from competitors (weight 20)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is well covered. The description adds the scoring dimensions and the 0-100 range, but says nothing about currency handling or how partial/yes/no inputs affect the result, so it only modestly exceeds 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core scoring behavior. The trailing promotional link to the external calculator site is wasted space for an agent but small; the whole remains tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover safety. For a six-parameter scoring tool the description is functionally complete on inputs/outputs but thin on usage context and result interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including the enum weights and the currency pattern. The description names the same dimensions but adds no syntax or interpretation beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Score a value proposition") and enumerates the five scoring dimensions plus the 0-100 output range, so an agent knows exactly what it computes. It is distinguishable from sibling graders by its value-proposition focus, though it never explicitly contrasts itself with adjacent messaging/scoring graders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use, when-not-to-use, or alternative-tool guidance. With over a hundred calculator siblings, the absence of routing guidance leaves the agent to infer context entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

video_conversion_modelerVideo Conversion ModelerB
Read-onlyIdempotent
Inspect

Model the pipeline and revenue a video drives from views, completion rate, and post-completion conversion rate. See the full version at https://rahuldsarker.co/calculators/video-conversion-modeler

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoISO 4217 code for money in the result, e.g. "USD", "INR", "EUR", "GBP". Omit to show plain numbers.
dealValueYesDeal / conversion value
monthlyViewsYesVideo views per month
completionRatePctYesCompletion rate, as a percentage: share who watch to the end
completerToConversionPctYesCompleter to conversion rate, as a percentage

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
kindYes
toolYesThe calculator tool that produced this result
notesYes
titleYes
inputsYes
compactYes
metricsYesEvery "Label: value" line of the result; value is the first number on the line
currencyYes
benchmarksYesRule-of-thumb verdicts for the headline numbers
bookingUrlYes
calculatorYesSlug of the interactive calculator on rahuldsarker.co

TDQS

B3.2/5.0
Behavior3/5

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 fully covered. The description adds no behavioral context beyond the annotations (no units, assumptions, or determinism notes), which is acceptable but not additive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and efficient. The second sentence is a promotional link to an external web calculator that contributes nothing to correct tool invocation, so half the description is wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values (pipeline and revenue) need not be explained, and all parameters are schema-documented. For a deterministic read-only calculator this is nearly complete; only the modeling assumptions behind 'pipeline' are unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters including currency and dealValue are already documented in the schema. The description echoes three of the inputs but adds no format, unit, or constraint detail beyond what the schema provides; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Model") and resource (pipeline and revenue a video drives) plus the three driving inputs, which is more concrete than most calculator siblings. It doesn't explicitly differentiate itself from near-neighbors like conversion_funnel or micro_conversion_value_modeler, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no named alternative. The input list implies the tool fits video-funnel revenue modeling, but the agent must infer that from the schema rather than the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Addedadvertising_to_sales_ratio_calculator
  2. 5 tool updates
    • Addedemail_marketing_roi_calculator
    • Addedrto_adjusted_roas_calculator
    • Addedsales_quota_calculator
    • Addedsales_rep_ramp_calculator
    • Addedseat_vs_usage_pricing_calculator
  3. 115 tool updates
    • Changedab_test_significance_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedabove_the_fold_messaging_clarity_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedacv_weight_planner2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedad_creative_fatigue_forecaster2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedad_frequency_risk_checker2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedad_spend_waste_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedae_sdr_hand_off_friction_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedannual_growth_goal_back_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedarr_multiple_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedb2b_implementation_delay_cost_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Addedbenchmark_metric
    • Changedbootstrapped_vs_venture_scaler_modeler2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedbrand_vs_performance_budget_allocator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedburn_rate_optimization_forecaster2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcac_payback_period_matrix3 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / segment
        Added value: +{
        +  "description": "Customer segment for the benchmark verdict: smb, mid_market or enterprise (default smb)",
        +  "enum": [
        +    "smb",
        +    "mid_market",
        +    "enterprise"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcart_abandonment_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedchannel_saturation_estimator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcompetitor_ad_spend_benchmarker2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcontract_redline_duration_predictor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedconversion_funnel2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcpa_to_cac_scalability_matrix2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcpl_cpa_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcreative_testing_duration_forecaster2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcrm_cleanup_roi_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcrm_roi_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcross_channel_ad_spend_allocator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcross_sell_opportunity_estimator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcta_visual_hierarchy_tester2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcustomer_expansion_revenue_matrix2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedcustomer_success_capacity_planner2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changeddata_enrichment_value_predictor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changeddeferred_revenue_amortization_planner2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedenterprise_contract_discount_evaluator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedexit_intent_timing_optimizer2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedexpansion_revenue_impact_simulator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Addedfind_calculator
    • Changedform_field_friction_cost_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedfreemium_to_paid_pipeline_modeler2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedfriction_point_identifier2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedgoogle_search_impression_share_value_estimator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedgross_margin_impact_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedgrowth_runway_extension_simulator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedgrowth_strategy_prioritization_tool2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedgrowth_team_hiring_sequence_planner2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedgtm_audit_scorecard2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedhistorical_data_drift_estimator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedimpression_share_opportunity_matrix2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedin_house_vs_fractional_cmo2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedinbound_call_center_routing_auditor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedinternationalization_market_prioritization_grid2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedlanding_page_vs_ad_match_quality_auditor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedlead_grading_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedlead_magnet_copy_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedlead_quality_intent_evaluator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedlead_routing_delay_cost_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedlead_scoring_logic_architect2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedlinkedin_ad_cost_threshold_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedlookalike_audience_pool_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedltv_cac_calculator3 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / segment
        Added value: +{
        +  "description": "Customer segment for the benchmark verdict: smb, mid_market or enterprise (default smb)",
        +  "enum": [
        +    "smb",
        +    "mid_market",
        +    "enterprise"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedltv_growth_multiplier_simulator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedltv_to_cac_ratio_health_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmarketing_agency_pitch_bullshit_detector2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmarketing_budget2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmicro_budget_ad_feasibility_checker2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmicro_conversion_value_modeler2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmobile_checkout_friction_tester2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmql_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmql_to_sales_disconnect_analyzer2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmrr_bridge_planner2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedmrr_to_arr_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changednet_promoter_score_impact_modeler2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changednet_revenue_retention_forecaster3 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / segment
        Added value: +{
        +  "description": "Customer segment for the benchmark verdict: smb, mid_market or enterprise (default smb)",
        +  "enum": [
        +    "smb",
        +    "mid_market",
        +    "enterprise"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedno_show_rate_revenue_restorer2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedorganic_traffic_value_monetizer2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedpage_speed_leak_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedpaid_search_intent_tier_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedperformance_marketing_margin_protector2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedpipeline_velocity_equation_engine2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedpost_ios14_blended_attribution_modeler2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedppc_click_volume_predictor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedpricing_elasticity_sandbox2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedpricing_page_architecture_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedproduct_led_growth_feasibility_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedproduct_market_fit_scoring_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedproduct_tour_effectiveness_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedproduct_usage_frequency_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedrenewals_pipeline_health_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Addedrequest_callback
    • Changedretargeting_pool_size_estimator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedrevops_maturity_benchmarker2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedroas_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedroas_to_mer_converter2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedrule_of_40_sandbox2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Addedrun_calculator
    • Changedsaas_churn_cohort_visualizer3 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / segment
        Added value: +{
        +  "description": "Customer segment for the benchmark verdict: smb, mid_market or enterprise (default smb)",
        +  "enum": [
        +    "smb",
        +    "mid_market",
        +    "enterprise"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedsaas_magic_number_calculator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedsaas_quick_ratio_engine2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedsaas_valuation_multiple_predictor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedsales_commission_tier_modeler2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedsales_cycle_length_forecaster2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedsales_pipeline_leak_evaluator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedsdr_capacity_and_inbound_quota_planner2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedseasonal_ad_cpm_predictor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedseat_utilization_risk_assessor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedsocial_proof_strength_auditor2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedstrategic_pivot_risk_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedtech_stack_duplication_inspector2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedthank_you_page_revenue_maximizer2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedtotal_addressable_market_estimator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedtrust_badge_roi_estimator2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedtypography_legibility_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedutm_generator_and_validation_helper2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedux_pattern_anti_pattern_checker2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedvalue_prop_strength_grader2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
    • Changedvideo_conversion_modeler2 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for money in the result, e.g. \"USD\", \"INR\", \"EUR\", \"GBP\". Omit to show plain numbers.",
        +  "pattern": "^[A-Za-z]{3}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "benchmarks": {
        +      "description": "Rule-of-thumb verdicts for the headline numbers",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "band": {
        +            "type": "string"
        +          },
        +          "display": {
        +            "type": "string"
        +          },
        +          "metric": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "read": {
        +            "type": "string"
        +          },
        +          "segment": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": "string"
        +          },
        +          "target": {
        +            "type": "string"
        +          },
        +          "tone": {
        +            "enum": [
        +              "good",
        +              "ok",
        +              "warn",
        +              "bad"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "metric",
        +          "name",
        +          "value",
        +          "display",
        +          "band",
        +          "tone",
        +          "read",
        +          "target",
        +          "segment",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "bookingUrl": {
        +      "type": "string"
        +    },
        +    "calculator": {
        +      "description": "Slug of the interactive calculator on rahuldsarker.co",
        +      "type": "string"
        +    },
        +    "compact": {
        +      "type": "boolean"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "inputs": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "kind": {
        +      "const": "calculator",
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "description": "Every \"Label: value\" line of the result; value is the first number on the line",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "display": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "currency",
        +                  "x",
        +                  "%",
        +                  "months"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "value",
        +          "unit",
        +          "display"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "description": "The calculator tool that produced this result",
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "tool",
        +    "title",
        +    "calculator",
        +    "url",
        +    "bookingUrl",
        +    "currency",
        +    "compact",
        +    "inputs",
        +    "metrics",
        +    "notes",
        +    "benchmarks"
        +  ],
        +  "type": "object"
        +}
  4. 114 tool updates
    • First observedab_test_significance_calculator
    • First observedabove_the_fold_messaging_clarity_grader
    • First observedacv_weight_planner
    • First observedad_creative_fatigue_forecaster
    • First observedad_frequency_risk_checker
    • First observedad_spend_waste_calculator
    • First observedae_sdr_hand_off_friction_calculator
    • First observedannual_growth_goal_back_calculator
    • First observedarr_multiple_calculator
    • First observedb2b_implementation_delay_cost_calculator
    • First observedbootstrapped_vs_venture_scaler_modeler
    • First observedbrand_vs_performance_budget_allocator
    • First observedburn_rate_optimization_forecaster
    • First observedcac_payback_period_matrix
    • First observedcart_abandonment_calculator
    • First observedchannel_saturation_estimator
    • First observedcheck_availability
    • First observedcompetitor_ad_spend_benchmarker
    • First observedcontract_redline_duration_predictor
    • First observedconversion_funnel
    • First observedcpa_to_cac_scalability_matrix
    • First observedcpl_cpa_calculator
    • First observedcreative_testing_duration_forecaster
    • First observedcrm_cleanup_roi_calculator
    • First observedcrm_roi_calculator
    • First observedcross_channel_ad_spend_allocator
    • First observedcross_sell_opportunity_estimator
    • First observedcta_visual_hierarchy_tester
    • First observedcustomer_expansion_revenue_matrix
    • First observedcustomer_success_capacity_planner
    • First observeddata_enrichment_value_predictor
    • First observeddeferred_revenue_amortization_planner
    • First observedenterprise_contract_discount_evaluator
    • First observedexit_intent_timing_optimizer
    • First observedexpansion_revenue_impact_simulator
    • First observedform_field_friction_cost_calculator
    • First observedfreemium_to_paid_pipeline_modeler
    • First observedfriction_point_identifier
    • First observedgoogle_search_impression_share_value_estimator
    • First observedgross_margin_impact_calculator
    • First observedgrowth_runway_extension_simulator
    • First observedgrowth_strategy_prioritization_tool
    • First observedgrowth_team_hiring_sequence_planner
    • First observedgtm_audit_scorecard
    • First observedhistorical_data_drift_estimator
    • First observedimpression_share_opportunity_matrix
    • First observedin_house_vs_fractional_cmo
    • First observedinbound_call_center_routing_auditor
    • First observedinternationalization_market_prioritization_grid
    • First observedlanding_page_vs_ad_match_quality_auditor
    • First observedlead_grading_calculator
    • First observedlead_magnet_copy_grader
    • First observedlead_quality_intent_evaluator
    • First observedlead_routing_delay_cost_calculator
    • First observedlead_scoring_logic_architect
    • First observedlinkedin_ad_cost_threshold_calculator
    • First observedlookalike_audience_pool_calculator
    • First observedltv_cac_calculator
    • First observedltv_growth_multiplier_simulator
    • First observedltv_to_cac_ratio_health_grader
    • First observedmarketing_agency_pitch_bullshit_detector
    • First observedmarketing_budget
    • First observedmicro_budget_ad_feasibility_checker
    • First observedmicro_conversion_value_modeler
    • First observedmobile_checkout_friction_tester
    • First observedmql_calculator
    • First observedmql_to_sales_disconnect_analyzer
    • First observedmrr_bridge_planner
    • First observedmrr_to_arr_calculator
    • First observednet_promoter_score_impact_modeler
    • First observednet_revenue_retention_forecaster
    • First observedno_show_rate_revenue_restorer
    • First observedorganic_traffic_value_monetizer
    • First observedpage_speed_leak_calculator
    • First observedpaid_search_intent_tier_grader
    • First observedperformance_marketing_margin_protector
    • First observedpipeline_velocity_equation_engine
    • First observedpost_ios14_blended_attribution_modeler
    • First observedppc_click_volume_predictor
    • First observedpricing_elasticity_sandbox
    • First observedpricing_page_architecture_grader
    • First observedproduct_led_growth_feasibility_grader
    • First observedproduct_market_fit_scoring_grader
    • First observedproduct_tour_effectiveness_grader
    • First observedproduct_usage_frequency_grader
    • First observedread_content
    • First observedrenewals_pipeline_health_grader
    • First observedretargeting_pool_size_estimator
    • First observedrevops_maturity_benchmarker
    • First observedroas_calculator
    • First observedroas_to_mer_converter
    • First observedrule_of_40_sandbox
    • First observedsaas_churn_cohort_visualizer
    • First observedsaas_magic_number_calculator
    • First observedsaas_quick_ratio_engine
    • First observedsaas_valuation_multiple_predictor
    • First observedsales_commission_tier_modeler
    • First observedsales_cycle_length_forecaster
    • First observedsales_pipeline_leak_evaluator
    • First observedsdr_capacity_and_inbound_quota_planner
    • First observedsearch_content
    • First observedseasonal_ad_cpm_predictor
    • First observedseat_utilization_risk_assessor
    • First observedsocial_proof_strength_auditor
    • First observedstrategic_pivot_risk_grader
    • First observedtech_stack_duplication_inspector
    • First observedthank_you_page_revenue_maximizer
    • First observedtotal_addressable_market_estimator
    • First observedtrust_badge_roi_estimator
    • First observedtypography_legibility_grader
    • First observedutm_generator_and_validation_helper
    • First observedux_pattern_anti_pattern_checker
    • First observedvalue_prop_strength_grader
    • First observedvideo_conversion_modeler

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides accurate SaaS metrics calculations (LTV, CAC, runway, health score, etc.) with formulas and interpretations for AI agents and founders, ensuring no hallucinated numbers.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Revenue intelligence for complex B2B growth. Your agent builds the assets technical founders sell with, and prepares them for real buyer conversations.
    30
    742 npm
    2
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Cross-source attribution across 37+ business tools. True ROAS in 14 seconds. Not a dashboard. A decision.
    24
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides 48 revenue intelligence tools that let AI assistants search deals, forecast revenue, analyze pipeline risk, manage outreach, and track value delivery via natural language.
    14 npm
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources