API and documentation
For agents and developers
Connect an MCP client to walk through a demo reservation, or use the API to join the waitlist. Real bookings, payments, trading, resales, buybacks, and compute access aren’t available.
Connect with MCP
Endpoint: https://www.dodonamarkets.com/mcp. Add the full URL—this site’s origin followed by /mcp—to a client that supports remote Streamable HTTP MCP. Use the public HTTPS URL when deployed. The connector must be added before a chat can use Dodona; visiting the endpoint in a browser won’t book anything.
No account or API key is needed for this demo. A compatible client handles MCP initialization and the POST requests. The endpoint uses JSON responses without a persistent event stream.
Try a reservation
Once connected, ask: “Help me book a demo H100 reservation with Dodona.” Your agent should ask for the GPU count, total GPU-hours, usage dates and timezone, and region. You can also give upfront or total budget limits.
It should show the protection payment, booking fee, compute cost, and terms, then ask you to confirm. The receipt will say DEMO: no payment is taken, no capacity is held, and no reservation is stored.
The demo supports H100, 1–8 GPUs, and up to 10,000 total GPU-hours. One hundred GPU-hours means one GPU for 100 hours or two for 50 hours each. Quotes last 15 minutes, or until the usage window starts.
get_product- Read product terms and example fees
get_reservation_requirements- Get the questions and supported values
quote_demo_reservation- Review a signed, illustrative quote
confirm_demo_reservation- Receive a simulated receipt after confirming
get_waitlist_status- Check real signup availability
join_waitlist- Sign up only if the user asks and storage confirms
The MCP server also provides the reserve_compute_demo prompt and dodona://product and dodona://guide resources. It never asks for card details.
Read first
The product summary lists the terms, example figures, and supported capabilities. All prices and fees are examples. Read the signup policy before collecting an email. There is no public signup list.
Join the waitlist
- Use only the email and optional details the user supplied, after they ask to join.
- Request
GET /api/waitlist/status. Continue only on200withavailable: trueand a token. A503means signup is unavailable. - Wait at least 1.5 seconds after the token was issued. It expires after two hours.
- Send
POST /api/waitlistwithContent-Type: application/jsonand the fields below. - Only
200with{"status":"saved"}confirms signup. New and existing addresses get the same response. No email is sent automatically.
{
"email": "the-user-provided-address",
"token": "the-token-from-the-status-response",
"interest": "Business hedging",
"useCase": "The user's own description",
"website": ""
}
email and token are required. Other fields are optional. Leave website empty or omit it; it is a spam trap, not a URL field.
Interest values
The API keeps its original field values. The form uses these labels:
Individual trading- Planning a personal project
Business hedging- Protecting a business budget
Partnership- Providing compute capacity
- Empty or omitted
- No preference
Limits and retries
Email: 254 characters maximum. Use case: 280 characters. Body: 4 KB. Default limits are 20 signup attempts per client in 10 minutes and 120 status checks per minute.
For 429, follow Retry-After. For FORM_EXPIRED, fetch a new token. On 503, report that signup was not confirmed. A lost response can follow a saved signup; retrying the same email won’t create a duplicate or overwrite preferences.
Client access
Server-to-server requests work without a browser. Browser requests must come from this site; cross-origin access isn’t enabled. Clients don’t need Supabase credentials or the server’s form secret. Don’t spoof an origin or bypass limits.
Contact
For signup corrections, removal, or questions:
dodonamarkets@gmail.com