Connect
- Your agent
- Claude Code
- Cursor
- Codex
- claude.ai
- Other clients
Paste this as-is. Keep the key out of the chat.
Tools
On a few fields the MCP schema is stricter than the HTTP API, and it validates
before the call rather than trimming after it.
idea must be 40 to 50,000
characters, targetMarket at most 180, and targetCountry, stage and budget
at most 80. One schema serves both workspaces, so it carries the Agency route’s
bounds even on a personal scan, where the HTTP route would have accepted a longer
value and trimmed it. Size to these limits if you send the same body both ways.
Agency client projects
Consultant and AppSumo Agency accounts reach their workspace through the same tools:get_agency reads the workspace, and workspace: "agency" on
start_analysis, get_analysis and export_analysis acts on it instead of the
account’s own ideas. These use the same project quota as the Agency dashboard,
and they need TWO things, checked in that order: a key carrying the scope that
call needs, then live workspace membership. The two Agency scopes are enforced
per route and neither implies the other, so a key holding only agency:read
cannot start a client project and one holding only agency:write cannot read
the workspace, poll or export a report (see the Scope column below). A key
without the scope gets 403 INSUFFICIENT_SCOPE and never
reaches the membership check, which is what every key created before 2026-09-09
receives; a scoped key on an account belonging to no workspace gets 404 AGENCY_NOT_FOUND.
Personal AppSumo Tiers 1-3 continue to use the personal tools above.
enrich_analysis takes no workspace, and client reports never need it: an
Agency report is exportable the moment its status is COMPLETED. Calling
enrich_analysis with a client reportId reaches the personal route and
returns 404.
A client project is always deep, and the stage and budget rule does not
follow it there. Both stay optional, and both take free text up to 80
characters rather than the personal vocabulary, because a consultant records
what the client said. Send them only as the client stated them, and start the
project without them otherwise.
All six tools are advertised to every client, with no scope filter. That is
deliberate: a personal-only key discovers the Agency door and gets a refusal
naming the recovery, instead of “unknown tool” from a list that changed shape
between two accounts. The consequence is that a client which keeps making an
Agency call on a key without the scope gets 403 every time, indefinitely.
Nothing self-heals: the refusal is an answer, not a failure, and it ends when
the key is replaced.
One ceiling still applies, and it is not a scope ceiling. Every authenticated
request passes an attempt limiter that bounds the key lookup itself, so a client
looping hard enough to exhaust it receives 429 RATE_LIMITED instead of the
403, and the actionable message with it. Waiting clears the 429 and returns
the 403; only a new key clears the 403.
Ask your agent: “Check my Agency quota, then run a deep client project for this
idea.” Starting a project spends Agency quota and never falls back to personal
credits. Reuse the same
clientRunId after a timeout to recover the original
report without starting or charging for another one. An uncertain dispatch
returns dispatchPending: true; retry the same start with the same clientRunId
after 60 seconds. Recovery uses the original report and credit. After 23 hours,
the response directs you to support instead of risking a duplicate job.
A definite dispatch rejection restores the credit and returns
TRIGGER_DISPATCH_FAILED. That failed request stays failed on replay; use a new
clientRunId only when you intentionally start a new attempt.
One clientRunId namespace covers both workspaces on a key. An id that already
started a client project cannot start a personal scan, or the reverse: it
returns 409 CLIENT_RUN_ID_CONFLICT. Changing workspace on a start you have
already sent needs a new id.
Reports appear in the Agency dashboard. Creating one through MCP does not email
the client or publish a share link. Existing client reports can be read without
having been created through MCP. Removing a collaborator’s workspace membership
removes their Agency access on the next call, even if their personal key remains
valid. Starter and refunded reports retain their normal content restrictions.
Client sharing, pivots and other dashboard actions remain in the dashboard.
Keeping exports small
export_analysis takes verbosity: full or summary.
summary drops section prose and the Google Trends data points, which together
are about two thirds of a deep report, and keeps every scored field: score,
verdict (including the Bottom Line narrative under details.verdict.narrative),
competitors, market size, risks, pivots, citations. One subsection survives the
trim: details.sections.synthesis, the report’s closing verdict (final
verdict, key strengths and weaknesses, deal breakers, pivot recommendation).
What it left out is listed under details.omitted.
export_analysis defaults to full, in both workspaces.
Locked fields on a starter scan
A starter scan returns a real analysis, not a partial one, but it leaves the deep-tier fields null. A deep scan on the same idea fills indetails.sections
and details.pivots directly. Five more, details.founderFit,
details.playbook, details.googleTrends, details.proofOfDemand and
details.communityDemand, are opt-in modules: a deep report makes them
available, and enrich_analysis generates them on request. Competitor detail,
risk explanations, market segmentation (details.market.segments,
industryTrends, competitivePositioning) and source citations
(details.citations, details.searchContext.sources) are withheld the same way
the web report withholds them from a free viewer.
When anything is withheld, the export carries a top-level locked object naming
each field, what unlocks it, and why. Read it before concluding a field is
missing: null there means locked by tier, not a failed analysis.
Slash commands
The server also exposes two MCP prompts. They are shortcuts for you, not tools the model calls: pick one from your client (in Claude Code they are/mcp__preuve__validate_idea and /mcp__preuve__generate_ideas; in claude.ai
they are under the + menu, Connectors).
validate_idea, taking the idea as its only argument, drops in a request that runs the scan and polls it to completion.generate_ideas, taking your interests as its only argument, drops in a request that generates startup ideas - no prior report needed.
Example prompts
A deep scan spends the same quota as the web app. The MCP server does not add a second bill. See
Quotas and billing.