ideaudit

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.

VerifiedStreamable HTTPWeb executableData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Deterministic scoring tools for startup idea audits: 21 pure-math functions that turn market, money and signal inputs into scores and GO/KILL verdicts.

What you can do
  • Get oriented with a single call explaining what the server does and what an account adds
  • Compute the verdict: dealbreakers v2, crossed archetype matrix, and derived kill criteria
  • Compose composite scores: LRS composite (v1 and v2), urgency composite, and 12 collection scores
  • Score market shape: barrier, multi-source TAM consensus, search velocity (v1 and v2), social pain
  • Score money: unit-economics validation, monetization, budget proof, PPC spend signal
  • Score signals: funding momentum, hiring demand, X/Twitter signal, build complexity
When to use it
Useful when you want an assistant to score a startup or product idea with transparent, repeatable arithmetic instead of model judgement, or to check the audit numbers against your own inputs. The local package alone is enough if you only want to verify the maths.
Requirements
Runs locally over stdio via npx from the npm package @inite/ideaudit-tools, or as a hosted HTTP endpoint at api.inite.studio. The local server needs no account, key, network or model calls. The hosted server takes an Authorization bearer token from the provider's settings page; without it the endpoint answers on a guest lane with the deterministic scoring tools.
Before you install
The local server stores nothing: an auditId argument is rejected, so verdicts exist only in the conversation and cannot be re-opened later. Persistence, third-party market data and the knowledge graph require the hosted server and an account. The hosted endpoint accepts an Authorization bearer token, which is a credential to keep private. Scores are only as good as the inputs you supply.

Installation

In SourceWeft

  1. Open ideaudit in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

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.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "ideaudit": {
      "type": "http",
      "url": "https://api.inite.studio/mcp"
    }
  }
}

README

ideaudit-tools

The deterministic scoring behind ideaudit, as a local MCP server. No account, no key, no network, no model calls — just the arithmetic.

bash
claude mcp add ideaudit-tools -- npx -y @inite/ideaudit-tools

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.

Why this is published

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.

What runs locally

Twenty tools, every one a pure function of its input:

The verdictcompute_dealbreakers_v2, compute_crossed_matrix, derive_kill_criteria
Composite scoringcompute_lrs_composite, compute_lrs_composite_v2, compute_urgency_composite, compute_collection_scores
Market shapecompute_barrier, compute_multi_source_tam, compute_search_velocity, compute_search_velocity_v2, compute_social_pain
Moneyvalidate_unit_economics, compute_monetization, compute_budget_proof, compute_ppc_spend_signal
Signalscompute_funding_momentum, compute_hiring_demand, compute_x_signal, compute_build_complexity

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.

Where to look

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.

What needs the hosted server

Not withheld to make a point — these genuinely need somewhere to keep things and someone to pay for them:

  • Persistence. Saving an audit, finalising it, reading it back, comparing two of them, the dashboard. A verdict that exists only in a chat transcript is one nobody can re-open or defend later.
  • Data. SERP, keyword volume, funding rounds, hiring signals, social mentions. Those are metered third-party APIs.
  • The knowledge graph. Entities, evidence, contradictions across audits.

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.

$ compute_dealbreakers_v2 {"auditId": "…", …}{ "error": "unknown_arguments", "unknown": ["auditId"],  "message": "This server computes; it stores nothing. …" }

The hosted server

bash
claude mcp add ideaudit --transport http https://api.inite.studio/mcp \  --scope user --header "Authorization: Bearer $IDEAUDIT_API_KEY"

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.

Using both

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.

Contributing, and a warning about it

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.

Contribute with an AI agent

[Open in GitHub Codespaces]

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/.

Licence

Apache-2.0. See LICENSE.

Source: README.md at commit 822ac38

Tools

21

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.

compute_barrier

Compute barrier_score (0-24) + label (PRISTINE/OPEN/COMPETITIVE/CROWDED) from competitor counts + SERP noise fraction.

