AdSpoty Agent Integrations (MCP)
Connect ChatGPT, Claude, Cursor, or any Model Context Protocol client to query AdSpoty listings.
https://adspoty.com/mcpAvailable tools
list_categoriesList AdSpoty marketplace categories. Pass a parent_slug to walk into subcategories.
- parent_slug : string — Omit for top-level categories.
{
"tool": "list_categories",
"arguments": {}
}{
"tool": "list_categories",
"arguments": {
"parent_slug": "vehicles"
}
}{
"tool": "list_categories",
"arguments": {
"parent_slug": "not-a-real-slug"
}
}{"isError": true, "content": [{"type":"text","text":"Error: Unknown parent_slug 'not-a-real-slug'."}]}search_listingsFind active listings by keyword, category slug, city, and/or price range. Supports pagination (limit + offset) and stable sorting. Results include tier flags (spotlight/featured/urgent/bumped/highlighted) and a public URL. Response includes count, total, offset, next_offset.
- query : string — Free-text over title & description.
- category_slug : string
- city : string
- min_price : number
- max_price : number
- limit : number — 1–50, default 20.
- offset : number — 0–10000, default 0. Use response.next_offset to page.
- sort : enum — relevance | newest | oldest | price_asc | price_desc. All sorts add a stable id tiebreak.
{
"tool": "search_listings",
"arguments": {
"query": "iphone",
"max_price": 500
}
}{
"tool": "search_listings",
"arguments": {
"category_slug": "vehicles",
"city": "Miami",
"sort": "price_asc"
}
}{
"tool": "search_listings",
"arguments": {
"query": "bike",
"limit": 20,
"offset": 20
}
}{
"tool": "search_listings",
"arguments": {
"min_price": 500,
"max_price": 100
}
}{"isError": true, "content": [{"type":"text","text":"Error: min_price cannot be greater than max_price."}]}{
"tool": "search_listings",
"arguments": {
"category_slug": "not-a-real-slug"
}
}{"isError": true, "content": [{"type":"text","text":"Error: Unknown category_slug: 'not-a-real-slug'."}]}{
"tool": "search_listings",
"arguments": {
"limit": 999
}
}Zod validation error — limit must be ≤ 50. The MCP transport returns a JSON-RPC error before the handler runs.
get_listingFetch full details for a listing. Pass either a raw UUID as `id`, or a listing URL / path segment containing the UUID as `slug`.
- id : uuid — Raw listing UUID.
- slug : string — Full listing URL (e.g. https://adspoty.com/listing/<uuid>) or path segment.
{
"tool": "get_listing",
"arguments": {
"id": "37b2e0dd-e350-4cc2-a372-c9199caafb64"
}
}{
"tool": "get_listing",
"arguments": {
"slug": "https://adspoty.com/listing/37b2e0dd-e350-4cc2-a372-c9199caafb64"
}
}{
"tool": "get_listing",
"arguments": {}
}{"isError": true, "content": [{"type":"text","text":"Provide `id` (UUID) or `slug` (a listing URL / path containing the UUID)."}]}{
"tool": "get_listing",
"arguments": {
"id": "00000000-0000-0000-0000-000000000000"
}
}{"isError": true, "content": [{"type":"text","text":"Listing not found or not active."}]}{
"tool": "get_listing",
"arguments": {
"slug": "https://adspoty.com/listing/not-a-uuid"
}
}{"isError": true, "content": [{"type":"text","text":"Provide `id` (UUID) or `slug` (a listing URL / path containing the UUID)."}]}All tool errors follow the MCP standard: the tool returns a normal result object with isError: true and a human-readable message inside content[].text. Input-validation failures (wrong types, out-of-range numbers) are rejected by the JSON-RPC transport before the handler runs and surface as a JSON-RPC error object instead. Rate-limit (429) and method-not-allowed (405) responses come from the HTTP layer and never enter the MCP tool envelope.
{
"isError": true,
"content": [{ "type": "text", "text": "Error: <human-readable message>" }]
}"Use the adspoty-mcp connector: list the top-level categories, then find up to 5 active listings under 'vehicles' in Miami priced below $10,000. Share the URLs."