ideaudit

The scoring behind an audit allowed to say no. Twenty deterministic tools, offline, no account.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
92%
Vollständigkeit des Schemas
81%
Qualität der Benennung
99%
Risiko der Vergiftung
80%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (5)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringin compute_build_complexity
  • LOWTool 'compute_lrs_composite' description lacks action verbin compute_lrs_composite
  • LOWTool 'compute_multi_source_tam' description lacks action verbin compute_multi_source_tam
  • LOWTool 'compute_urgency_composite' description lacks action verbin compute_urgency_composite

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,153Tokens (Tool-Definitionen)
~1.4 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.24% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "ideaudit-tools": {
      "command": "npx",
      "args": [
        "@inite/ideaudit-tools"
      ]
    }
  }
}

Ausführbare Pakete

npm@inite/ideaudit-tools1.0.0stdio

Remote-Endpunkte

https://api.inite.studio/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (21)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "required": []
}
🟢compute_barrier(directCompetitorCount, adjacentCompetitorCount, serpNoise)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "directCompetitorCount": {
      "type": "integer",
      "minimum": 0
    },
    "adjacentCompetitorCount": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "serpNoise": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "default": 0
    }
  },
  "required": [
    "directCompetitorCount"
  ]
}
🟢compute_budget_proof(pricingHitsCount, reviewSiteHitsCount, purchaseIntentMentions, hasNamedPricing)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "pricingHitsCount": {
      "type": "integer",
      "minimum": 0
    },
    "reviewSiteHitsCount": {
      "type": "integer",
      "minimum": 0
    },
    "purchaseIntentMentions": {
      "type": "integer",
      "minimum": 0
    },
    "hasNamedPricing": {
      "type": "boolean"
    }
  },
  "required": [
    "pricingHitsCount"
  ]
}
🟢compute_build_complexity(externalApisCount, stackComplexityTags, integrationsCount)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "externalApisCount": {
      "type": "integer",
      "minimum": 0
    },
    "stackComplexityTags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "integrationsCount": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "externalApisCount"
  ]
}
🟢compute_collection_scores(analysisId, enrichedData)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "analysisId": {
      "type": "string"
    },
    "enrichedData": {
      "type": "object",
      "description": "EnrichedData with canonical_idea signals."
    }
  },
  "required": [
    "analysisId",
    "enrichedData"
  ]
}
🟢compute_crossed_matrix(stage, sector, lensScores, stageProbabilities, unresolvedContradictions, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "stage": {
      "type": "string",
      "enum": [
        "idea",
        "mvp",
        "seed",
        "series_a_plus"
      ]
    },
    "sector": {
      "type": "string"
    },
    "lensScores": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "lens",
          "score",
          "confidence"
        ],
        "properties": {
          "lens": {
            "type": "string",
            "enum": [
              "team",
              "problem_solution",
              "traction",
              "competition",
              "gtm",
              "finance"
            ]
          },
          "score": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "confidence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "redFlag": {
            "type": "boolean"
          }
        }
      }
    },
    "stageProbabilities": {
      "type": "object",
      "properties": {
        "idea": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "mvp": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "seed": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "series_a_plus": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        }
      }
    },
    "unresolvedContradictions": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "hasMajorContradiction": {
      "type": "boolean",
      "default": false
    },
    "observer": {
      "type": "object",
      "description": "Founder profile that crosses with the substrate idea to produce an observer-relative verdict. When omitted, only the substrate verdict is returned.",
      "required": [
        "founder_type"
      ],
      "properties": {
        "founder_type": {
          "type": "string",
          "enum": [
            "solo",
            "cofounded_technical",
            "cofounded_business",
            "domain_expert",
            "serial"
          ]
        },
        "runway_months": {
          "type": "integer",
          "minimum": 0,
          "maximum": 60
        },
        "capital_usd_band": {
          "type": "string",
          "enum": [
            "under_50k",
            "50k_500k",
            "500k_5m",
            "over_5m"
          ]
        },
        "risk_tolerance": {
          "type": "string",
          "enum": [
            "conservative",
            "moderate",
            "aggressive"
          ]
        },
        "expertise_sectors": {
          "type": "array",
          "maxItems": 8,
          "items": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          }
        },
        "time_horizon_years": {
          "type": "integer",
          "minimum": 1,
          "maximum": 15
        },
        "exit_goal": {
          "type": "string",
          "enum": [
            "lifestyle",
            "acquisition",
            "ipo",
            "unicorn"
          ]
        }
      }
    }
  },
  "required": [
    "stage",
    "lensScores"
  ]
}
🟢compute_dealbreakers_v2(stage, sector, lensScores, stageProbabilities, unresolvedContradictions, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "stage": {
      "type": "string",
      "enum": [
        "idea",
        "mvp",
        "seed",
        "series_a_plus"
      ]
    },
    "sector": {
      "type": "string"
    },
    "lensScores": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "lens",
          "score",
          "confidence"
        ],
        "properties": {
          "lens": {
            "type": "string",
            "enum": [
              "team",
              "problem_solution",
              "traction",
              "competition",
              "gtm",
              "finance"
            ]
          },
          "score": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "confidence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "redFlag": {
            "type": "boolean"
          }
        }
      }
    },
    "stageProbabilities": {
      "type": "object",
      "properties": {
        "idea": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "mvp": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "seed": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "series_a_plus": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        }
      }
    },
    "unresolvedContradictions": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "hasMajorContradiction": {
      "type": "boolean",
      "default": false
    },
    "observer": {
      "type": "object",
      "description": "Founder profile that crosses with the substrate idea to produce an observer-relative verdict. When omitted, only the substrate verdict is returned.",
      "required": [
        "founder_type"
      ],
      "properties": {
        "founder_type": {
          "type": "string",
          "enum": [
            "solo",
            "cofounded_technical",
            "cofounded_business",
            "domain_expert",
            "serial"
          ]
        },
        "runway_months": {
          "type": "integer",
          "minimum": 0,
          "maximum": 60
        },
        "capital_usd_band": {
          "type": "string",
          "enum": [
            "under_50k",
            "50k_500k",
            "500k_5m",
            "over_5m"
          ]
        },
        "risk_tolerance": {
          "type": "string",
          "enum": [
            "conservative",
            "moderate",
            "aggressive"
          ]
        },
        "expertise_sectors": {
          "type": "array",
          "maxItems": 8,
          "items": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          }
        },
        "time_horizon_years": {
          "type": "integer",
          "minimum": 1,
          "maximum": 15
        },
        "exit_goal": {
          "type": "string",
          "enum": [
            "lifestyle",
            "acquisition",
            "ipo",
            "unicorn"
          ]
        }
      }
    }
  },
  "required": [
    "stage",
    "lensScores"
  ]
}
🟢compute_funding_momentum(hitsByTier, recent30dHits)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "hitsByTier": {
      "type": "object",
      "properties": {
        "tier_1": {
          "type": "integer",
          "minimum": 0
        },
        "presswire": {
          "type": "integer",
          "minimum": 0
        },
        "regional": {
          "type": "integer",
          "minimum": 0
        },
        "vertical": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "recent30dHits": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "hitsByTier"
  ]
}
🟢compute_hiring_demand(sites)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "sites": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "hits": {
            "type": "integer",
            "minimum": 0
          },
          "priority": {
            "type": "integer",
            "enum": [
              1,
              2,
              3
            ]
          }
        },
        "required": [
          "domain",
          "hits",
          "priority"
        ]
      }
    }
  },
  "required": [
    "sites"
  ]
}
🟢compute_lrs_composite_v2(searchVelocityScore, socialPainScore, barrierScore, monetizationScore, xSignalScore, ...)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "searchVelocityScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 25
    },
    "socialPainScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 30
    },
    "barrierScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 24
    },
    "monetizationScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 21
    },
    "xSignalScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 20
    },
    "budgetProofScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 10
    },
    "buildComplexityPenalty": {
      "type": "number",
      "minimum": 0,
      "maximum": 10
    },
    "sectorProfile": {
      "type": "string",
      "enum": [
        "default",
        "ai_native",
        "creator",
        "crypto"
      ],
      "description": "Opt-in sector weight override. Default uses Python canonical weights."
    }
  },
  "required": [
    "searchVelocityScore",
    "socialPainScore",
    "barrierScore",
    "monetizationScore",
    "xSignalScore",
    "budgetProofScore"
  ]
}
🟢compute_lrs_composite(searchVelocityScore, socialPainScore, barrierScore, monetizationScore)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "searchVelocityScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 25
    },
    "socialPainScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 30
    },
    "barrierScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 24
    },
    "monetizationScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 21
    }
  },
  "required": [
    "searchVelocityScore",
    "socialPainScore",
    "barrierScore",
    "monetizationScore"
  ]
}
🟢compute_monetization(pricingAnchorsCount, modelTags, dealCycle)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "pricingAnchorsCount": {
      "type": "integer",
      "minimum": 0
    },
    "modelTags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "e.g. [\"subscription\",\"usage\",\"marketplace\"]"
    },
    "dealCycle": {
      "type": "string",
      "description": "instant/days/weeks/months/quarters"
    }
  },
  "required": [
    "pricingAnchorsCount"
  ]
}
🟢compute_multi_source_tam(inputs)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "inputs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "source",
          "text"
        ],
        "properties": {
          "source": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "estimateYear": {
            "type": "integer",
            "minimum": 1990,
            "maximum": 2100,
            "description": "Optional: year the estimate was published."
          }
        }
      }
    }
  },
  "required": [
    "inputs"
  ]
}
🟢compute_ppc_spend_signal(avgCpcUsd, totalMonthlySpendUsd, competitorBidders, competition)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "avgCpcUsd": {
      "type": "number",
      "minimum": 0
    },
    "totalMonthlySpendUsd": {
      "type": "number",
      "minimum": 0
    },
    "competitorBidders": {
      "type": "integer",
      "minimum": 0
    },
    "competition": {
      "type": "number",
      "minimum": 0,
      "maximum": 1
    }
  },
  "required": [
    "avgCpcUsd",
    "totalMonthlySpendUsd"
  ]
}
🟢compute_search_velocity_v2(trendsTimelineValues, externalVolumeNorm, intentNorm, geoSpreadNorm, daysSinceLastSignal)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "trendsTimelineValues": {
      "type": "array",
      "items": {
        "type": "number",
        "minimum": 0,
        "maximum": 100
      },
      "description": "Monthly Trends values 0-100. Used ONLY to derive trendNorm — never as raw volume."
    },
    "externalVolumeNorm": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Normalized 0-1 demand volume from EXTERNAL sources (Amazon, app stores, jobs). Caller normalizes before passing."
    },
    "intentNorm": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "0-1 commercial/transactional intent ratio."
    },
    "geoSpreadNorm": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "0-1 geographic spread (regions with interest > threshold)."
    },
    "daysSinceLastSignal": {
      "type": "number",
      "minimum": 0,
      "description": "Optional: days since most recent confirming signal. Triggers exponential freshness decay (half-life 90d)."
    }
  },
  "required": [
    "trendsTimelineValues",
    "externalVolumeNorm",
    "intentNorm",
    "geoSpreadNorm"
  ]
}
🟢compute_search_velocity(timelineValues, risingQueriesCount, geoRegionCount)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "timelineValues": {
      "type": "array",
      "items": {
        "type": "number",
        "minimum": 0,
        "maximum": 100
      },
      "description": "Monthly Trends values 0-100 (e.g. last 10-12 months)."
    },
    "risingQueriesCount": {
      "type": "integer",
      "minimum": 0
    },
    "geoRegionCount": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "timelineValues"
  ]
}
🟢compute_social_pain(painMentions, intentMentions, urgencyMentions, categoryCounts)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "painMentions": {
      "type": "integer",
      "minimum": 0
    },
    "intentMentions": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "urgencyMentions": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "categoryCounts": {
      "type": "object",
      "properties": {
        "business": {
          "type": "integer",
          "minimum": 0
        },
        "consumer": {
          "type": "integer",
          "minimum": 0
        },
        "trend": {
          "type": "integer",
          "minimum": 0
        }
      }
    }
  },
  "required": [
    "painMentions"
  ]
}
🟢compute_urgency_composite(newsSignalScore, painSignalScore, hiringSignalScore)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "newsSignalScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 10
    },
    "painSignalScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 10
    },
    "hiringSignalScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 10
    }
  },
  "required": [
    "newsSignalScore",
    "painSignalScore",
    "hiringSignalScore"
  ]
}
🟢compute_x_signal(mentionsCount, recent7dCount, sentimentPositive, sentimentNegative, founderMentions)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "mentionsCount": {
      "type": "integer",
      "minimum": 0
    },
    "recent7dCount": {
      "type": "integer",
      "minimum": 0
    },
    "sentimentPositive": {
      "type": "integer",
      "minimum": 0
    },
    "sentimentNegative": {
      "type": "integer",
      "minimum": 0
    },
    "founderMentions": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "mentionsCount"
  ]
}
🟢derive_kill_criteria(unitEcon, dealbreakers, icpDriftCount)

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.

Eingabe-Schema

{
  "type": "object",
  "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
    }
  },
  "required": []
}
🟢validate_unit_economics(customers, arpu, annualRevenue, monthlyChurn, cac, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customers": {
      "type": "number"
    },
    "arpu": {
      "type": "number"
    },
    "annualRevenue": {
      "type": "number"
    },
    "monthlyChurn": {
      "type": "number"
    },
    "cac": {
      "type": "number"
    },
    "ltv": {
      "type": "number"
    },
    "grossMargin": {
      "type": "number"
    }
  },
  "required": [
    "customers",
    "arpu",
    "annualRevenue"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet21 Tools
verifiziertVersion nicht aufgezeichnet21 Tools