The scoring behind an audit allowed to say no. Twenty deterministic tools, offline, no account.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer token from https://inite.studio/settings/keys. Optional: with no Authorization header the same endpoint answers on a guest lane — the twenty deterministic scoring tools, including the verdict, plus `get_started`. Send a token and the tools that need storage or paid data appear alongside them.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Compute barrier_score (0-24) + label (PRISTINE/OPEN/COMPETITIVE/CROWDED) from competitor counts + SERP noise fraction.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Compute barrier_score (0-24) + label (PRISTINE/OPEN/COMPETITIVE/CROWDED) from competitor counts + SERP noise fraction.
| Argument | Type | Description |
|---|---|---|
| serpNoise | number | |
| directCompetitorCount* | integer | |
| adjacentCompetitorCount | integer |
{
"type": "object",
"required": [
"directCompetitorCount"
],
"properties": {
"serpNoise": {
"type": "number",
"default": 0,
"maximum": 1,
"minimum": 0
},
"directCompetitorCount": {
"type": "integer",
"minimum": 0
},
"adjacentCompetitorCount": {
"type": "integer",
"default": 0,
"minimum": 0
}
}
}Compute budget_proof_score (0-10) + label (STRONG/CONFIRMED/WEAK/ABSENT) + purchase_intent_pct from pricing hits + review-site hits + intent mentions.
| Argument | Type | Description |
|---|---|---|
| hasNamedPricing | boolean | |
| pricingHitsCount* | integer | |
| reviewSiteHitsCount | integer | |
| purchaseIntentMentions | integer |
{
"type": "object",
"required": [
"pricingHitsCount"
],
"properties": {
"hasNamedPricing": {
"type": "boolean"
},
"pricingHitsCount": {
"type": "integer",
"minimum": 0
},
"reviewSiteHitsCount": {
"type": "integer",
"minimum": 0
},
"purchaseIntentMentions": {
"type": "integer",
"minimum": 0
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| externalApisCount* | integer | |
| integrationsCount | integer | |
| stackComplexityTags | array |
{
"type": "object",
"required": [
"externalApisCount"
],
"properties": {
"externalApisCount": {
"type": "integer",
"minimum": 0
},
"integrationsCount": {
"type": "integer",
"minimum": 0
},
"stackComplexityTags": {
"type": "array",
"items": {
"type": "string"
}
}
}
}Compute 12 deterministic collection scores (0-100) + badges + death reason for an enriched idea. Pure math. No external calls.
| Argument | Type | Description |
|---|---|---|
| analysisId* | string | |
| enrichedData* | object | EnrichedData with canonical_idea signals. |
{
"type": "object",
"required": [
"analysisId",
"enrichedData"
],
"properties": {
"analysisId": {
"type": "string"
},
"enrichedData": {
"type": "object",
"description": "EnrichedData with canonical_idea signals."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| stage* | string | |
| sector | string | |
| observer | object | Founder profile that crosses with the substrate idea to produce an observer-relative verdict. When omitted, only the substrate verdict is returned. |
| lensScores* | array | |
| stageProbabilities | object | |
| hasMajorContradiction | boolean | |
| unresolvedContradictions | integer |
{
"type": "object",
"required": [
"stage",
"lensScores"
],
"properties": {
"stage": {
"enum": [
"idea",
"mvp",
"seed",
"series_a_plus"
],
"type": "string"
},
"sector": {
"type": "string"
},
"observer": {
"type": "object",
"required": [
"founder_type"
],
"properties": {
"exit_goal": {
"enum": [
"lifestyle",
"acquisition",
"ipo",
"unicorn"
],
"type": "string"
},
"founder_type": {
"enum": [
"solo",
"cofounded_technical",
"cofounded_business",
"domain_expert",
"serial"
],
"type": "string"
},
"runway_months": {
"type": "integer",
"maximum": 60,
"minimum": 0
},
"risk_tolerance": {
"enum": [
"conservative",
"moderate",
"aggressive"
],
"type": "string"
},
"capital_usd_band": {
"enum": [
"under_50k",
"50k_500k",
"500k_5m",
"over_5m"
],
"type": "string"
},
"expertise_sectors": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 2
},
"maxItems": 8
},
"time_horizon_years": {
"type": "integer",
"maximum": 15,
"minimum": 1
}
},
"description": "Founder profile that crosses with the substrate idea to produce an observer-relative verdict. When omitted, only the substrate verdict is returned."
},
"lensScores": {
"type": "array",
"items": {
"type": "object",
"required": [
"lens",
"score",
"confidence"
],
"properties": {
"lens": {
"enum": [
"team",
"problem_solution",
"traction",
"competition",
"gtm",
"finance"
],
"type": "string"
},
"score": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"redFlag": {
"type": "boolean"
},
"confidence": {
"type": "number",
"maximum": 1,
"minimum": 0
}
}
}
},
"stageProbabilities": {
"type": "object",
"properties": {
"mvp": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"idea": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"seed": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"series_a_plus": {
"type": "number",
"maximum": 1,
"minimum": 0
}
}
},
"hasMajorContradiction": {
"type": "boolean",
"default": false
},
"unresolvedContradictions": {
"type": "integer",
"default": 0,
"minimum": 0
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| stage* | string | |
| sector | string | |
| observer | object | Founder profile that crosses with the substrate idea to produce an observer-relative verdict. When omitted, only the substrate verdict is returned. |
| lensScores* | array | |
| stageProbabilities | object | |
| hasMajorContradiction | boolean | |
| unresolvedContradictions | integer |
{
"type": "object",
"required": [
"stage",
"lensScores"
],
"properties": {
"stage": {
"enum": [
"idea",
"mvp",
"seed",
"series_a_plus"
],
"type": "string"
},
"sector": {
"type": "string"
},
"observer": {
"type": "object",
"required": [
"founder_type"
],
"properties": {
"exit_goal": {
"enum": [
"lifestyle",
"acquisition",
"ipo",
"unicorn"
],
"type": "string"
},
"founder_type": {
"enum": [
"solo",
"cofounded_technical",
"cofounded_business",
"domain_expert",
"serial"
],
"type": "string"
},
"runway_months": {
"type": "integer",
"maximum": 60,
"minimum": 0
},
"risk_tolerance": {
"enum": [
"conservative",
"moderate",
"aggressive"
],
"type": "string"
},
"capital_usd_band": {
"enum": [
"under_50k",
"50k_500k",
"500k_5m",
"over_5m"
],
"type": "string"
},
"expertise_sectors": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 2
},
"maxItems": 8
},
"time_horizon_years": {
"type": "integer",
"maximum": 15,
"minimum": 1
}
},
"description": "Founder profile that crosses with the substrate idea to produce an observer-relative verdict. When omitted, only the substrate verdict is returned."
},
"lensScores": {
"type": "array",
"items": {
"type": "object",
"required": [
"lens",
"score",
"confidence"
],
"properties": {
"lens": {
"enum": [
"team",
"problem_solution",
"traction",
"competition",
"gtm",
"finance"
],
"type": "string"
},
"score": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"redFlag": {
"type": "boolean"
},
"confidence": {
"type": "number",
"maximum": 1,
"minimum": 0
}
}
}
},
"stageProbabilities": {
"type": "object",
"properties": {
"mvp": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"idea": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"seed": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"series_a_plus": {
"type": "number",
"maximum": 1,
"minimum": 0
}
}
},
"hasMajorContradiction": {
"type": "boolean",
"default": false
},
"unresolvedContradictions": {
"type": "integer",
"default": 0,
"minimum": 0
}
}
}Compute funding_momentum_score (0-10) + badge (HOT/WARM/COOL/COLD) from tier-weighted funding-article hit counts.
| Argument | Type | Description |
|---|---|---|
| hitsByTier* | object | |
| recent30dHits | integer |
{
"type": "object",
"required": [
"hitsByTier"
],
"properties": {
"hitsByTier": {
"type": "object",
"properties": {
"tier_1": {
"type": "integer",
"minimum": 0
},
"regional": {
"type": "integer",
"minimum": 0
},
"vertical": {
"type": "integer",
"minimum": 0
},
"presswire": {
"type": "integer",
"minimum": 0
}
}
},
"recent30dHits": {
"type": "integer",
"minimum": 0
}
}
}Compute hiring_demand_score (0-10) from priority-weighted ATS site hit counts (use registries/hiring-sources for priorities).
| Argument | Type | Description |
|---|---|---|
| sites* | array |
{
"type": "object",
"required": [
"sites"
],
"properties": {
"sites": {
"type": "array",
"items": {
"type": "object",
"required": [
"domain",
"hits",
"priority"
],
"properties": {
"hits": {
"type": "integer",
"minimum": 0
},
"domain": {
"type": "string"
},
"priority": {
"enum": [
1,
2,
3
],
"type": "integer"
}
}
}
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| barrierScore* | number | |
| socialPainScore* | number | |
| monetizationScore* | number | |
| searchVelocityScore* | number |
{
"type": "object",
"required": [
"searchVelocityScore",
"socialPainScore",
"barrierScore",
"monetizationScore"
],
"properties": {
"barrierScore": {
"type": "number",
"maximum": 24,
"minimum": 0
},
"socialPainScore": {
"type": "number",
"maximum": 30,
"minimum": 0
},
"monetizationScore": {
"type": "number",
"maximum": 21,
"minimum": 0
},
"searchVelocityScore": {
"type": "number",
"maximum": 25,
"minimum": 0
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| barrierScore* | number | |
| xSignalScore* | number | |
| sectorProfile | string | Opt-in sector weight override. Default uses Python canonical weights. |
| socialPainScore* | number | |
| budgetProofScore* | number | |
| monetizationScore* | number | |
| searchVelocityScore* | number | |
| buildComplexityPenalty | number |
Compute monetization_score (0-21) + label + has_pricing_anchors from pricing anchors + model tags + deal cycle hint.
| Argument | Type | Description |
|---|---|---|
| dealCycle | string | instant/days/weeks/months/quarters |
| modelTags | array | e.g. ["subscription","usage","marketplace"] |
| pricingAnchorsCount* | integer |
{
"type": "object",
"required": [
"pricingAnchorsCount"
],
"properties": {
"dealCycle": {
"type": "string",
"description": "instant/days/weeks/months/quarters"
},
"modelTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "e.g. [\"subscription\",\"usage\",\"marketplace\"]"
},
"pricingAnchorsCount": {
"type": "integer",
"minimum": 0
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| inputs* | array |
{
"type": "object",
"required": [
"inputs"
],
"properties": {
"inputs": {
"type": "array",
"items": {
"type": "object",
"required": [
"source",
"text"
],
"properties": {
"text": {
"type": "string"
},
"source": {
"type": "string"
},
"estimateYear": {
"type": "integer",
"maximum": 2100,
"minimum": 1990,
"description": "Optional: year the estimate was published."
}
}
}
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| avgCpcUsd* | number | |
| competition | number | |
| competitorBidders | integer | |
| totalMonthlySpendUsd* | number |
{
"type": "object",
"required": [
"avgCpcUsd",
"totalMonthlySpendUsd"
],
"properties": {
"avgCpcUsd": {
"type": "number",
"minimum": 0
},
"competition": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"competitorBidders": {
"type": "integer",
"minimum": 0
},
"totalMonthlySpendUsd": {
"type": "number",
"minimum": 0
}
}
}Compute search_velocity_score (0-25) from Trends timeline values + rising queries count + geo region count.
| Argument | Type | Description |
|---|---|---|
| geoRegionCount | integer | |
| timelineValues* | array | Monthly Trends values 0-100 (e.g. last 10-12 months). |
| risingQueriesCount | integer |
{
"type": "object",
"required": [
"timelineValues"
],
"properties": {
"geoRegionCount": {
"type": "integer",
"minimum": 0
},
"timelineValues": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"description": "Monthly Trends values 0-100 (e.g. last 10-12 months)."
},
"risingQueriesCount": {
"type": "integer",
"minimum": 0
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| intentNorm* | number | 0-1 commercial/transactional intent ratio. |
| geoSpreadNorm* | number | 0-1 geographic spread (regions with interest > threshold). |
| externalVolumeNorm* | number | Normalized 0-1 demand volume from EXTERNAL sources (Amazon, app stores, jobs). Caller normalizes before passing. |
| daysSinceLastSignal | number | Optional: days since most recent confirming signal. Triggers exponential freshness decay (half-life 90d). |
| trendsTimelineValues* | array | Monthly Trends values 0-100. Used ONLY to derive trendNorm — never as raw volume. |
{
"type": "object",
"required": [
"trendsTimelineValues",
"externalVolumeNorm",
"intentNorm",
"geoSpreadNorm"
],
"properties": {
"intentNorm": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "0-1 commercial/transactional intent ratio."
},
"geoSpreadNorm": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "0-1 geographic spread (regions with interest > threshold)."
},
"externalVolumeNorm": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Normalized 0-1 demand volume from EXTERNAL sources (Amazon, app stores, jobs). Caller normalizes before passing."
},
"daysSinceLastSignal": {
"type": "number",
"minimum": 0,
"description": "Optional: days since most recent confirming signal. Triggers exponential freshness decay (half-life 90d)."
},
"trendsTimelineValues": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"description": "Monthly Trends values 0-100. Used ONLY to derive trendNorm — never as raw volume."
}
}
}Compute social_pain_score (0-30) + total mentions + dominant perspective (business/consumer/trend/mixed).
| Argument | Type | Description |
|---|---|---|
| painMentions* | integer | |
| categoryCounts | object | |
| intentMentions | integer | |
| urgencyMentions | integer |
{
"type": "object",
"required": [
"painMentions"
],
"properties": {
"painMentions": {
"type": "integer",
"minimum": 0
},
"categoryCounts": {
"type": "object",
"properties": {
"trend": {
"type": "integer",
"minimum": 0
},
"business": {
"type": "integer",
"minimum": 0
},
"consumer": {
"type": "integer",
"minimum": 0
}
}
},
"intentMentions": {
"type": "integer",
"default": 0,
"minimum": 0
},
"urgencyMentions": {
"type": "integer",
"default": 0,
"minimum": 0
}
}
}Compose composite_urgency_score (0-10) + badge (LOW/MEDIUM/HIGH/VERY_HIGH/EXTREME) from 3 sub-scores: news, pain, hiring.
| Argument | Type | Description |
|---|---|---|
| newsSignalScore* | number | |
| painSignalScore* | number | |
| hiringSignalScore* | number |
{
"type": "object",
"required": [
"newsSignalScore",
"painSignalScore",
"hiringSignalScore"
],
"properties": {
"newsSignalScore": {
"type": "number",
"maximum": 10,
"minimum": 0
},
"painSignalScore": {
"type": "number",
"maximum": 10,
"minimum": 0
},
"hiringSignalScore": {
"type": "number",
"maximum": 10,
"minimum": 0
}
}
}Compute x_signal_score (0-20) + recency share + positivity rate from X/Twitter mention counts.
| Argument | Type | Description |
|---|---|---|
| mentionsCount* | integer | |
| recent7dCount | integer | |
| founderMentions | integer | |
| sentimentNegative | integer | |
| sentimentPositive | integer |
{
"type": "object",
"required": [
"mentionsCount"
],
"properties": {
"mentionsCount": {
"type": "integer",
"minimum": 0
},
"recent7dCount": {
"type": "integer",
"minimum": 0
},
"founderMentions": {
"type": "integer",
"minimum": 0
},
"sentimentNegative": {
"type": "integer",
"minimum": 0
},
"sentimentPositive": {
"type": "integer",
"minimum": 0
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| unitEcon | object | The result of validate_unit_economics. |
| dealbreakers | object | The result of compute_dealbreakers_v2. |
| icpDriftCount | integer |
{
"type": "object",
"required": [],
"properties": {
"unitEcon": {
"type": "object",
"description": "The result of validate_unit_economics."
},
"dealbreakers": {
"type": "object",
"description": "The result of compute_dealbreakers_v2."
},
"icpDriftCount": {
"type": "integer",
"minimum": 0
}
}
}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.
No arguments.
{
"type": "object",
"required": [],
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| cac | number | |
| ltv | number | |
| arpu* | number | |
| customers* | number | |
| grossMargin | number | |
| monthlyChurn | number | |
| annualRevenue* | number |
{
"type": "object",
"required": [
"customers",
"arpu",
"annualRevenue"
],
"properties": {
"cac": {
"type": "number"
},
"ltv": {
"type": "number"
},
"arpu": {
"type": "number"
},
"customers": {
"type": "number"
},
"grossMargin": {
"type": "number"
},
"monthlyChurn": {
"type": "number"
},
"annualRevenue": {
"type": "number"
}
}
}{
"type": "object",
"required": [
"searchVelocityScore",
"socialPainScore",
"barrierScore",
"monetizationScore",
"xSignalScore",
"budgetProofScore"
],
"properties": {
"barrierScore": {
"type": "number",
"maximum": 24,
"minimum": 0
},
"xSignalScore": {
"type": "number",
"maximum": 20,
"minimum": 0
},
"sectorProfile": {
"enum": [
"default",
"ai_native",
"creator",
"crypto"
],
"type": "string",
"description": "Opt-in sector weight override. Default uses Python canonical weights."
},
"socialPainScore": {
"type": "number",
"maximum": 30,
"minimum": 0
},
"budgetProofScore": {
"type": "number",
"maximum": 10,
"minimum": 0
},
"monetizationScore": {
"type": "number",
"maximum": 21,
"minimum": 0
},
"searchVelocityScore": {
"type": "number",
"maximum": 25,
"minimum": 0
},
"buildComplexityPenalty": {
"type": "number",
"maximum": 10,
"minimum": 0
}
}
}