{"openapi":"3.1.0","info":{"title":"ShowMojo (BYOK) API","version":"0.1.0","description":"ShowMojo (BYOK) lets an AI assistant read your own ShowMojo data through the ShowMojo API with a key you supply (ShowMojo account API token). Read-only: 6 tools (list_listings, get_listing, list_properties, get_property, get_tour_available_times, get_tour_screening_questions). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-showmojo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-showmojo/docs"},"termsOfService":"https://connectorbay.com/byok-showmojo/terms"},"servers":[{"url":"https://byok-showmojo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-showmojo/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_listings":{"post":{"operationId":"list_listings","summary":"List rental or sale listings of the account (oldest first) with address, type, rent or price, bedrooms, bathrooms, size,","description":"List rental or sale listings of the account (oldest first) with address, type, rent or price, bedrooms, bathrooms, size, availability and status. Filter by status or by last update time. Use for \"Which of my ShowMojo listings are active and what is the rent\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["STATUS_ACTIVE","STATUS_INACTIVE"],"type":"string"},{"type":"null"}],"default":null,"description":"Only listings with this status.","title":"Status"},"updated_since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only listings updated at or after this ISO 8601 time, for example 2026-10-01T00:00:00Z.","title":"Updated Since"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 100).","title":"Per Page"}},"title":"list_listingsArguments","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/get_listing":{"post":{"operationId":"get_listing","summary":"Get one listing by uid with address, type, rent or price, rooms, size, availability, fees, showing types and neighborhoo","description":"Get one listing by uid with address, type, rent or price, rooms, size, availability, fees, showing types and neighborhood fields. Use for \"Show the details of listing abc123def\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"listing_uid":{"description":"The listing's unique id (uid) from list_listings.","maxLength":60,"title":"Listing Uid","type":"string"}},"required":["listing_uid"],"title":"get_listingArguments","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_properties":{"post":{"operationId":"list_properties","summary":"List properties (buildings or addresses that listings belong to) with name, label, highlights, specials, address and int","description":"List properties (buildings or addresses that listings belong to) with name, label, highlights, specials, address and integration source. Use for \"Which properties do I manage in ShowMojo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 100).","title":"Per Page"}},"title":"list_propertiesArguments","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/get_property":{"post":{"operationId":"get_property","summary":"Get one property by uid with name, highlights, specials and addresses. Use for \"Show property prop456\".","description":"Get one property by uid with name, highlights, specials and addresses. Use for \"Show property prop456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"property_uid":{"description":"The property uid from list_properties.","maxLength":60,"title":"Property Uid","type":"string"}},"required":["property_uid"],"title":"get_propertyArguments","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/get_tour_available_times":{"post":{"operationId":"get_tour_available_times","summary":"List open tour time slots for a listing in the listing's local time, with the showing type of each slot. Empty when the ","description":"List open tour time slots for a listing in the listing's local time, with the showing type of each slot. Empty when the listing is off the market or tours are switched off. Use for \"When can prospects tour listing abc123def next week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"listing_id":{"description":"Listing id or uid from list_listings.","maxLength":60,"title":"Listing Id","type":"string"},"start_local_date_time":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only slots after this ISO 8601 local date-time.","title":"Start Local Date Time"},"end_local_date_time":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only slots before this ISO 8601 local date-time.","title":"End Local Date Time"},"showing_type":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Showing type filter: in_person, self_guided or both comma separated.","title":"Showing Type"}},"required":["listing_id"],"title":"get_tour_available_timesArguments","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/get_tour_screening_questions":{"post":{"operationId":"get_tour_screening_questions","summary":"List the screening questions configured for a listing's tours (pets, move date, income and similar) with required flag a","description":"List the screening questions configured for a listing's tours (pets, move date, income and similar) with required flag and options. Use for \"What screening questions does listing abc123def ask before a tour\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"listing_id":{"description":"Listing id or uid from list_listings.","maxLength":60,"title":"Listing Id","type":"string"}},"required":["listing_id"],"title":"get_tour_screening_questionsArguments","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}}}}