{"openapi":"3.1.0","info":{"title":"Systems Capacity Calculators","version":"1.0.0","description":"Big-O growth, RAID capacity, storage growth, latency and throughput budgets, Little's law, queueing, Erlang and SLA downtime. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Systems Capacity Calculators: Big-O growth, RAID capacity, storage growth, latency and throughput budgets, Little's law, queueing, Erlang and SLA downtime. Use /big-o to compare growth classes and the largest n a time budget allows, /raid-capacity for usable space, fault tolerance and rebuild risk, /storage-growth for compound growth and time-to-full, /throughput-budget for requests and IOPS to bandwidth, /latency-budget for serial stage budgets and tail amplification, /littles-law for L = lambda x W, /queue-model for M/M/1 and M/M/c queues, /erlang-staffing for trunks or agents needed, /sla-downtime for nines to downtime and series or parallel availability, and /capacity-planning for units needed with redundancy and growth. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://data-calc.x402tookit.com"}],"paths":{"/big-o":{"get":{"operationId":"big_o","summary":"Compare growth classes (n, n log n, n^2, 2^n, n!) at a given n: operation counts, run time, largest n a time budget allows.","description":"Compare growth classes (n, n log n, n^2, 2^n, n!) at a given n: operation counts, run time, largest n a time budget allows.","tags":["big-o","complexity","algorithms","growth"],"parameters":[{"name":"n","in":"query","required":true,"description":"Input size n, 1 to 1e12 (for 2^n and n! the count is shown as a power of ten)","schema":{"type":"number"}},{"name":"opsPerSecond","in":"query","required":false,"description":"Operations per second of your machine (default 1e9)","schema":{"type":"number"}},{"name":"budgetSeconds","in":"query","required":false,"description":"Time budget in seconds for the 'largest n' column (default 1)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"n":{"type":["null","number"]},"opsPerSecond":{"type":["null","number"]},"budgetSeconds":{"type":["null","number"]},"operationBudget":{"type":["null","number"]},"classes":{"type":["array","null"],"items":{"type":"object","properties":{"class":{"type":["null","string"]},"name":{"type":["null","string"]},"log10Operations":{"type":["null","number"]},"operations":{"type":["null","string"]},"seconds":{"type":["null","number"]},"time":{"type":["null","string"]},"feasibleWithinBudget":{"type":["boolean","null"]},"largestNWithinBudget":{"type":["null","number"]}}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SOME_INFEASIBLE","summary":"n = 1,000 at 1.0e+9 ops/s: O(1), O(log n), O(n), O(n log n), O(n^2), O(n^3) fit in 1 s; too slow: O(2^n), O(n!).","reasons":["Operation counts are the class formula with constant 1 (log base 2), so they compare growth rates, not real run times.","Largest n = the biggest input whose step count stays within the budget (budget seconds x ops per second)."],"n":1000,"opsPerSecond":1000000000,"budgetSeconds":1,"operationBudget":1000000000,"classes":[{"class":"O(1)","name":"constant","log10Operations":0,"operations":"1","seconds":1e-9,"time":"under a microsecond","feasibleWithinBudget":true,"largestNWithinBudget":null},{"class":"O(log n)","name":"logarithmic","log10Operations":0.999,"operations":"10","seconds":9.965784284662073e-9,"time":"under a microsecond","feasibleWithinBudget":true,"largestNWithinBudget":null}],"degraded":false,"notChecked":["constant factors, caches, parallelism and memory: Big-O ignores them and real programs differ by 10x or more","average versus worst case, and space complexity","…1 more"],"source":"computed locally","asOf":"2026-10-11T20:19:38.657Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/big-o"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/big-o"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/big-o"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/big-o"}}]}}},"/capacity-planning":{"get":{"operationId":"capacity_planning","summary":"Units needed for a peak load at a target utilisation plus N+k redundancy, utilisation after failures, and growth projection.","description":"Units needed for a peak load at a target utilisation plus N+k redundancy, utilisation after failures, and growth projection.","tags":["capacity-planning","redundancy","utilization","scaling"],"parameters":[{"name":"peakLoad","in":"query","required":true,"description":"Peak load in any unit (requests/s, jobs/hour, GB/s), above 0","schema":{"type":"number"}},{"name":"capacityPerUnit","in":"query","required":true,"description":"Maximum load ONE unit (server, node, pod) handles in the same unit, measured at its limit","schema":{"type":"number"}},{"name":"targetUtilizationPercent","in":"query","required":false,"description":"Highest steady utilisation you will run at, 10 to 100 (default 70)","schema":{"type":"number"}},{"name":"spareUnits","in":"query","required":false,"description":"Extra units kept so the cluster survives failures (N+k, default 1)","schema":{"type":"integer"}},{"name":"growthPercentPerMonth","in":"query","required":false,"description":"Compound monthly growth of the peak load for a projection (default 0)","schema":{"type":"number"}},{"name":"months","in":"query","required":false,"description":"Projection horizon in months, 1 to 120 (default 12)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"unitsForLoad":{"type":["null","number"]},"spareUnits":{"type":["null","number"]},"unitsTotal":{"type":["null","number"]},"usableCapacityPerUnit":{"type":["null","number"]},"utilizationNormalPercent":{"type":["null","number"]},"utilizationAtTargetWithNeedOnlyPercent":{"type":["null","number"]},"utilizationAfterLosingSparesPercent":{"type":["null","number"]},"utilizationAfterLosingOneUnitPercent":{"type":["null","number"]},"headroomPercentOverPeak":{"type":["null","number"]},"loadAtWhichTotalSaturates":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"RESILIENT","summary":"Peak 5000 at 800 per unit and a 70% utilisation target needs 9 units, 10 with 1 spare; after losing 1 unit utilisation is 69.44%.","reasons":["Units for load = ceil(peak / (capacity x target utilisation)); spares are added on top so a failure does not push the survivors over target.","Check the post-failure utilisation: if it exceeds your latency knee (often 80 to 85%), add a spare."],"unitsForLoad":9,"spareUnits":1,"unitsTotal":10,"usableCapacityPerUnit":560,"utilizationNormalPercent":62.5,"utilizationAtTargetWithNeedOnlyPercent":69.44,"utilizationAfterLosingSparesPercent":69.44,"utilizationAfterLosingOneUnitPercent":69.44,"headroomPercentOverPeak":60,"loadAtWhichTotalSaturates":8000,"degraded":false,"notChecked":["whether capacityPerUnit was measured under realistic load (synthetic benchmarks overstate it)","non-linear scaling: coordination, shared databases and caches mean 2x units rarely gives 2x capacity","…2 more"],"source":"computed locally","asOf":"2026-10-11T20:19:38.922Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/capacity-planning"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/capacity-planning"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/capacity-planning"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/capacity-planning"}}]}}},"/erlang-staffing":{"get":{"operationId":"erlang_staffing","summary":"Erlang B and C: trunks for a blocking target, or agents for a service level such as 80 percent answered in 20 seconds.","description":"Erlang B and C: trunks for a blocking target, or agents for a service level such as 80 percent answered in 20 seconds.","tags":["erlang","call-center","staffing","trunks"],"parameters":[{"name":"trafficErlangs","in":"query","required":true,"description":"Offered load A in erlangs = arrival rate x average handling time (e.g. 120 calls/hour x 3 min = 6 E)","schema":{"type":"number"}},{"name":"mode","in":"query","required":false,"description":"c (default): agents for a service level, queueing allowed. b: trunks for a blocking target, no queue","schema":{"type":"string"}},{"name":"targetBlocking","in":"query","required":false,"description":"Mode b: acceptable blocking probability, e.g. 0.01 (default 0.01)","schema":{"type":"number"}},{"name":"serviceLevel","in":"query","required":false,"description":"Mode c: fraction answered within answerSeconds, e.g. 0.8 (default 0.8)","schema":{"type":"number"}},{"name":"answerSeconds","in":"query","required":false,"description":"Mode c: the answer-time threshold in seconds (default 20)","schema":{"type":"number"}},{"name":"handlingSeconds","in":"query","required":false,"description":"Mode c: average handling time in seconds (default 180)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mode":{"type":["null","string"]},"trafficErlangs":{"type":["null","number"]},"targetBlocking":{"type":["null","number"]},"trunksNeeded":{"type":["null","number"]},"blockingAtSolution":{"type":["null","number"]},"neighbours":{"type":["array","null"],"items":{"type":"object","properties":{"trunks":{"type":["null","number"]},"blocking":{"type":["null","number"]},"carriedErlangs":{"type":["null","number"]},"occupancy":{"type":["null","number"]}}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SIZED","summary":"10 erlangs needs 18 trunks for at most 1.00% blocking (actual 0.714%).","reasons":["Erlang B assumes blocked calls are cleared (lost), with no queue: B(0) = 1, B(k) = A B(k-1) / (k + A B(k-1)).","Trunks needed grow more slowly than traffic: bigger groups run more efficiently."],"mode":"b","trafficErlangs":10,"targetBlocking":0.01,"trunksNeeded":18,"blockingAtSolution":0.007142438157899779,"neighbours":[{"trunks":15,"blocking":0.0364969454723708,"carriedErlangs":9.635030545276292,"occupancy":0.6423353696850861},{"trunks":16,"blocking":0.022301872040363657,"carriedErlangs":9.776981279596363,"occupancy":0.6110613299747727}],"degraded":false,"notChecked":["shrinkage: breaks, absences and training (divide by the share of time agents are actually on the phones)","abandonment and retrials, which change real offered load","…2 more"],"source":"computed locally (Erlang B and C)","asOf":"2026-10-11T20:19:39.187Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/erlang-staffing"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/erlang-staffing"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/erlang-staffing"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/erlang-staffing"}}]}}},"/latency-budget":{"get":{"operationId":"latency_budget","summary":"Add up serial stage latencies against a target (share per stage, slack, bottleneck) and compute tail amplification from fan-out.","description":"Add up serial stage latencies against a target (share per stage, slack, bottleneck) and compute tail amplification from fan-out.","tags":["latency","slo","tail-latency","budget"],"parameters":[{"name":"stages","in":"query","required":true,"description":"name:milliseconds pairs, comma separated: dns:20,tls:40,app:120,db:60","schema":{"type":"string"}},{"name":"targetMs","in":"query","required":false,"description":"Total latency target in milliseconds, to compute slack","schema":{"type":"number"}},{"name":"fanOut","in":"query","required":false,"description":"Parallel calls a request waits for (each at its own percentile), 1 to 100000","schema":{"type":"integer"}},{"name":"percentile","in":"query","required":false,"description":"Per-call percentile, 50 to 99.9999 (default 99): the chance a single call is within its stated latency","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"serialTotalMs":{"type":["null","number"]},"bottleneck":{"type":["null","string"]},"stages":{"type":["array","null"],"items":{"type":"object","properties":{"stage":{"type":["null","string"]},"ms":{"type":["null","number"]},"sharePercent":{"type":["null","number"]}}}},"targetMs":{"type":["null","number"]},"slackMs":{"type":["null","number"]},"targetUsedPercent":{"type":["null","number"]},"fanOut":{"type":["null","object"],"properties":{"calls":{"type":["null","number"]},"perCallPercentile":{"type":["null","number"]},"probabilityAtLeastOneCallSlowerThanItsPercentile":{"type":["null","number"]},"requestsHitByTailPercent":{"type":["null","number"]},"perCallPercentileNeededForSameOverall":{"type":["null","number"]},"note":{"type":["null","string"]}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"WITHIN_TARGET","summary":"Serial total 240 ms; biggest stage app (50%). Within the 300 ms target with 60 ms to spare. Fan-out 100 calls at p99: 63.4% of requests see at least one slow call.","reasons":["Serial stages add; the share column shows where to optimise first.","Tail amplification: with N parallel calls the chance that at least one is slower than its p99 is 1 - 0.99^N (63% for N = 100), so the request is as slow as its slowest call."],"serialTotalMs":240,"bottleneck":"app","stages":[{"stage":"dns","ms":20,"sharePercent":8.33},{"stage":"tls","ms":40,"sharePercent":16.67}],"targetMs":300,"slackMs":60,"targetUsedPercent":80,"fanOut":{"calls":100,"perCallPercentile":99,"probabilityAtLeastOneCallSlowerThanItsPercentile":0.6339676587267709,"requestsHitByTailPercent":63.3968,"perCallPercentileNeededForSameOverall":99.98995016917583,"note":"to have 99% of requests entirely within the per-call latency, each call must meet its target 99.9900% of the time"},"degraded":false,"notChecked":["the distribution of each stage: adding percentiles of stages (p99 + p99) overstates the p99 of the sum, but adding means is exact","queueing delay under load (see /queue-model) and retries","…1 more"],"source":"computed locally","asOf":"2026-10-11T20:19:39.450Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/latency-budget"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/latency-budget"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/latency-budget"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/latency-budget"}}]}}},"/littles-law":{"get":{"operationId":"littles_law","summary":"Little's law L = rate x time in system: solve for concurrency, throughput or latency given any two; sizes pools.","description":"Little's law L = rate x time in system: solve for concurrency, throughput or latency given any two; sizes pools.","tags":["littles-law","queueing","concurrency","capacity-planning"],"parameters":[{"name":"arrivalRate","in":"query","required":false,"description":"Throughput lambda: items entering (and leaving) per second","schema":{"type":"number"}},{"name":"timeInSystem","in":"query","required":false,"description":"Average time W an item spends in the system (use timeUnit)","schema":{"type":"number"}},{"name":"itemsInSystem","in":"query","required":false,"description":"Average number L of items in the system (concurrency, connections, queue plus service)","schema":{"type":"number"}},{"name":"timeUnit","in":"query","required":false,"description":"Unit of timeInSystem: ms, s (default), min or h","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"itemsInSystem":{"type":["null","number"]},"arrivalRatePerSecond":{"type":["null","number"]},"timeInSystemSeconds":{"type":["null","number"]},"timeInSystemInUnit":{"type":["null","number"]},"timeUnit":{"type":["null","string"]},"solvedFor":{"type":["null","string"]},"poolSizeAt70PercentUtilization":{"type":["null","number"]},"poolSizeAt50PercentUtilization":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SOLVED","summary":"L = 10 items, lambda = 50 per second, W = 200 ms -> about 10 concurrent items (a pool of 10 would be 100% busy).","reasons":["L = lambda x W holds for any stable system, whatever the arrival or service distribution.","To size a connection or thread pool, use L as the average busy count and add headroom (at 70% target utilisation: L / 0.7).","…1 more"],"itemsInSystem":10,"arrivalRatePerSecond":50,"timeInSystemSeconds":0.2,"timeInSystemInUnit":200,"timeUnit":"ms","solvedFor":"itemsInSystem","poolSizeAt70PercentUtilization":15,"poolSizeAt50PercentUtilization":20,"degraded":false,"notChecked":["that the system is stable and in steady state over the averaging window (Little's law needs long-run averages)","variance, percentiles and bursts: the law is about averages only","…1 more"],"source":"computed locally (Little 1961)","asOf":"2026-10-11T20:19:39.714Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/littles-law"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/littles-law"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/littles-law"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/littles-law"}}]}}},"/queue-model":{"get":{"operationId":"queue_model","summary":"M/M/1 and M/M/c queue: utilisation, probability of waiting (Erlang C), queue length, wait and response time, tail odds.","description":"M/M/1 and M/M/c queue: utilisation, probability of waiting (Erlang C), queue length, wait and response time, tail odds.","tags":["queueing","mm1","mmc","erlang-c"],"parameters":[{"name":"arrivalRate","in":"query","required":true,"description":"Arrival rate lambda per time unit (e.g. per second)","schema":{"type":"number"}},{"name":"serviceRate","in":"query","required":true,"description":"Service rate mu of ONE server per the same time unit (1 / mean service time)","schema":{"type":"number"}},{"name":"servers","in":"query","required":false,"description":"Number of servers c (default 1 = M/M/1), 1 to 1000","schema":{"type":"integer"}},{"name":"waitThreshold","in":"query","required":false,"description":"Optional time t (same unit as the rates inverse): returns P(wait in queue > t)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"model":{"type":["null","string"]},"offeredLoadErlangs":{"type":["null","number"]},"utilization":{"type":["null","number"]},"probabilityOfWaiting":{"type":["null","number"]},"probabilityNoWait":{"type":["null","number"]},"probabilityEmptySystem":{"type":["null","number"]},"meanQueueLength":{"type":["null","number"]},"meanInSystem":{"type":["null","number"]},"meanWaitInQueue":{"type":["null","number"]},"meanTimeInSystem":{"type":["null","number"]},"meanServiceTime":{"type":["null","number"]},"meanWaitGivenWaiting":{"type":["null","number"]},"probabilityWaitExceedsThreshold":{"type":["null","object"],"properties":{"t":{"type":["null","number"]},"probability":{"type":["null","number"]}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"BUSY","summary":"M/M/1: utilisation 80.0%, P(wait) 80.00%, mean wait 0.4000, response 0.5000 (service alone 0.1000), 3.200 waiting on average. P(wait > 0.5) = 29.43%.","reasons":["Waiting time explodes as utilisation approaches 100%: for M/M/1 the mean wait is rho / (mu (1 - rho)).","Erlang C gives the probability that an arrival must queue; pooling servers (one queue, c servers) is much better than c separate queues.","…1 more"],"model":"M/M/1","offeredLoadErlangs":0.8,"utilization":0.8,"probabilityOfWaiting":0.8,"probabilityNoWait":0.19999999999999996,"probabilityEmptySystem":0.19999999999999996,"meanQueueLength":3.2000000000000015,"meanInSystem":4.000000000000002,"meanWaitInQueue":0.4000000000000002,"meanTimeInSystem":0.5000000000000002,"meanServiceTime":0.1,"meanWaitGivenWaiting":0.5,"probabilityWaitExceedsThreshold":{"t":0.5,"probability":0.2943035529371539},"degraded":false,"notChecked":["non-Poisson arrivals and non-exponential service times (real service times with higher variance wait longer: Pollaczek-Khinchine for M/G/1)","limited queue capacity, abandonment and retries","…2 more"],"source":"computed locally (M/M/c queueing theory)","asOf":"2026-10-11T20:19:39.979Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/queue-model"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/queue-model"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/queue-model"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/queue-model"}}]}}},"/raid-capacity":{"get":{"operationId":"raid_capacity","summary":"RAID 0/1/5/6/10 and ZFS RAID-Z usable capacity, efficiency, fault tolerance, write penalty and rebuild read-error risk.","description":"RAID 0/1/5/6/10 and ZFS RAID-Z usable capacity, efficiency, fault tolerance, write penalty and rebuild read-error risk.","tags":["raid","storage","capacity","zfs"],"parameters":[{"name":"level","in":"query","required":true,"description":"One of jbod, raid0, raid1, raid5, raid6, raid10, raidz1, raidz2, raidz3","schema":{"type":"string"}},{"name":"disks","in":"query","required":true,"description":"Number of disks in the array, 1 to 128","schema":{"type":"integer"}},{"name":"diskTb","in":"query","required":true,"description":"Capacity of each disk in decimal terabytes (1 TB = 10^12 bytes), 0.001 to 1000","schema":{"type":"number"}},{"name":"spares","in":"query","required":false,"description":"Hot spares, not counted in capacity (default 0)","schema":{"type":"integer"}},{"name":"ureBits","in":"query","required":false,"description":"Unrecoverable read error rate as 1 error per this many bits read (default 1e14 consumer; enterprise 1e15)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"level":{"type":["null","string"]},"label":{"type":["null","string"]},"disks":{"type":["null","number"]},"spares":{"type":["null","number"]},"diskTb":{"type":["null","number"]},"rawTb":{"type":["null","number"]},"usableTb":{"type":["null","number"]},"usableTiB":{"type":["null","number"]},"efficiencyPercent":{"type":["null","number"]},"faultTolerance":{"type":["null","number"]},"faultToleranceBestCase":{"type":["null","number"]},"randomWritePenalty":{"type":["null","number"]},"rebuild":{"type":["null","object"],"properties":{"terabytesRead":{"type":["null","number"]},"ureOneErrorPerBits":{"type":["null","number"]},"probabilityOfReadError":{"type":["null","number"]}}},"disksTotalInstalled":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"REBUILD_RISK_HIGH","summary":"RAID 5 (single parity), 4 x 4 TB: 12.00 TB usable (10.91 TiB), 75.0% efficient, survives 1 disk failure. Rebuild reads 12 TB: 61.7% chance of an unrecoverable read error.","reasons":["With single redundancy, a read error during rebuild may mean data loss for the affected stripe (and an aborted rebuild on some controllers).","Capacity is in decimal terabytes as sold; operating systems that report TiB show about 9% less.","…1 more"],"level":"raid5","label":"RAID 5 (single parity)","disks":4,"spares":0,"diskTb":4,"rawTb":16,"usableTb":12,"usableTiB":10.9139,"efficiencyPercent":75,"faultTolerance":1,"faultToleranceBestCase":1,"randomWritePenalty":4,"rebuild":{"terabytesRead":12,"ureOneErrorPerBits":100000000000000,"probabilityOfReadError":0.6171071140248879},"disksTotalInstalled":4,"degraded":false,"notChecked":["filesystem and metadata overhead, ZFS slop space and reserved blocks (real usable space is a few percent lower)","performance beyond the textbook write penalty: controller, cache and workload dominate","…2 more"],"source":"computed locally (RAID level definitions)","asOf":"2026-10-11T20:19:40.243Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/raid-capacity"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/raid-capacity"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/raid-capacity"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/raid-capacity"}}]}}},"/sla-downtime":{"get":{"operationId":"sla_downtime","summary":"SLA availability (99.9 percent, three nines) to allowed downtime per day, month and year; series and parallel composition.","description":"SLA availability (99.9 percent, three nines) to allowed downtime per day, month and year; series and parallel composition.","tags":["sla","uptime","availability","nines"],"parameters":[{"name":"availability","in":"query","required":true,"description":"Availability in percent, 0 to 99.99999999 (99.9 = three nines)","schema":{"type":"number"}},{"name":"seriesWith","in":"query","required":false,"description":"Other availabilities (percent, comma separated) of components that must ALL work, in series with this one","schema":{"type":"string"}},{"name":"replicas","in":"query","required":false,"description":"Identical independent replicas of this component, any one of which suffices (parallel), 1 to 20","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"availabilityPercent":{"type":["null","number"]},"nines":{"type":["null","number"]},"allowedDowntime":{"type":["array","null"],"items":{"type":"object","properties":{"period":{"type":["null","string"]},"downtimeSeconds":{"type":["null","number"]},"downtime":{"type":["null","string"]}}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"STANDARD_SLA","summary":"99.9% (3 nines) allows 8 h 45 min 36 s per 365-day year, 43 min 12 s per 30-day month, 1 min 26.4 s per day.","reasons":["Downtime = (1 - availability) x period; the year is 365 days and the month 30 days.","Series (all must work): multiply availabilities, so the chain is weaker than its weakest link. Parallel (any one suffices): multiply unavailabilities.","…1 more"],"availabilityPercent":99.9,"nines":3,"allowedDowntime":[{"period":"per day","downtimeSeconds":86.39999999999048,"downtime":"1 min 26.4 s"},{"period":"per week","downtimeSeconds":604.7999999999333,"downtime":"10 min 4.8 s"}],"degraded":false,"notChecked":["how your provider measures availability (the monitored window, partial outages, excluded maintenance and the credits the SLA actually pays)","failure correlation: replicas in one data center share power, network and software bugs, so the parallel figure is an upper bound","…1 more"],"source":"computed locally","asOf":"2026-10-11T20:19:40.493Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/sla-downtime"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/sla-downtime"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/sla-downtime"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/sla-downtime"}}]}}},"/storage-growth":{"get":{"operationId":"storage_growth","summary":"Compound storage growth: size after N months, raw capacity with replication and overhead, months to double, months until full.","description":"Compound storage growth: size after N months, raw capacity with replication and overhead, months to double, months until full.","tags":["storage","growth","capacity-planning","compound"],"parameters":[{"name":"current","in":"query","required":true,"description":"Current data size (any unit, e.g. TB); results use the same unit","schema":{"type":"number"}},{"name":"growthPercentPerMonth","in":"query","required":true,"description":"Compound growth per month in percent, -50 to 500","schema":{"type":"number"}},{"name":"months","in":"query","required":false,"description":"Planning horizon in months, 1 to 600 (default 12)","schema":{"type":"integer"}},{"name":"replication","in":"query","required":false,"description":"Copies kept (replication factor, default 1; RAID or erasure-coding overhead can be given as 1.5, and so on)","schema":{"type":"number"}},{"name":"overheadPercent","in":"query","required":false,"description":"Extra space for snapshots, indexes and filesystem overhead, in percent (default 0)","schema":{"type":"number"}},{"name":"capacity","in":"query","required":false,"description":"Installed raw capacity (same unit): adds months until it is full","schema":{"type":"number"}},{"name":"maxUtilizationPercent","in":"query","required":false,"description":"Fill level you will not exceed, 10 to 100 (default 80)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"growthPercentPerMonth":{"type":["null","number"]},"equivalentAnnualGrowthPercent":{"type":["null","number"]},"monthsToDouble":{"type":["null","number"]},"atHorizon":{"type":["null","object"],"properties":{"months":{"type":["null","number"]},"logical":{"type":["null","number"]},"rawNeeded":{"type":["null","number"]}}},"rawMultiplier":{"type":["null","number"]},"timeline":{"type":["array","null"],"items":{"type":"object","properties":{"month":{"type":["null","number"]},"logical":{"type":["null","number"]},"rawNeeded":{"type":["null","number"]}}}},"capacity":{"type":["null","object"],"properties":{"installedRaw":{"type":["null","number"]},"usableLimit":{"type":["null","number"]},"maxUtilizationPercent":{"type":["null","number"]},"monthsUntilLimit":{"type":["null","number"]},"monthsUntilFullAt100Percent":{"type":["null","number"]},"utilizationNowPercent":{"type":["null","number"]},"utilizationAtHorizonPercent":{"type":["null","number"]}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"FITS_HORIZON","summary":"100 growing 5% per month reaches 179.59 after 12 months (179.59 raw with replication x1); about 80% per year, doubling every 14.2 months. Reaches 80% of 500 in 28.4 months.","reasons":["size(t) = current x (1 + g)^t; months to double = ln 2 / ln(1 + g); months to limit = ln(limit / start) / ln(1 + g).","Raw capacity multiplies logical size by the replication factor and by (1 + overhead)."],"growthPercentPerMonth":5,"equivalentAnnualGrowthPercent":79.59,"monthsToDouble":14.21,"atHorizon":{"months":12,"logical":179.585632602213,"rawNeeded":179.585632602213},"rawMultiplier":1,"timeline":[{"month":1,"logical":105,"rawNeeded":105},{"month":3,"logical":115.7625,"rawNeeded":115.7625}],"capacity":{"installedRaw":500,"usableLimit":400,"maxUtilizationPercent":80,"monthsUntilLimit":28.41,"monthsUntilFullAt100Percent":32.99,"utilizationNowPercent":20,"utilizationAtHorizonPercent":35.92},"degraded":false,"notChecked":["real growth, which is rarely smooth (launches, migrations, retention changes)","compression and deduplication ratios","…2 more"],"source":"computed locally (compound growth)","asOf":"2026-10-11T20:19:40.759Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/storage-growth"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/storage-growth"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/storage-growth"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/storage-growth"}}]}}},"/throughput-budget":{"get":{"operationId":"throughput_budget","summary":"Requests per second times payload size to Mbps with peak factor, protocol overhead and link headroom; or IOPS to MB/s.","description":"Requests per second times payload size to Mbps with peak factor, protocol overhead and link headroom; or IOPS to MB/s.","tags":["bandwidth","throughput","iops","capacity-planning"],"parameters":[{"name":"requestsPerSecond","in":"query","required":true,"description":"Average requests (or I/O operations) per second, 0.001 to 1e9","schema":{"type":"number"}},{"name":"bytesPerRequest","in":"query","required":true,"description":"Average payload size per request in bytes (a 4 KiB block = 4096), 1 to 1e12","schema":{"type":"number"}},{"name":"peakFactor","in":"query","required":false,"description":"Peak-to-average ratio (default 1)","schema":{"type":"number"}},{"name":"overheadPercent","in":"query","required":false,"description":"Protocol overhead added to the payload, percent (default 0; TCP/IP/Ethernet is about 5 to 10)","schema":{"type":"number"}},{"name":"targetUtilizationPercent","in":"query","required":false,"description":"Highest sustained link utilisation you accept, 10 to 100 (default 70)","schema":{"type":"number"}},{"name":"linkMbps","in":"query","required":false,"description":"Optional existing link capacity in Mbps, to check fit","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"averageMbps":{"type":["null","number"]},"peakMbps":{"type":["null","number"]},"provisionedMbps":{"type":["null","number"]},"averageMBps":{"type":["null","number"]},"averageMiBps":{"type":["null","number"]},"dataPerDayGB":{"type":["null","number"]},"dataPerMonthTB":{"type":["null","number"]},"targetUtilizationPercent":{"type":["null","number"]},"suggestedLink":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SIZED","summary":"1000 req/s x 100000 bytes = 800 Mbps average, 1600 Mbps at peak x2; provision about 2285.714 Mbps to stay under 70% utilisation (10 Gbps class).","reasons":["Mbps = requests/s x bytes x 8 x (1 + overhead) / 10^6 (decimal megabits).","Provisioned = peak / target utilisation: a link running hot adds queueing delay, so leave headroom.","…1 more"],"averageMbps":800,"peakMbps":1600,"provisionedMbps":2285.714,"averageMBps":100,"averageMiBps":95.367,"dataPerDayGB":8640,"dataPerMonthTB":259.2,"targetUtilizationPercent":70,"suggestedLink":"10 Gbps","degraded":false,"notChecked":["compression, caching and CDN offload, which cut real traffic","response versus request direction (give the larger direction)","…2 more"],"source":"computed locally","asOf":"2026-10-11T20:19:41.023Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/throughput-budget"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/throughput-budget"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/throughput-budget"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://data-calc.x402tookit.com/throughput-budget"}}]}}}}}