{"openapi":"3.0.3","info":{"title":"Gnist Context — Jokes","description":"Curated joke database with 120 jokes across 8 categories — get random jokes, search, or browse by category.\n\n- **MCP endpoint:** `https://context.gnist.ai/mcp/jokes/`\n- **Toolkit page:** `/toolkits/jokes`\n- **Full API spec:** `/api/openapi.json`\n- **Get an API key:** `/signup`","version":"1.0.0","contact":{"name":"GnistAI","url":"https://gnist.ai"}},"servers":[{"url":"https://context.gnist.ai","description":"Production"}],"paths":{"/rest/jokes/get_random_joke":{"post":{"tags":["Entertainment"],"summary":"get_random_joke","description":"Get a random joke.\n\nReturns a joke with setup and punchline. For single-type jokes, the full joke is in the setup field.\nOptionally filter by category — use list_joke_categories() to see valid categories.","operationId":"jokes_get_random_joke","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by category (e.g. Programming, Dad Jokes, Science, Math). Omit for any category."}},"type":"object"}}}}}},"/rest/jokes/get_random_jokes":{"post":{"tags":["Entertainment"],"summary":"get_random_jokes","description":"Get multiple random jokes.\n\nReturns a list of unique random jokes. Optionally filter by category.","operationId":"jokes_get_random_jokes","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Number of jokes to return (1-20, default 5)."},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Filter by category. Omit for any category."}},"type":"object"}}}}}},"/rest/jokes/search_jokes":{"post":{"tags":["Entertainment"],"summary":"search_jokes","description":"Search for jokes by keyword.\n\nSearches across setup text, punchlines, and categories. Case-insensitive.","operationId":"jokes_search_jokes","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"query":{"description":"Search keyword — matches joke text, punchline, or category.","type":"string"},"max_results":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of results (default: 20, max: 100)."}},"required":["query"],"type":"object"}}}}}},"/rest/jokes/list_joke_categories":{"post":{"tags":["Entertainment"],"summary":"list_joke_categories","description":"List all available joke categories.\n\nReturns the category names that can be used to filter random jokes.","operationId":"jokes_list_joke_categories","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}]}},"/rest/jokes/report_feedback":{"post":{"tags":["Entertainment"],"summary":"report_feedback","description":"Report a bug, feature request, or general feedback for this data source.\n\nUse this when something doesn't work as expected, when you'd like\na new feature, or when you have suggestions for improvement.\n\nArgs:\n    feedback: Describe the issue or suggestion.\n    feedback_type: One of 'bug', 'feature_request', or 'general'.","operationId":"jokes_report_feedback","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"feedback":{"type":"string"},"feedback_type":{"default":"general","type":"string"}},"required":["feedback"],"type":"object"}}}}}}},"tags":[{"name":"Entertainment","description":"Data sources: Entertainment"}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"gnist-api-key","description":"API key passed via request header."},"ApiKeyQuery":{"type":"apiKey","in":"query","name":"gnist_api_key","description":"API key passed via query parameter."}}}}