{"openapi":"3.1.0","info":{"title":"Fakespotter API","version":"0.1.0","description":"A fully local counterfeit-product red-flags guide: universal and category-specific tells, seller/listing signals, a packaging inspection checklist, authenticity-verification resources, reporting channels, and pure-compute price-reality and listing-risk-score helpers. Educational only.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://fakespotter.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/fakespotter/docs"},"termsOfService":"https://connectorbay.com/fakespotter/terms"},"servers":[{"url":"https://fakespotter.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/fakespotter/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/universal_red_flags":{"post":{"operationId":"universal_red_flags","summary":"General counterfeit tells that apply across almost any product category: price too good to be true, a","description":"General counterfeit tells that apply across almost any product category: price too good to be true, a\n    brand-new seller, stock-photo-only listings, code-word wording ('AAA quality', 'inspired by'), misspelled\n    brand names, off-platform payment pressure, no-returns policies, unbranded overseas shipping, and\n    suspiciously uniform reviews. Use for \"what are general signs of a counterfeit product\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"universal_red_flagsArguments","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/list_categories":{"post":{"operationId":"list_categories","summary":"Lists every product category this guide covers, with its category id for use with category_red_flags.","description":"Lists every product category this guide covers, with its category id for use with category_red_flags.\n    Use for \"what product categories do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_categoriesArguments","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_red_flags":{"post":{"operationId":"category_red_flags","summary":"Category-specific counterfeit tells, common counterfeit targets in that category, a price-reality note,","description":"Category-specific counterfeit tells, common counterfeit targets in that category, a price-reality note,\n    and a safety note where the category carries one (electronics, cosmetics, toys). Use for \"how do I spot fake\n    AirPods\", \"what should I check on a designer handbag before buying it used\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"Product category (see list_categories).","examples":["electronics","sneakers","handbags","cosmetics","toys","watches"],"title":"Category","type":"string"}},"required":["category"],"title":"category_red_flagsArguments","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/seller_listing_red_flags":{"post":{"operationId":"seller_listing_red_flags","summary":"Marketplace seller and listing signals worth checking before buying — account age, review count/rating,","description":"Marketplace seller and listing signals worth checking before buying — account age, review count/rating,\n    whether photos are real or stock images, price vs. market, brand breadth of the storefront, communication\n    channel, and return policy — with what a risky value looks like for each. Use for \"what should I check about\n    a seller before buying from them\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"seller_listing_red_flagsArguments","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/packaging_inspection_checklist":{"post":{"operationId":"packaging_inspection_checklist","summary":"A physical-inspection checklist for a received item: comparing packaging/tags to official photos, checking","description":"A physical-inspection checklist for a received item: comparing packaging/tags to official photos, checking\n    batch/serial codes, stitching and seams, material feel and smell, spelling and grammar, weight, and (for\n    electronics) safety certification marks and companion-app pairing. Use for \"how do I check if this item I\n    received is real\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"packaging_inspection_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/verify_authenticity_resources":{"post":{"operationId":"verify_authenticity_resources","summary":"General channels for actually confirming authenticity: a brand's own serial/batch lookup tool, its","description":"General channels for actually confirming authenticity: a brand's own serial/batch lookup tool, its\n    authorized-retailer list, independent third-party authentication services, the brand's own customer service,\n    and marketplace authenticity-guarantee programs. Use for \"how can I actually verify this is real before I buy\n    it or after I receive it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"verify_authenticity_resourcesArguments","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/report_counterfeit_guide":{"post":{"operationId":"report_counterfeit_guide","summary":"Where to report and seek a remedy once you have a counterfeit item: marketplace dispute/buyer-protection","description":"Where to report and seek a remedy once you have a counterfeit item: marketplace dispute/buyer-protection\n    claim, payment-card chargeback, the marketplace's separate counterfeit-report form, the brand's own IP/anti-\n    counterfeiting page, and national consumer-protection agencies. Use for \"I think I bought a fake, what do I do\n    now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"report_counterfeit_guideArguments","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/price_reality_check":{"post":{"operationId":"price_reality_check","summary":"Pure calculation: compares an asking price to a typical retail price, reports the discount percentage, and","description":"Pure calculation: compares an asking price to a typical retail price, reports the discount percentage, and\n    flags how unusual that discount is for a name-brand item (an extreme discount is one of the strongest\n    counterfeit signals). Use for \"is $40 for these headphones too good to be true if they normally cost $200\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asking_price":{"description":"The price being asked for the item.","exclusiveMinimum":0,"title":"Asking Price","type":"number"},"typical_retail_price":{"description":"The item's typical price at an authorized retailer or the brand's own site.","exclusiveMinimum":0,"title":"Typical Retail Price","type":"number"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional product category (see list_categories) for a category-specific note.","title":"Category"}},"required":["asking_price","typical_retail_price"],"title":"price_reality_checkArguments","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/listing_risk_score":{"post":{"operationId":"listing_risk_score","summary":"Combines whichever signals you have observed — matched red flags, seller account age, review count,","description":"Combines whichever signals you have observed — matched red flags, seller account age, review count,\n    rating, and price ratio versus retail — into one rough composite risk score (0-100), a risk level, and a\n    recommendation. Every input is optional; give what you know. Use for \"I found this listing: brand-new seller,\n    3 reviews, priced at 30% of retail — how risky is this\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"observed_flags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Ids of universal red flags observed (see universal_red_flags for valid ids), e.g. ['price_too_good', 'stock_photos_only'].","title":"Observed Flags"},"seller_account_age_months":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"How many months old the seller/storefront account is, if known.","title":"Seller Account Age Months"},"review_count":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of reviews the seller has, if known.","title":"Review Count"},"rating":{"anyOf":[{"maximum":5,"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Seller's rating out of 5, if known.","title":"Rating"},"price_ratio":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Asking price divided by typical retail price (e.g. 0.4 if asking price is 40% of retail), if known.","title":"Price Ratio"}},"title":"listing_risk_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}}}}