get_started
What this server is, what it will do for you right now without an account, and what an account adds. Call this first if you have no API key — it answers in one round trip instead of sending you to a website.
Takes no parameters.

studio.initePublished by inite.studioOfficial publisherv1.1.0Updated Oct 24, 2026
The scoring behind an audit allowed to say no. Twenty deterministic tools, offline, no account.
Deterministic scoring tools for startup idea audits: 21 pure-math functions that turn market, money and signal inputs into scores and GO/KILL verdicts.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/studio.inite%2Fideaudit-tools/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"ideaudit": {
"type": "http",
"url": "https://api.inite.studio/mcp"
}
}
}The deterministic scoring behind ideaudit, as a local MCP server. No account, no key, no network, no model calls — just the arithmetic.
Listed in the MCP registry as studio.inite/ideaudit-tools, which carries
both ways in: this package over stdio, and the hosted server over HTTP.
Installing straight from this repository — npx -y github:inite-ai/ideaudit-mcp
— also works and runs the same code.
The product's claim is that it is an audit allowed to say no. A verdict
nobody can inspect is a verdict nobody has to believe, so the part that
produces the number is open — including the number that says no. You can read
how three lens scores become KILL, disagree with the thresholds, and argue
about the arithmetic rather than about our word.
It is also the honest shape of the system. The server makes zero model calls; judgement lives in the skills, determinism lives in the tools. These are the tools.
Twenty tools, every one a pure function of its input:
compute_dealbreakers_v2 is the one that decides. Stage-aware weights,
confidence-weighted lens scores, and a deliberately risk-asymmetric verdict:
GO needs a score ≥ 80 and zero red flags and average confidence ≥ 0.6,
while the KILL gate is observer-invariant — a founder profile shifts every
threshold above the gate, and none of them below it. You cannot buy a better
answer by describing yourself more favourably. There is a test that says so.
Same input, same output as the hosted server — because it is the same specification object, imported rather than reimplemented. A test asserts that identity rather than comparing two copies, so the two cannot drift.
Be told where the numbers are rather than hunt for them:
src/specs/*.ts — one file per tool: what it accepts, what it means,
what it returns. compute-dealbreakers-v2.ts is the verdict.src/server.ts — the whole server, including what it refuses.src/__tests__/parity.test.ts — the claims above, as assertions. The
observer-invariant KILL gate is checked against all five archetypes.dist/bundle.js — the arithmetic, un-minified. computeBarrier is a
dozen lines and every constant is visible: 0.6 off the score per direct
competitor, 0.2 per adjacent, six points of range spent on SERP noise, and
labels at 18 / 12 / 6. Disagree with those numbers, not with our word.That last one is a build artefact and reads like one — the commented source of the maths lives in the monorepo this repository is mirrored from, and is not here. If you want the reasoning behind a threshold rather than the threshold itself, open an issue and ask; that is a cheaper conversation than either of us pretending.
Not withheld to make a point — these genuinely need somewhere to keep things and someone to pay for them:
That boundary is enforced rather than documented. The hosted
compute_dealbreakers_v2 takes an auditId; this one refuses it, by name,
instead of letting zod strip it silently and handing you a correct verdict
plus the false belief that it had been written down.
It serves these twenty tools and everything above them. Sign up at
inite.studio; --scope user matters, or the
registration is bound to one directory.
They compose. Register the local server for the arithmetic and the hosted one for everything else; tool names do not collide because the local set is a strict subset served under the same names, so whichever you register wins for those twenty and the rest resolve to the platform.
If you only want to check our maths against your own numbers, the local server alone is enough and always will be.
This repository is a projection. It is rebuilt and force-pushed from the monorepo that develops it every time the package changes, which means a pull request opened here would be overwritten by the next sync — through no fault of yours, and with no notification. Saying so is cheaper than letting someone find out by losing an afternoon.
Issues are the right channel and they are read: a threshold you think is wrong, a number you cannot reproduce, a tool that accepts something it should refuse. Bring the input you used — every tool here is deterministic, so a disagreement about an answer is always settleable.
You don't need to be an engineer. Open the repo in your coding agent and say
/contribute (Claude Code) — or "read AGENTS.md and help me report …" in any
other agent. It runs the tool on your input, finds the constant involved, and
files an issue a maintainer can settle — an issue, not a pull request, for the
reason above. AGENTS.md also explains why dist/ is committed and
how node scripts/verify-dist.mjs checks it against src/.
Apache-2.0. See LICENSE.
Source: README.md at commit 822ac38
What this server is, what it will do for you right now without an account, and what an account adds. Call this first if you have no API key — it answers in one round trip instead of sending you to a website.
Takes no parameters.
Compute barrier_score (0-24) + label (PRISTINE/OPEN/COMPETITIVE/CROWDED) from competitor counts + SERP noise fraction.
serpNoisedirectCompetitorCountrequiredadjacentCompetitorCountCompute budget_proof_score (0-10) + label (STRONG/CONFIRMED/WEAK/ABSENT) + purchase_intent_pct from pricing hits + review-site hits + intent mentions.
hasNamedPricingpricingHitsCountrequiredreviewSiteHitsCountpurchaseIntentMentionsCompute build_complexity_penalty (0-10, higher = worse) + per-factor breakdown. Hard tags: ml/realtime/blockchain/hardware/compliance/custom-ai/regulated/on-device-ai/iot.
externalApisCountrequiredintegrationsCountstackComplexityTagsCompute 12 deterministic collection scores (0-100) + badges + death reason for an enriched idea. Pure math. No external calls.
analysisIdrequiredenrichedDatarequiredCrossed-product audit explorer. Same input as compute_dealbreakers_v2 — returns substrate verdict (no-observer baseline) + crossed verdict (when observer supplied) + a 5-row matrix of {solo, cofounded_technical, cofounded_business, domain_expert, serial} archetype verdicts. Never persists; meant for the dashboard "view as [archetype]" dropdown and for previewing a verdict before committing to it.
stagerequiredsectorobserverlensScoresrequiredstageProbabilitieshasMajorContradictionunresolvedContradictionsMethodology v2 dealbreakers — stage-aware weights + confidence-weighted lens scoring + risk-asymmetric verdict (GO requires score≥80 AND zero red flags AND avg confidence≥0.6). Optional `observer` triggers the crossed-product pipeline: substrate verdict (no-observer baseline) PLUS crossed verdict (observer-perturbed weights, risk-tolerance shifted thresholds) PLUS 5-row archetype matrix. The KILL gate (≥2 blockers / score<50) is observer-invariant — fatal stays fatal.
stagerequiredsectorobserverlensScoresrequiredstageProbabilitieshasMajorContradictionunresolvedContradictionsCompute funding_momentum_score (0-10) + badge (HOT/WARM/COOL/COLD) from tier-weighted funding-article hit counts.
hitsByTierrequiredrecent30dHitsCompute hiring_demand_score (0-10) from priority-weighted ATS site hit counts (use registries/hiring-sources for priorities).
sitesrequiredLRS composite v2 — 6 components (SV, Pain, Barrier, Monet, X-Signal, Budget-Proof). Default Python weights 0.18/0.22/0.18/0.14/0.18/0.10 sum=1.0. Returns BOTH weighted score and equal-weight baseline (per OECD Handbook + Greco 2018 — equal-weight is defensible default when no outcome calibration exists). buildComplexityPenalty 0-10 subtracted from score. sectorProfile (ai_native/creator/crypto) opt-in reshuffles SV→0.16, X→0.20. Labels: THE_ROAR (≥80) / PROMISING (≥60) / EXPERIMENTAL (≥40) / WEAK_SIGNAL (<40).
barrierScorerequiredxSignalScorerequiredsectorProfilesocialPainScorerequiredbudgetProofScorerequiredmonetizationScorerequiredsearchVelocityScorerequiredbuildComplexityPenaltyCompose lrs_final_100 (0-100) + label (WEAK/EMERGING/GOOD/STRONG/ELITE) + leaderboard_eligible flag + sub-percent breakdown. Weights: sv 0.25, sp 0.30, barrier 0.25, monetization 0.20.
barrierScorerequiredsocialPainScorerequiredmonetizationScorerequiredsearchVelocityScorerequiredCompute monetization_score (0-21) + label + has_pricing_anchors from pricing anchors + model tags + deal cycle hint.
dealCyclemodelTagspricingAnchorsCountrequiredMulti-source TAM consensus. Pass 2-3 sources of market-size text. Optional `estimateYear` per source — when supplied, the result includes yearRange and a hasStaleData flag (true if the span exceeds 5 years). Outliers are dropped by modified Z-score over the median absolute deviation when n≥4. Returns the extracted dollar amounts + consensus median + an agreement score 0..1, where 1 means every source lands within 20% of the median.
inputsrequiredWave 5 N.4 — compute ppc_spend_score (0-10) + label (STRONG/CONFIRMED/WEAK/ABSENT) + market_saturation from PPC traffic projection (avgCpcUsd, totalMonthlySpendUsd, optional competitorBidders + competition). Feed numbers from dataforseo_ad_traffic.
avgCpcUsdrequiredcompetitioncompetitorBidderstotalMonthlySpendUsdrequiredSearch velocity (0-25) v2 — canonical 0.40*volume + 0.30*trend + 0.20*intent + 0.10*geo. CRITICAL: externalVolumeNorm MUST come from external sources (Amazon BSR / app store installs / job-board postings) — NOT the Trends timeline (would double-count, since Trends is itself normalized 0-100 within window). trendNorm is derived internally from trendsTimelineValues. Trends peak<50 zeroes the trend component (Yotpo SEO floor). Optional daysSinceLastSignal applies exponential freshness decay (search half-life 90d).
intentNormrequiredgeoSpreadNormrequiredexternalVolumeNormrequireddaysSinceLastSignaltrendsTimelineValuesrequiredCompute search_velocity_score (0-25) from Trends timeline values + rising queries count + geo region count.
geoRegionCounttimelineValuesrequiredrisingQueriesCountCompute social_pain_score (0-30) + total mentions + dominant perspective (business/consumer/trend/mixed).
painMentionsrequiredcategoryCountsintentMentionsurgencyMentionsCompose composite_urgency_score (0-10) + badge (LOW/MEDIUM/HIGH/VERY_HIGH/EXTREME) from 3 sub-scores: news, pain, hiring.
newsSignalScorerequiredpainSignalScorerequiredhiringSignalScorerequiredCompute x_signal_score (0-20) + recency share + positivity rate from X/Twitter mention counts.
mentionsCountrequiredrecent7dCountfounderMentionssentimentNegativesentimentPositiveDerive a falsifiable, data-driven list of kill criteria from upstream signals — the outputs of validate_unit_economics and compute_dealbreakers_v2, plus an ICP drift count. Returns one row per rule with {rule, threshold, status, evidence?}, where status is tripped_now / monitor / cleared. Replaces prose kill criteria, which are tautologies that can never fire.
unitEcondealbreakersicpDriftCountSanity-check a unit-economics row before publishing it in a business-model slide. Catches the math-drift class of failures (customers × ARPU ≠ revenue), enforces the LTV/CAC ≥ 1.5 floor, the cohort-positivity check, and CAC payback bounds. Returns {ok, errors[{rule, severity, detail}], derived{ratios}}. Skills MUST regenerate the row when ok=false (block-severity errors); warn-severity errors should be surfaced in the final report but do not gate publication. No LLM calls.
cacltvarpurequiredcustomersrequiredgrossMarginmonthlyChurnannualRevenuerequired90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare a license in the repository or the registry entry.
claude mcp add ideaudit-tools -- npx -y @inite/ideaudit-tools$ compute_dealbreakers_v2 {"auditId": "…", …}{ "error": "unknown_arguments", "unknown": ["auditId"], "message": "This server computes; it stores nothing. …" }claude mcp add ideaudit --transport http https://api.inite.studio/mcp \ --scope user --header "Authorization: Bearer $IDEAUDIT_API_KEY"