{"openapi":"3.1.0","info":{"title":"Curious Prompts API","version":"0.1.0","description":"A real, stateless, playable conversation-starter game session engine with a 120+ original prompt bank across three depth levels, no-repeat tracking, a genuine depth-escalation schedule, and reaction tracking. Every tool call takes the full session state and returns the new state; nothing is stored server-side.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://curiousprompts.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/curiousprompts/docs"},"termsOfService":"https://connectorbay.com/curiousprompts/terms"},"servers":[{"url":"https://curiousprompts.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/curiousprompts/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/new_session":{"post":{"operationId":"new_session","summary":"Starts a fresh Curious Prompts session. Use for \"let's do a conversation starter\", \"start","description":"Starts a fresh Curious Prompts session. Use for \"let's do a conversation starter\", \"start\n    some deep questions\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"depth_level":{"default":"icebreaker","description":"Starting depth: icebreaker, getting_to_know_you, or deep.","title":"Depth Level","type":"string"},"auto_escalate":{"default":true,"description":"If true (default), next_prompt automatically deepens the session over time per the fixed schedule.","title":"Auto Escalate","type":"boolean"}},"title":"new_sessionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/next_prompt":{"post":{"operationId":"next_prompt","summary":"Serves a fresh prompt never before served in this session (no-repeat mechanic backed by","description":"Serves a fresh prompt never before served in this session (no-repeat mechanic backed by\n    used_ids). With auto_escalate on and no override, depth advances per the fixed round schedule.\n    Fails with bad_input if every prompt at the effective depth has already been served. Use for\n    \"next question\", \"give us another one\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"additionalProperties":true,"description":"The current session state, exactly as returned by new_session/next_prompt/escalate_session/rate_prompt.","examples":[{"auto_escalate":true,"current_prompt":{"depth":"icebreaker","id":"cp_003","text":"..."},"depth_level":"icebreaker","history":[],"rounds_served":1,"used_ids":["cp_003"]}],"title":"State","type":"object"},"depth_level":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Override the depth for just this round (icebreaker, getting_to_know_you, or deep). Omit to use the session's current/scheduled depth.","title":"Depth Level"}},"required":["state"],"title":"next_promptArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/escalate_session":{"post":{"operationId":"escalate_session","summary":"Recomputes the session's depth_level from its round count against the fixed escalation","description":"Recomputes the session's depth_level from its round count against the fixed escalation\n    schedule (rounds 1-3 icebreaker, 4-7 getting_to_know_you, 8+ deep), WITHOUT drawing a new\n    prompt. Use to check or sync the schedule-implied depth, e.g. \"are we getting deeper yet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"additionalProperties":true,"description":"The current session state, exactly as returned by new_session/next_prompt/escalate_session/rate_prompt.","examples":[{"auto_escalate":true,"current_prompt":{"depth":"icebreaker","id":"cp_003","text":"..."},"depth_level":"icebreaker","history":[],"rounds_served":1,"used_ids":["cp_003"]}],"title":"State","type":"object"}},"required":["state"],"title":"escalate_sessionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/rate_prompt":{"post":{"operationId":"rate_prompt","summary":"Records a reaction to a prompt served this session. Use for \"that one was great\", \"too","description":"Records a reaction to a prompt served this session. Use for \"that one was great\", \"too\n    personal, skip\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"additionalProperties":true,"description":"The current session state, exactly as returned by new_session/next_prompt/escalate_session/rate_prompt.","examples":[{"auto_escalate":true,"current_prompt":{"depth":"icebreaker","id":"cp_003","text":"..."},"depth_level":"icebreaker","history":[],"rounds_served":1,"used_ids":["cp_003"]}],"title":"State","type":"object"},"reaction":{"description":"One of: loved_it, liked_it, neutral, too_much, skip.","title":"Reaction","type":"string"},"prompt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Which prompt id to rate. Omit to rate the current prompt.","title":"Prompt Id"}},"required":["state","reaction"],"title":"rate_promptArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/render":{"post":{"operationId":"render","summary":"A human-readable summary: current depth/round, the current prompt, and recent reactions. Use","description":"A human-readable summary: current depth/round, the current prompt, and recent reactions. Use\n    for \"show me where we are\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"additionalProperties":true,"description":"The current session state, exactly as returned by new_session/next_prompt/escalate_session/rate_prompt.","examples":[{"auto_escalate":true,"current_prompt":{"depth":"icebreaker","id":"cp_003","text":"..."},"depth_level":"icebreaker","history":[],"rounds_served":1,"used_ids":["cp_003"]}],"title":"State","type":"object"}},"required":["state"],"title":"renderArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}