Resources · Quickstart
Quickstart
From an empty directory to a live, governed site — publish static files, or plan and launch a service.
Resources · Quickstart
From an empty directory to a live, governed site — publish static files, or plan and launch a service.
If the result is a landing page, portfolio, document collection, or existing static build, use this path after connecting the project. It keeps upload separate from the consequential launch.
upload_assets
Upload the authored HTML, CSS, JavaScript, and assets. The
response returns a bundleId; it does not launch
anything.
staged
launch_service
Pass the bundleId with
target: "cloudflare". Current budget, policy,
price, and approval rules are checked at launch.
$0.00/mo
Loading the exact signup request, replay, expiry, and output contract from the live OpenAPI document.
POST /v1/signup returns a SproutPad
human-review URL, signupSessionId, and
claimSecret. Send only the returned
human-review URL to the human; keep capability fields
private. On that page the human reviews account authority,
pricing, budget limits, and approval rules before continuing
to Stripe. After the human completes both steps, follow the
returned typed poll action. For a scratch account or an
expired card, POST /v1/billing/setup-link +
/v1/billing/poll provide a separate card flow
for existing accounts.
Paste the MCP config from the claim page into Claude,
Cursor, or anything that speaks MCP — or call REST directly
with Authorization: Bearer agk_…. OAuth 2.1
(PKCE + dynamic registration) also works.
{
"mcpServers": {
"sproutpad": {
"type": "http",
"url": "https://api.sproutpad.ai/mcp"
}
}
}
In Cursor, choose Connect for
sproutpad under Settings → Tools & MCP, or
run cursor-agent mcp login sproutpad. For a
bearer key instead, add
"headers": { "Authorization": "Bearer
agk_...<secret>" }
to the server object locally; never commit the key.
claude mcp add --transport http --scope user sproutpad https://api.sproutpad.ai/mcp
Run /mcp inside Claude Code to complete OAuth.
Claude-compatible hosts without remote OAuth support can use
an HTTP server entry with
"Authorization": "Bearer ${SPROUTPAD_AGENT_KEY}".
curl -i -X POST https://api.sproutpad.ai/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'
Both Accept media types are required; omitting
the header or sending JSON-only returns 406.
SproutPad currently returns JSON, negotiates protocol
2025-03-26, and is stateless: it does not issue
Mcp-Session-Id. Authenticate each protected
request independently and initialize again after a
reconnect.
MCP search_domains maps to
GET /v1/domains/search; MCP
estimate maps to
POST /v1/estimate. Both need no auth and create
no hold. An authenticated ALLOW quote (POST /v1/quotes) reserves project budget for 15 minutes;
launch_service (POST /v1/projects/{id}/launch) creates a named service, then carries domain
registration, DNS, deploy, and TLS through a durable task.
The HTTP method is part of the contract; every operation
below shows its MCP name beside the REST route.
For estimate, omit target to
choose the cheapest capable option and declare
workload as static_site,
dynamic_service, worker,
database_backed_app, or
mail_enabled_app. The response returns the
selected target, every considered target, the selection
reason, and explicit pricing assumptions. An explicit target
override remains authoritative and is called out in that
evidence.
Domain discovery uses the common-launch catalog by default.
The same canonical input on MCP, REST, the generated SDK,
and the CLI supports an ordered tldAllowlist,
tldDenylist, maxFirstYearPriceUsd,
maxRenewalPriceUsd, and the explicit
includeExotic: true full-catalog escape hatch.
Every result returns appliedFilters, including
the effective ordered TLD list, so an agent can verify what
the server actually applied. Price ceilings exclude
candidates whose required price is missing; renewal ceilings
compare the annualized renewal price.
For a bounded multi-operation job,
prepare_workflow validates, canonicalizes,
signs, and persists the exact finite operation graph without
reserving budget, creating a task, or calling a provider.
Inspect the safe plan projection, then cross the separate
apply_workflow boundary. Apply rechecks the
current caller, policy, budget, price, versions, and state;
the signature proves unchanged plan bytes, not permission to
execute.
New to the model? The resources pages explain two-phase budgets, approval gates, durable execution, and retry semantics before you write any code against them.