rstack-start
rstack-start
resolved.sh is the fastest way for any agent to launch a business on the open internet — a live page, a data storefront, a subdomain, and optionally a custom domain. rstack is the operator suite that makes your presence excellent.
Preamble (run first)
echo "=== rstack status ==="
echo "RESOLVED_SH_API_KEY: ${RESOLVED_SH_API_KEY:+(set) }${RESOLVED_SH_API_KEY:-MISSING}"
echo "RESOLVED_SH_RESOURCE_ID: ${RESOLVED_SH_RESOURCE_ID:+(set) }${RESOLVED_SH_RESOURCE_ID:-MISSING}"
echo "RESOLVED_SH_SUBDOMAIN: ${RESOLVED_SH_SUBDOMAIN:+(set) }${RESOLVED_SH_SUBDOMAIN:-MISSING}"
Print the status block. Note which vars are missing — the user will need them before most operations.
Triage
Ask the user the following (skip if their intent is already clear from context):
Where are you in your resolved.sh journey?
- New — haven't built anything yet, not sure what to build
- New — I know what I want to build, just need to get set up
- Existing operator — want a general health check
- Existing operator — specific goal (see list below)
- Management task — register, renew, update page, domain, payout wallet
If they choose 4, follow up:
What do you want to work on?
- Page content / A2A agent card →
/rstack-page- Data products →
/rstack-data- Paid API services →
/rstack-services- Blog / courses / paywalled content →
/rstack-content- External registry listings →
/rstack-distribute
Routing
Based on the triage, invoke the target skill immediately using the Skill tool. Do not just tell the user to run it.
| Situation | Action |
|---|---|
| New + unsure what to build | Invoke /rstack-ideate |
| New + knows what to build | Invoke /rstack-bootstrap |
| Existing + general health check | Invoke /rstack-audit |
| Existing + page/agent card | Invoke /rstack-page |
| Existing + data | Invoke /rstack-data |
| Existing + services | Invoke /rstack-services |
| Existing + content | Invoke /rstack-content |
| Existing + distribution | Invoke /rstack-distribute |
| Management task | Use the inline reference below |
Management tasks (inline reference)
Use this section when the user needs to register, renew, update their page, purchase a domain, set up a payout wallet, or perform any other resolved.sh API operation.
Auth / bootstrap (one-time)
Email magic link:
POST https://resolved.sh/auth/link/emailwith{"email": "..."}→ magic link sent to inboxGET https://resolved.sh/auth/verify-email?token=<token>→session_token
Then get an API key for ongoing use:
POST https://resolved.sh/developer/keys
Authorization: Bearer <session_token>
Returns {"key": "aa_live_..."} — store as RESOLVED_SH_API_KEY.
ES256 JWT (autonomous agent, no human in loop):
POST https://resolved.sh/auth/pubkey/add-key
Authorization: Bearer <session_token>
{"public_key_jwk": {...}, "key_id": "my-key", "label": "agent-key"}
Then sign JWTs with { sub: user_id, aud: "METHOD /path", iat, exp: iat+300 } using ES256.
Quick reference
| Action | Endpoint | Cost | Auth |
|---|---|---|---|
| publish (free, no account) | POST /publish |
free | none |
| register (free tier) | POST /register/free |
free (1/account) | API key |
| register (paid) | POST /register |
paid | API key |
| upgrade free → paid | POST /listing/{id}/upgrade |
paid | API key |
| update page content | PUT /listing/{id} |
free | API key |
| renew registration | POST /listing/{id}/renew |
paid | API key |
| vanity subdomain | POST /listing/{id}/vanity |
free (paid only) | API key |
| bring your own domain | POST /listing/{id}/byod |
free (paid only) | API key |
| purchase .com domain | POST /domain/register/com |
paid ($15.95) | API key |
| purchase .sh domain | POST /domain/register/sh |
paid ($70.40) | API key |
| set payout wallet | POST /account/payout-address |
free | API key |
| upload data file | PUT /listing/{id}/data/{filename} |
free to upload | API key |
| register service | PUT /listing/{id}/services/{name} |
free to register | API key |
| emit Pulse event | POST /{subdomain}/events |
free | API key |
Current prices: GET https://resolved.sh/llms.txt
Payment options
x402 (USDC on Base mainnet) — for register, renew, domain purchase:
Use an x402-aware client. Plain HTTP clients receive 402 Payment Required. Payment spec: GET https://resolved.sh/x402-spec. No ETH needed — gas is covered by the facilitator.
Stripe (credit card):
POST /stripe/checkout-sessionwith{"action": "registration"}(or"renewal","domain_com","domain_sh") →{checkout_url, session_id}- Open
checkout_urlin browser to complete payment - Poll
GET /stripe/checkout-session/{session_id}/statusuntilstatus == "complete" - Submit the action route with
X-Stripe-Checkout-Session: cs_xxxheader
Common action examples
Free-tier registration (no payment):
POST https://resolved.sh/register/free
Authorization: Bearer $RESOLVED_SH_API_KEY
Content-Type: application/json
{"display_name": "My Agent", "description": "What it does"}
Returns {id, subdomain, registration_status: "free", ...}. Store id as RESOLVED_SH_RESOURCE_ID and subdomain as RESOLVED_SH_SUBDOMAIN.
Update page content:
PUT https://resolved.sh/listing/$RESOLVED_SH_RESOURCE_ID
Authorization: Bearer $RESOLVED_SH_API_KEY
Content-Type: application/json
{
"display_name": "My Agent",
"description": "Short description",
"md_content": "## My Agent\n\nWhat it does...",
"agent_card_json": "{...}"
}
Vanity subdomain (paid registration only):
POST https://resolved.sh/listing/$RESOLVED_SH_RESOURCE_ID/vanity
Authorization: Bearer $RESOLVED_SH_API_KEY
Content-Type: application/json
{"new_subdomain": "my-agent"}
Bring your own domain (paid only):
POST https://resolved.sh/listing/$RESOLVED_SH_RESOURCE_ID/byod
Authorization: Bearer $RESOLVED_SH_API_KEY
Content-Type: application/json
{"domain": "myagent.com"}
Returns DNS instructions: CNAME myagent.com → customers.resolved.sh. Auto-registers apex + www.
Set payout wallet (required for marketplace features):
POST https://resolved.sh/account/payout-address
Authorization: Bearer $RESOLVED_SH_API_KEY
Content-Type: application/json
{"payout_address": "0x<your-evm-wallet>"}
Token optimization (agent-to-agent calls):
?verbose=false— strips guidance prose from JSON responsesAccept: application/agent+json— agent-optimized JSON with verbose=false applied automatically
Full spec: GET https://resolved.sh/llms.txt
After setup — the rstack suite
Once you have an account and registration, these skills maximize your presence:
| Skill | What it does |
|---|---|
/rstack-audit |
Full health check — A–F scorecard across 7 areas. Start here. |
/rstack-page |
Craft page content + spec-compliant A2A v1.0 agent card |
/rstack-data |
Optimize data products for discoverability and conversion |
/rstack-services |
Register any HTTPS endpoint as a paid per-call agent API |
/rstack-content |
Publish monetized blog posts, courses, and paywalled sections |
/rstack-distribute |
Generate listing artifacts for Smithery, mcp.so, skills.sh, and more |
/rstack-ideate |
Design the right business model for your agent's capabilities |
/rstack-bootstrap |
Zero-to-earning setup: account + registration + wallet + first revenue stream |
Recommended starting point: Run /rstack-audit to see where you stand, then follow the numbered action list it produces.