ParametersserpNoisedirectCompetitorCountrequiredadjacentCompetitorCount

compute_budget_proof

Compute budget_proof_score (0-10) + label (STRONG/CONFIRMED/WEAK/ABSENT) + purchase_intent_pct from pricing hits + review-site hits + intent mentions.

ParametershasNamedPricingpricingHitsCountrequiredreviewSiteHitsCountpurchaseIntentMentions

compute_build_complexity

Compute build_complexity_penalty (0-10, higher = worse) + per-factor breakdown. Hard tags: ml/realtime/blockchain/hardware/compliance/custom-ai/regulated/on-device-ai/iot.

ParametersexternalApisCountrequiredintegrationsCountstackComplexityTags

compute_collection_scores

Compute 12 deterministic collection scores (0-100) + badges + death reason for an enriched idea. Pure math. No external calls.

ParametersanalysisIdrequiredenrichedDatarequired

compute_crossed_matrix

Crossed-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.

ParametersstagerequiredsectorobserverlensScoresrequiredstageProbabilitieshasMajorContradictionunresolvedContradictions

compute_dealbreakers_v2

Methodology 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.

ParametersstagerequiredsectorobserverlensScoresrequiredstageProbabilitieshasMajorContradictionunresolvedContradictions

compute_funding_momentum

Compute funding_momentum_score (0-10) + badge (HOT/WARM/COOL/COLD) from tier-weighted funding-article hit counts.

ParametershitsByTierrequiredrecent30dHits

compute_hiring_demand

Compute hiring_demand_score (0-10) from priority-weighted ATS site hit counts (use registries/hiring-sources for priorities).

Parameterssitesrequired

compute_lrs_composite_v2

LRS 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).

ParametersbarrierScorerequiredxSignalScorerequiredsectorProfilesocialPainScorerequiredbudgetProofScorerequiredmonetizationScorerequiredsearchVelocityScorerequiredbuildComplexityPenalty

compute_lrs_composite

Compose 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.

ParametersbarrierScorerequiredsocialPainScorerequiredmonetizationScorerequiredsearchVelocityScorerequired

compute_monetization

Compute monetization_score (0-21) + label + has_pricing_anchors from pricing anchors + model tags + deal cycle hint.

ParametersdealCyclemodelTagspricingAnchorsCountrequired

compute_multi_source_tam

Multi-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.

Parametersinputsrequired

compute_ppc_spend_signal

Wave 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.

ParametersavgCpcUsdrequiredcompetitioncompetitorBidderstotalMonthlySpendUsdrequired

compute_search_velocity_v2

Search 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).

ParametersintentNormrequiredgeoSpreadNormrequiredexternalVolumeNormrequireddaysSinceLastSignaltrendsTimelineValuesrequired

compute_search_velocity

Compute search_velocity_score (0-25) from Trends timeline values + rising queries count + geo region count.

ParametersgeoRegionCounttimelineValuesrequiredrisingQueriesCount

compute_social_pain

Compute social_pain_score (0-30) + total mentions + dominant perspective (business/consumer/trend/mixed).

ParameterspainMentionsrequiredcategoryCountsintentMentionsurgencyMentions

compute_urgency_composite

Compose composite_urgency_score (0-10) + badge (LOW/MEDIUM/HIGH/VERY_HIGH/EXTREME) from 3 sub-scores: news, pain, hiring.

ParametersnewsSignalScorerequiredpainSignalScorerequiredhiringSignalScorerequired

compute_x_signal

Compute x_signal_score (0-20) + recency share + positivity rate from X/Twitter mention counts.

ParametersmentionsCountrequiredrecent7dCountfounderMentionssentimentNegativesentimentPositive

derive_kill_criteria

Derive 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.

ParametersunitEcondealbreakersicpDriftCount

validate_unit_economics

Sanity-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.

ParameterscacltvarpurequiredcustomersrequiredgrossMarginmonthlyChurnannualRevenuerequired

Version history

1
  1. v1.1.0LatestSep 16, 2026

Score

90% 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.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.