{"serverId":"mcp-registry/studio.inite/ideaudit-tools","tools":[{"name":"compute_search_velocity","fixed":{"name":"compute_search_velocity","description":"Compute search_velocity_score (0-25) from Trends timeline values + rising queries count + geo region count.","inputSchema":{"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}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":137,"tokensAfter":137},{"name":"compute_search_velocity_v2","fixed":{"name":"compute_search_velocity_v2","description":"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","inputSchema":{"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":414,"tokensAfter":414},{"name":"derive_kill_criteria","fixed":{"name":"derive_kill_criteria","description":"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.","inputSchema":{"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}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"get_started","fixed":{"name":"get_started","description":"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.","inputSchema":{"type":"object","required":[],"properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":86,"tokensAfter":86},{"name":"validate_unit_economics","fixed":{"name":"validate_unit_economics","description":"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.","inputSchema":{"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"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230}],"toolsChanged":5,"tokensSaved":0,"todo":[{"tool":"compute_barrier","params":["serpNoise","directCompetitorCount","adjacentCompetitorCount"]},{"tool":"compute_budget_proof","params":["hasNamedPricing","pricingHitsCount","reviewSiteHitsCount","purchaseIntentMentions"]},{"tool":"compute_build_complexity","params":["externalApisCount","integrationsCount","stackComplexityTags"]},{"tool":"compute_collection_scores","params":["analysisId"]},{"tool":"compute_crossed_matrix","params":["stage","sector","lensScores","stageProbabilities","hasMajorContradiction","unresolvedContradictions"]},{"tool":"compute_dealbreakers_v2","params":["stage","sector","lensScores","stageProbabilities","hasMajorContradiction","unresolvedContradictions"]},{"tool":"compute_funding_momentum","params":["hitsByTier","recent30dHits"]},{"tool":"compute_hiring_demand","params":["sites"]},{"tool":"compute_lrs_composite","params":["barrierScore","socialPainScore","monetizationScore","searchVelocityScore"]},{"tool":"compute_lrs_composite_v2","params":["barrierScore","xSignalScore","socialPainScore","budgetProofScore","monetizationScore","searchVelocityScore","buildComplexityPenalty"]},{"tool":"compute_monetization","params":["pricingAnchorsCount"]},{"tool":"compute_multi_source_tam","params":["inputs"]},{"tool":"compute_ppc_spend_signal","params":["avgCpcUsd","competition","competitorBidders","totalMonthlySpendUsd"]},{"tool":"compute_search_velocity","params":["geoRegionCount","risingQueriesCount"]},{"tool":"compute_social_pain","params":["painMentions","categoryCounts","intentMentions","urgencyMentions"]},{"tool":"compute_urgency_composite","params":["newsSignalScore","painSignalScore","hiringSignalScore"]},{"tool":"compute_x_signal","params":["mentionsCount","recent7dCount","founderMentions","sentimentNegative","sentimentPositive"]},{"tool":"derive_kill_criteria","params":["icpDriftCount"]},{"tool":"validate_unit_economics","params":["cac","ltv","arpu","customers","grossMargin","monthlyChurn","annualRevenue"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}