Demand Discovery AI
Ce que fait ce MCP
Validates startup ideas by finding sourced evidence of real demand and user requests.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['question'], 'properties': {'question': {'type': 'string', 'minLength': 1, 'description': "The user's question about startup idea validation, demand discovery, finding prospects, customer interviews, or related topics. Pass the question verbatim."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['matched', 'category', 'answer', 'relatedQuestions', 'productUrl'], 'properties': {'answer': {'type': 'string', 'description': "The on-brand answer in Demand Discovery AI's voice."}, 'matched': {'type': 'boolean', 'description': 'True if the question matched a knowledge-base entry; false if the on-brand fallback was used.'}, 'category': {'type': ['string', 'null'], 'description': 'The KB category of the matched answer, or null if no match.'}, 'productUrl': {'type': 'string', 'description': 'URL to learn more or start a Demand Discovery report.'}, 'relatedQuestions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Other related questions this MCP can answer next.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['intro', 'approaches', 'bottomLine', 'productUrl'], 'properties': {'intro': {'type': 'string'}, 'approaches': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'validatesWith', 'stopsAt'], 'properties': {'name': {'type': 'string'}, 'stopsAt': {'type': 'string'}, 'validatesWith': {'type': 'string'}}, 'additionalProperties': False}}, 'bottomLine': {'type': 'string'}, 'productUrl': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scoreRange', 'signalClasses', 'whyBeatsOpinion', 'verdicts', 'guarantee', 'productUrl'], 'properties': {'verdicts': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'criteria'], 'properties': {'name': {'enum': ['Build', 'Pivot', 'Kill'], 'type': 'string'}, 'criteria': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'The three possible Demand Discovery Report verdicts and their criteria.'}, 'guarantee': {'type': 'string'}, 'productUrl': {'type': 'string'}, 'scoreRange': {'type': 'string', 'description': 'The 0-100 score range used for the Demand Score.'}, 'signalClasses': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The four classes of real-world signal triangulated into the score.'}, 'whyBeatsOpinion': {'type': 'string', 'description': 'Why behavioral signals beat surveys and LLM guesses.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['count', 'moatNote', 'categories', 'productUrl'], 'properties': {'count': {'type': 'string'}, 'moatNote': {'type': 'string'}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'tagline', 'description'], 'properties': {'name': {'type': 'string'}, 'tagline': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'productUrl': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orderId'], 'properties': {'orderId': {'type': 'string', 'minLength': 1, 'description': 'REQUIRED. The order handle returned by validate_real_demand.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'paid', 'ready', 'done', 'nextAction', 'productUrl'], 'properties': {'done': {'type': 'boolean', 'description': 'True when generation is complete (no more blocks coming).'}, 'paid': {'type': 'boolean', 'description': 'True once payment is confirmed (status paid_generating or ready).'}, 'ready': {'type': 'boolean', 'description': 'True when the full inline report is available in `report`.'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'required': ['seq', 'markdown'], 'properties': {'seq': {'type': 'number'}, 'heading': {'type': 'string'}, 'markdown': {'type': 'string'}}, 'additionalProperties': False}, 'description': "Report blocks generated so far (cumulative). Render any seq you haven't shown yet."}, 'report': {'type': 'object', 'properties': {'score': {'type': 'number'}, 'verdict': {'type': 'string'}, 'reportId': {'type': 'string'}, 'reportUrl': {'type': 'string'}, 'alAvailable': {'type': 'boolean'}, 'alTriggerToken': {'type': 'string'}, 'signalEvidence': {'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string'}, 'narrative': {'type': 'string'}, 'platforms': {'type': 'number'}, 'realPeople': {'type': 'number'}, 'description': {'type': 'string'}, 'painPatterns': {'type': 'array', 'items': {'type': 'object', 'required': ['theme'], 'properties': {'theme': {'type': 'string'}, 'examples': {'type': 'array', 'items': {'type': 'string'}}, 'frequency': {'type': 'number'}}, 'additionalProperties': False}}, 'evidenceScore': {'type': 'number'}, 'demandEvidence': {'type': 'array', 'items': {'type': 'string'}}, 'confidenceLabel': {'type': 'string'}, 'highIntentPercent': {'type': 'number'}}, 'description': "Present when ready: the full Signal Evidence block (evidence quality, not demand volume) â\x80\x94 confidence + evidenceScore out of 100, the narrative, the Real People / Platforms / High Intent cards, the Demand Evidence bullets, and Pain Patterns. Render all of it inline; it is the buyer's paid content.", 'additionalProperties': False}, 'verdictTagline': {'type': 'string'}, 'signalsAnalyzed': {'type': 'number'}, 'marketResearchUrl': {'type': 'string'}}, 'description': "Present when ready: the inline cut's machine-readable fields. The full breakdown stays on reportUrl.", 'additionalProperties': False}, 'status': {'type': 'string', 'description': 'pending_payment | paid_generating | ready | failed | unknown_order | unconfigured_fallback | error_fallback.'}, 'nextSteps': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'label', 'url'], 'properties': {'url': {'type': 'string'}, 'kind': {'type': 'string'}, 'label': {'type': 'string'}, 'actionTool': {'type': 'string'}}, 'additionalProperties': False}, 'description': "Ordered end-of-report navigation links, present when ready: Market Research (only if DD provided it) -> Demand Discovery -> Agentic Launch. When you render from structuredContent (not the report markdown), render these in order as the final navigation, ALWAYS keeping the Demand Discovery link alongside Market Research. Markdown clients should use the links already in the report markdown instead of re-rendering these. The agentic_launch entry's actionTool names the tool to CALL when the user wants to generate prospects; its url is the section to land on afterward."}, 'reportUrl': {'type': 'string', 'description': 'Link to the full hosted report (Score Breakdown + all analytics).'}, 'nextAction': {'type': 'string', 'description': 'What to do next.'}, 'productUrl': {'type': 'string'}, 'marketResearchUrl': {'type': 'string', 'description': 'Link to the earlier free Market Research page for this idea, when DD provides it. Passthrough only â\x80\x94 link reportUrl as the primary report.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'tagline', 'oneLiner', 'steps', 'pricing', 'dataSources', 'guarantee', 'productUrl'], 'properties': {'name': {'type': 'string'}, 'steps': {'type': 'array', 'items': {'type': 'object', 'required': ['number', 'name', 'role', 'description', 'includes'], 'properties': {'name': {'type': 'string'}, 'role': {'type': 'string'}, 'number': {'type': 'number'}, 'includes': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'pricing': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'price', 'description', 'includes', 'ctaUrl'], 'properties': {'name': {'type': 'string'}, 'price': {'type': 'string'}, 'ctaUrl': {'type': 'string'}, 'includes': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'tagline': {'type': 'string'}, 'oneLiner': {'type': 'string'}, 'guarantee': {'type': 'string'}, 'productUrl': {'type': 'string'}, 'dataSources': {'type': 'object', 'required': ['count', 'summary', 'categories'], 'properties': {'count': {'type': 'string'}, 'summary': {'type': 'string'}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'tagline'], 'properties': {'name': {'type': 'string'}, 'tagline': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['philosophy', 'summary', 'steps', 'killerPhrases', 'productUrl'], 'properties': {'steps': {'type': 'array', 'items': {'type': 'object', 'required': ['number', 'name', 'role', 'description', 'includes'], 'properties': {'name': {'type': 'string'}, 'role': {'type': 'string'}, 'number': {'type': 'number'}, 'includes': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}, 'signalTypes': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'description': 'The three sequential framework steps.'}, 'summary': {'type': 'string', 'description': 'One-line summary of the framework.'}, 'philosophy': {'type': 'string', 'description': 'The core philosophy: behavior over opinion.'}, 'productUrl': {'type': 'string'}, 'killerPhrases': {'type': 'array', 'items': {'type': 'string'}, 'description': "On-brand phrases that capture the framework's positioning."}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['reportId', 'email'], 'properties': {'email': {'type': 'string', 'format': 'email', 'description': "REQUIRED. The user's own email, provided by them in chat - replies to the drafted outreach route here. Reuse the EXACT address the user gave earlier in this conversation for report delivery; if you don't have it, ask the user. NEVER invent one or substitute a placeholder (e.g. user@example.com) - placeholders are rejected."}, 'reportId': {'type': 'string', 'minLength': 1, 'description': 'REQUIRED. The reportId of the completed (ready) Demand Discovery Report.'}, 'alTriggerToken': {'type': 'string', 'description': 'Optional pass-through token from the ready report payload (report.alTriggerToken), if available.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['started', 'status', 'manageUrl', 'sender', 'replyToEmail', 'nextAction', 'productUrl'], 'properties': {'alId': {'type': 'string', 'description': 'The Agentic Launch handle, if started.'}, 'sender': {'type': 'string', 'description': "Always 'amy' for inline triggers."}, 'status': {'type': 'string', 'description': 'started | queued | error | unconfigured_fallback | error_fallback | needs_real_email | email_not_owner.'}, 'started': {'type': 'boolean', 'description': "True if Agentic Launch was started (prospects generated + outreach drafted, awaiting the user's review-and-send)."}, 'manageUrl': {'type': 'string', 'description': 'Where the user reviews and SENDS the drafted outreach, and manages the 90-day launch. Nothing goes out until they do.'}, 'nextAction': {'type': 'string', 'description': 'What the user should do next.'}, 'productUrl': {'type': 'string'}, 'replyToEmail': {'type': 'string', 'description': 'Where Amy forwards replies.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'problem', 'solution'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': "Short startup or product name. One sentence or less, ideally one to three words. Example: 'AgenticLaunch', 'SOC2 Auto-Evidence'. Ask the user: 'What is the name of your startup or product?'"}, 'email': {'type': 'string', 'format': 'email', 'description': "Optional: the user's own email, provided by them in chat for report delivery. Providing it gets them the full Market Research Report emailed to them - SAM, TAM, competitive landscape, GTM strategy and positioning, opportunities and risks; without it they only receive the teaser. Ask: 'Want the full Market Research Report emailed to you? Share an email address (optional).' Only pass an address the user explicitly shared for this purpose. Leave blank if they have not shared it."}, 'problem': {'type': 'string', 'minLength': 5, 'description': "One sentence describing the problem the idea solves. Keep it clear and specific - this answer shapes the full Demand Discovery report. Ask the user: 'What problem are you solving?' Example: 'Early-stage SaaS founders waste 200+ hours hand-collecting SOC 2 evidence before their first audit.'"}, 'solution': {'type': 'string', 'minLength': 5, 'description': "One sentence describing how the idea solves the problem. Ask the user: 'What is your solution?' Example: 'We auto-generate the full evidence package from their existing cloud infrastructure, identity provider, and source-control systems.'"}, 'target_market': {'type': 'string', 'minLength': 1, 'description': "Optional short phrase describing the target customer or ICP; aim for a specific role plus company size or stage so the demand search can target the right people. Ask the user: 'Who is your target market?' Skip if they are unsure. Example: 'Heads of Ops at 50-200 person companies' or 'Pre-Series-A SaaS founders preparing for their first SOC 2 Type 1.'"}, 'current_workaround': {'type': 'string', 'description': "Optional: what the user's target customers currently use to deal with this problem - the manual or duct-tape workaround (e.g. 'they juggle spreadsheets + manual email reminders'). Populate it ONLY if the conversation already revealed how people cope today; do NOT ask an extra question for it and never block the call if it is unknown - empty is fine. Existing effort or spend is a strong demand signal, and it sharpens the downstream demand search in both the free Market Research and the paid Demand Discovery report."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['reportDelivered', 'reportComplete', 'reportGenerating', 'awaitingEmail', 'freeReportLimitReached', 'emailed', 'namePrefilled', 'descriptionPrefilled', 'emailCaptured', 'targetMarketProvided', 'bundle', 'upsellTo', 'nextAction', 'productUrl'], 'properties': {'bundle': {'type': 'array', 'items': {'type': 'object', 'required': ['step', 'name', 'free', 'description'], 'properties': {'free': {'type': 'boolean'}, 'name': {'type': 'string'}, 'step': {'type': 'number'}, 'description': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'The three-step bundle the user is starting.'}, 'report': {'type': 'object', 'required': ['markdown'], 'properties': {'title': {'type': 'string'}, 'partial': {'type': 'boolean', 'description': 'True if this is the score-free summary only; the full report is emailed.'}, 'summary': {'type': 'string'}, 'markdown': {'type': 'string'}, 'reportId': {'type': 'string'}}, 'description': 'The score-free Market Research summary, returned inline so the agent can show it to the user verbatim without them leaving chat. The full report is delivered by email.', 'additionalProperties': False}, 'emailed': {'type': 'boolean', 'description': "True if the full Market Research report has been emailed to the user's address."}, 'reportId': {'type': 'string', 'description': "The DD identifier for this idea's Market Research record, present once it has started. Pass it to validate_real_demand to tie the paid $49 order to this exact record."}, 'upsellTo': {'anyOf': [{'enum': ['founder', 'studio'], 'type': 'string'}, {'type': 'null'}], 'description': "Set when the user has exhausted their current pack: 'founder' (Validate exhausted, 3rd report) or 'studio' (Founder exhausted, 6th report). Null when no upsell is active."}, 'reportUrl': {'type': 'string', 'description': 'Deep link to the free Market Research entry point with all form fields prefilled, used as a fallback when inline delivery was unavailable.'}, 'upsellUrl': {'type': 'string', 'description': 'Upgrade checkout link, present only when upsellTo is set.'}, 'nextAction': {'type': 'string', 'description': 'The immediate next action the user should take.'}, 'productUrl': {'type': 'string'}, 'continueUrl': {'type': 'string', 'description': 'Deep link to continue into the $49 Demand Discovery Report step.'}, 'awaitingEmail': {'type': 'boolean', 'description': 'True if the score-free Market Research summary was returned but no email was given yet. When true, show the summary verbatim, then ask the user for their email and call start_demand_report again with the same fields plus the email.'}, 'emailCaptured': {'type': 'boolean', 'description': 'True if the user provided an email.'}, 'namePrefilled': {'type': 'string', 'description': 'The startup name that was prefilled.'}, 'reportComplete': {'type': 'boolean', 'description': "True once the user has provided an email and the Market Research summary was delivered inline (the full report is then emailed). False while still awaiting the user's email, or when only a deep link was returned."}, 'reportDelivered': {'type': 'boolean', 'description': 'True if any Market Research content was returned inline in this response (in `report`); false if only a deep link was returned, or the free-report limit was reached.'}, 'reportGenerating': {'type': 'boolean', 'description': 'Always false. The free Market Research is delivered as an inline score-free summary plus a full report sent by email; there is nothing to poll or wait for inline. Retained for output-schema stability.'}, 'descriptionPrefilled': {'type': 'string', 'description': 'The problem + solution one-line description that was prefilled.'}, 'targetMarketProvided': {'type': 'boolean', 'description': 'True if the user provided a target market.'}, 'targetMarketPrefilled': {'type': 'string', 'description': 'The target market that was prefilled, if provided.'}, 'freeReportLimitReached': {'type': 'boolean', 'description': 'True if the provided email already used its one free Market Research report; only the paid Demand Discovery Report remains.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['email', 'name', 'problem', 'solution'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Short startup or product name - the SAME one used for the free Market Research report.'}, 'email': {'type': 'string', 'format': 'email', 'description': "REQUIRED. The user's own email, provided by them in chat for report delivery - the order is tied to this email and Agentic Launch replies route here. This was captured at the free Market Research email gate."}, 'problem': {'type': 'string', 'minLength': 5, 'description': 'One sentence on the problem - the SAME wording used for the free report (ties the order back to it).'}, 'reportId': {'type': 'string', 'description': "Optional but strongly preferred: the EXACT reportId returned by the free Market Research step (start_demand_report). It ties the paid order to that record. OMIT it if you don't have one - DD resolves the idea from name/problem/solution. NEVER invent, guess, or placeholder a reportId; a fabricated id is rejected."}, 'solution': {'type': 'string', 'minLength': 5, 'description': 'One sentence on the solution - the SAME wording used for the free report.'}, 'target_market': {'type': 'string', 'minLength': 1, 'description': 'Optional ICP phrase; refines what was captured on the free report if given.'}, 'current_workaround': {'type': 'string', 'description': 'Optional: how the audience copes today. Only pass if already known; never block on it.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['checkoutCreated', 'checkoutUrl', 'orderId', 'status', 'needsFreeReportFirst', 'pollWith', 'nextAction', 'productUrl'], 'properties': {'reason': {'type': 'string', 'description': "Present on the needs_upgrade path: 'no_credits' (current pack's reports are used) or 'slot_cap_reached' (every idea slot is occupied)."}, 'status': {'type': 'string', 'description': "'pending_payment' on success; 'already_running'/'processing' if a paid report already exists for this idea; 'needs_upgrade' when the account's current pack has no report slots left (see upsellOptions); 'blocked'/'failed' if the reportId didn't resolve; 'unconfigured_fallback'/'error_fallback' when the inline path was unavailable."}, 'orderId': {'type': ['string', 'null'], 'description': 'The order handle to poll with get_demand_report_status. Null if no order was created.'}, 'pollWith': {'type': ['string', 'null'], 'description': 'The tool to call next to stream the report (get_demand_report_status) once paid. Null when not applicable.'}, 'expiresAt': {'type': 'string', 'description': 'When the checkout session expires, if provided.'}, 'nextAction': {'type': 'string', 'description': 'The immediate next action the user/agent should take.'}, 'productUrl': {'type': 'string'}, 'checkoutUrl': {'type': 'string', 'description': 'Hosted page the user opens in a browser to pay. On fallback/misconfig this is a hosted deep link to continue on the site.'}, 'upsellOptions': {'type': 'array', 'items': {'type': 'object', 'required': ['pack', 'label', 'url'], 'properties': {'url': {'type': 'string'}, 'pack': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null']}, 'creditNote': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Ways the user can keep going when their current pack is used up (or alongside a checkout, as alternatives). Render EVERY option with its link printed verbatim and let the user choose â\x80\x94 the user opens links in their own browser; nothing is ever purchased from chat.'}, 'alreadyRunning': {'type': 'boolean', 'description': 'True if the paid report already exists (running or completed) for this idea - e.g. an existing pack slot was already used. Do NOT start a new checkout or re-run the free step; poll get_demand_report_status (if pollWith is set) or open checkoutUrl.'}, 'chargeRequired': {'type': 'boolean', 'description': 'False when no payment is due - the idea is already covered (a plan slot or a prior purchase), so do NOT open a checkout. Present on the alreadyRunning path.'}, 'checkoutCreated': {'type': 'boolean', 'description': 'True if a checkout session was created and a checkoutUrl is present.'}, 'needsFreeReportFirst': {'type': 'boolean', 'description': 'True if the paid step was refused because no valid free Market Research report backs this idea - run start_demand_report first.'}}, 'additionalProperties': False}
Modifications récentes des outils
Serveurs MCP similaires
Stratalize Healthcare
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Governance
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Oracle
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Real Estate
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Crypto & DeFi
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
US Company Intelligence for AI Agents (SEC EDGAR, x402)
Offers pay-per-call web extraction, search and LLM tools plus French company, property, procurement, marketplace and security dat…
editalmd
Searches Brazilian public procurement opportunities and documents, tracks deadlines and alerts, and supports tender document acce…
FirmLedger
Searches and manages verified business directory listings, company profiles, leads, jobs, watchlists, analytics, advertising, and…