{"openapi":"3.1.0","info":{"title":"Scam Spot API","version":"0.1.0","description":"A fully local, hand-curated, general educational reference on common tourist-scam patterns, organized by scam type and setting rather than by naming or shaming any specific country or culture.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://scamspot.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/scamspot/docs"},"termsOfService":"https://connectorbay.com/scamspot/terms"},"servers":[{"url":"https://scamspot.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/scamspot/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/scam_pattern_info":{"post":{"operationId":"scam_pattern_info","summary":"Full detail on one scam pattern: how it works, tell-tale signs, what to do, a short response script, and","description":"Full detail on one scam pattern: how it works, tell-tale signs, what to do, a short response script, and\n    severity (financial vs safety). Use for \"how does the fake tour guide scam work\", \"what are the signs of ATM\n    skimming\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A scam pattern's name or id.","examples":["fake tour guide","distraction theft","atm skimming"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"scam_pattern_infoArguments","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/scam_search":{"post":{"operationId":"scam_search","summary":"Keyword search across every scam pattern's name, category, mechanics, tell-tale signs and settings. Use for","description":"Keyword search across every scam pattern's name, category, mechanics, tell-tale signs and settings. Use for\n    \"scams involving taxis\", \"anything about fake tickets\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Keyword to search for.","minLength":1,"title":"Query","type":"string"}},"required":["query"],"title":"scam_searchArguments","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/scams_by_category":{"post":{"operationId":"scams_by_category","summary":"Every scam pattern in one category. Use category_list to see valid category names. Use for \"list all","description":"Every scam pattern in one category. Use category_list to see valid category names. Use for \"list all\n    distraction-theft scams\", \"what overcharging scams exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"A category name.","examples":["Distraction & Theft","Overcharging & Fake Fees"],"title":"Category","type":"string"}},"required":["category"],"title":"scams_by_categoryArguments","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/category_list":{"post":{"operationId":"category_list","summary":"Every scam category with how many patterns are in it. Use for \"what categories of scams do you cover\".","description":"Every scam category with how many patterns are in it. Use for \"what categories of scams do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"category_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/scams_by_setting":{"post":{"operationId":"scams_by_setting","summary":"Scam patterns commonly documented in a given setting — airport/station, taxi/rideshare, market/street","description":"Scam patterns commonly documented in a given setting — airport/station, taxi/rideshare, market/street\n    vendor, tourist landmark, nightlife, online booking, or ATM/currency exchange. Use for \"what scams happen at\n    airports\", \"what should I watch for at an ATM abroad\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"setting":{"description":"A setting/situation type.","examples":["airport","taxi","market","landmark","nightlife","online booking","atm"],"title":"Setting","type":"string"}},"required":["setting"],"title":"scams_by_settingArguments","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/red_flag_checklist":{"post":{"operationId":"red_flag_checklist","summary":"The general precursor signs that cut across almost every scam pattern: urgency, isolation, unsolicited","description":"The general precursor signs that cut across almost every scam pattern: urgency, isolation, unsolicited\n    friendliness with an agenda, unverifiable authority, hidden pricing, and off-platform/cash-only payment. Use for\n    \"what are common signs of a scam in general\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"red_flag_checklistArguments","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/response_script":{"post":{"operationId":"response_script","summary":"Just the short thing to say or do if you recognize a named scam pattern happening to you. Use for \"what","description":"Just the short thing to say or do if you recognize a named scam pattern happening to you. Use for \"what\n    should I say if a fake police officer stops me\", \"what do I say to decline a free bracelet scam\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scam_type":{"description":"A scam pattern's name or id.","minLength":1,"title":"Scam Type","type":"string"}},"required":["scam_type"],"title":"response_scriptArguments","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/tactics_glossary":{"post":{"operationId":"tactics_glossary","summary":"Definitions of general scam tactics that cut across specific patterns — distraction, urgency/time pressure,","description":"Definitions of general scam tactics that cut across specific patterns — distraction, urgency/time pressure,\n    authority impersonation, anchoring, social pressure, bait-and-switch, off-platform payment. Use for \"what's\n    anchoring in a scam context\", \"what does bait-and-switch mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific tactic term to look up; omit to list all.","title":"Term"}},"title":"tactics_glossaryArguments","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/reporting_guidance":{"post":{"operationId":"reporting_guidance","summary":"General guidance on reporting a travel scam afterward: local police, the relevant platform, your bank, or","description":"General guidance on reporting a travel scam afterward: local police, the relevant platform, your bank, or\n    your embassy, depending on what happened. Use for \"how do I report a travel scam\", \"I got scammed, what do I do now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"reporting_guidanceArguments","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/risk_awareness_score":{"post":{"operationId":"risk_awareness_score","summary":"Combines a few situational yes/no flags into a rough composite awareness score (low/moderate/high), based on","description":"Combines a few situational yes/no flags into a rough composite awareness score (low/moderate/high), based on\n    the red-flag patterns documented across many scam types. Use for \"how risky does this situation sound: someone\n    approached me, wants cash only, and won't show ID\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"unsolicited_approach":{"default":false,"description":"A stranger approached you first, with a specific agenda.","title":"Unsolicited Approach","type":"boolean"},"urgency_pressure":{"default":false,"description":"You're being pushed to decide or pay quickly.","title":"Urgency Pressure","type":"boolean"},"isolated_location":{"default":false,"description":"You're being steered away from a crowd or public area.","title":"Isolated Location","type":"boolean"},"payment_off_platform_or_cash_only":{"default":false,"description":"Payment is demanded off-platform or cash-only.","title":"Payment Off Platform Or Cash Only","type":"boolean"},"price_unclear_until_after":{"default":false,"description":"No price was stated until after you accepted something.","title":"Price Unclear Until After","type":"boolean"},"claims_official_authority":{"default":false,"description":"Someone claims to be police/an official but resists verification.","title":"Claims Official Authority","type":"boolean"}},"title":"risk_awareness_scoreArguments","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}}}}