{"openapi":"3.1.0","info":{"title":"Date Idea API","version":"0.1.0","description":"A fully local, category-level date-idea generator: a hand-curated idea bank scored and filtered by location type, budget tier and interests, plus first-date filtering and general date-planning tips. Never a live venue database or a real named business/link.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://dateidea.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/dateidea/docs"},"termsOfService":"https://connectorbay.com/dateidea/terms"},"servers":[{"url":"https://dateidea.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/dateidea/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/date_ideas":{"post":{"operationId":"date_ideas","summary":"The main date-idea generator: scores a hand-curated bank of ~65 ideas against any combination of location","description":"The main date-idea generator: scores a hand-curated bank of ~65 ideas against any combination of location\n    type, budget tier, and interests you give it. Use for \"date ideas under $25\", \"outdoor date ideas for someone\n    into nature and photography\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"outdoor, indoor, at_home, or virtual.","title":"Location Type"},"budget_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"free ($0), low ($1-25), medium ($25-75), or high ($75+), per person.","title":"Budget Tier"},"interests":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Any of: food_and_drink, art_and_culture, nature, fitness_and_movement, games_and_puzzles, music, learning, nostalgia, adventure, relaxation, creativity, animals.","title":"Interests"},"count":{"default":6,"maximum":15,"minimum":1,"title":"Count","type":"integer"}},"title":"date_ideasArguments","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/date_ideas_by_interest":{"post":{"operationId":"date_ideas_by_interest","summary":"Every date idea tagged to one interest, unfiltered by location or budget. Use for \"date ideas for someone","description":"Every date idea tagged to one interest, unfiltered by location or budget. Use for \"date ideas for someone\n    who loves music\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"interest":{"description":"A single interest.","examples":["nature"],"minLength":1,"title":"Interest","type":"string"},"count":{"default":10,"maximum":15,"minimum":1,"title":"Count","type":"integer"}},"required":["interest"],"title":"date_ideas_by_interestArguments","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/date_ideas_by_budget":{"post":{"operationId":"date_ideas_by_budget","summary":"Every date idea tagged to one budget tier. Use for \"free date ideas\", \"date ideas under $25\".","description":"Every date idea tagged to one budget tier. Use for \"free date ideas\", \"date ideas under $25\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"budget_tier":{"description":"free, low, medium, or high.","examples":["low"],"minLength":1,"title":"Budget Tier","type":"string"},"count":{"default":10,"maximum":15,"minimum":1,"title":"Count","type":"integer"}},"required":["budget_tier"],"title":"date_ideas_by_budgetArguments","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/date_ideas_by_location_type":{"post":{"operationId":"date_ideas_by_location_type","summary":"Every date idea tagged to one location type. Use for \"indoor date ideas\", \"virtual date ideas\".","description":"Every date idea tagged to one location type. Use for \"indoor date ideas\", \"virtual date ideas\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_type":{"description":"outdoor, indoor, at_home, or virtual.","minLength":1,"title":"Location Type","type":"string"},"count":{"default":10,"maximum":15,"minimum":1,"title":"Count","type":"integer"}},"required":["location_type"],"title":"date_ideas_by_location_typeArguments","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/first_date_ideas":{"post":{"operationId":"first_date_ideas","summary":"Only ideas tagged as comfortable for a first date — public, lower-commitment, and easy to end gracefully if","description":"Only ideas tagged as comfortable for a first date — public, lower-commitment, and easy to end gracefully if\n    there's no spark. Use for \"first date ideas\", \"low-pressure first date ideas outdoors\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optionally narrow to outdoor, indoor, at_home, or virtual.","title":"Location Type"},"budget_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optionally narrow by budget tier.","title":"Budget Tier"},"count":{"default":8,"maximum":15,"minimum":1,"title":"Count","type":"integer"}},"title":"first_date_ideasArguments","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/budget_tiers_list":{"post":{"operationId":"budget_tiers_list","summary":"The budget tiers this reference understands, with their dollar ranges. Use for \"what budget tiers do you","description":"The budget tiers this reference understands, with their dollar ranges. Use for \"what budget tiers do you\n    support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"budget_tiers_listArguments","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/interest_list":{"post":{"operationId":"interest_list","summary":"Every interest category this reference understands. Use for \"what interests can I filter date ideas by\".","description":"Every interest category this reference understands. Use for \"what interests can I filter date ideas by\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"interest_listArguments","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/location_type_list":{"post":{"operationId":"location_type_list","summary":"The four location types this reference understands, with a one-line note on each. Use for \"what location","description":"The four location types this reference understands, with a one-line note on each. Use for \"what location\n    types do you support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"location_type_listArguments","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/date_planning_tips":{"post":{"operationId":"date_planning_tips","summary":"General, practical date-planning norms: who typically plans, splitting the cost, first-date safety basics,","description":"General, practical date-planning norms: who typically plans, splitting the cost, first-date safety basics,\n    keeping a first date low-pressure, reading interest, and keeping things fresh in a longer relationship. Use\n    for \"who should plan the date\", \"is it normal to split the bill\", \"first date safety tips\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"date_planning_tipsArguments","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}}}}