{"openapi":"3.1.0","info":{"title":"PublicSpeak API","version":"0.1.0","description":"An extemporaneous-speaking practice toolkit: a generic topic-prompt generator, a prep/speech-time structuring guide, the PREP quick-answer method, and speech-outline templates by type.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://publicspeak.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/publicspeak/docs"},"termsOfService":"https://connectorbay.com/publicspeak/terms"},"servers":[{"url":"https://publicspeak.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/publicspeak/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/topic_generator":{"post":{"operationId":"topic_generator","summary":"Generic, evergreen speech practice prompts (never tied to live news) across informative, persuasive,","description":"Generic, evergreen speech practice prompts (never tied to live news) across informative, persuasive,\n    personal narrative, and current-events-style categories. Use for \"give me 3 persuasive speech topics\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"informative | persuasive | personal_narrative | current_events_style. Omit for any category.","title":"Category"},"count":{"default":3,"maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"topic_generatorArguments","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/extemp_prep_structure":{"post":{"operationId":"extemp_prep_structure","summary":"A real prep-time breakdown (read/choose, brainstorm/research, outline, mental rehearsal) and a","description":"A real prep-time breakdown (read/choose, brainstorm/research, outline, mental rehearsal) and a\n    speech-time breakdown across the standard 7-part extemp structure. Use for \"how should I use my 30\n    minutes of prep time\", \"time out a 7-minute extemp speech\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"prep_minutes":{"default":30,"description":"Total prep time in minutes (competitive convention default: 30).","exclusiveMinimum":0,"title":"Prep Minutes","type":"number"},"speech_minutes":{"default":7,"description":"Total speech time in minutes (competitive convention default: 7).","exclusiveMinimum":0,"title":"Speech Minutes","type":"number"}},"title":"extemp_prep_structureArguments","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/prep_response_method":{"post":{"operationId":"prep_response_method","summary":"The PREP (Point, Reason, Example, Point) technique for structuring a quick, coherent 30-90 second","description":"The PREP (Point, Reason, Example, Point) technique for structuring a quick, coherent 30-90 second\n    answer on the spot. Use for \"how do I answer an impromptu question well\", \"what's the PREP method\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"prep_response_methodArguments","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/speech_outline_template":{"post":{"operationId":"speech_outline_template","summary":"A type-appropriate speech outline template with each section's purpose. Use for \"give me an outline","description":"A type-appropriate speech outline template with each section's purpose. Use for \"give me an outline\n    template for a persuasive speech\", \"how should I structure a personal narrative speech\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"speech_type":{"description":"informative | persuasive | personal_narrative | extemp (aka current_events_style)","title":"Speech Type","type":"string"}},"required":["speech_type"],"title":"speech_outline_templateArguments","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}}}}