{"openapi":"3.1.0","info":{"title":"Mobilize (BYOK) API","version":"0.1.0","description":"Mobilize (BYOK) lets an AI assistant read your own Mobilize data through the Mobilize API with a key you supply (Mobilize API key). Read-only: 7 tools (list_organizations, list_promoted_organizations, list_organization_events, get_organization_event, get_public_event, list_deleted_events, get_enums). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-mobilize.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mobilize/docs"},"termsOfService":"https://connectorbay.com/byok-mobilize/terms"},"servers":[{"url":"https://byok-mobilize.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mobilize/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_organizations":{"post":{"operationId":"list_organizations","summary":"List the active organizations on Mobilize with name, type, state and district; filter to those changed since a time. Use","description":"List the active organizations on Mobilize with name, type, state and district; filter to those changed since a time. Use for \"Which organizations use Mobilize in my state\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"updated_since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items modified after this Unix timestamp (seconds).","title":"Updated Since"}},"title":"list_organizationsArguments","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_promoted_organizations":{"post":{"operationId":"list_promoted_organizations","summary":"List the organizations that one organization promotes (requires a key of that organization). Use for \"Which groups does ","description":"List the organizations that one organization promotes (requires a key of that organization). Use for \"Which groups does organization 1 promote on Mobilize\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Numeric id of the organization on Mobilize, for example 1.","minimum":1,"title":"Organization Id","type":"integer"}},"required":["organization_id"],"title":"list_promoted_organizationsArguments","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_organization_events":{"post":{"operationId":"list_organization_events","summary":"List an organization's volunteer events (its own and promoted ones) with title, type, place, time slots and sign-up stat","description":"List an organization's volunteer events (its own and promoted ones) with title, type, place, time slots and sign-up status; filter by date, place, type and virtual or in-person. Use for \"What volunteer events does organization 1 have next week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Numeric id of the organization on Mobilize, for example 1.","minimum":1,"title":"Organization Id","type":"integer"},"updated_since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items modified after this Unix timestamp (seconds).","title":"Updated Since"},"timeslot_start":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Filter on time slot start: an operator and a Unix time or 'now', such as 'gte_now' or 'lt_1790000000' (gte, gt, lte, lt).","title":"Timeslot Start"},"timeslot_end":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Filter on time slot end, same format as timeslot_start.","title":"Timeslot End"},"visibility":{"anyOf":[{"enum":["PUBLIC","PRIVATE"],"type":"string"},{"type":"null"}],"default":null,"description":"PUBLIC (default) or PRIVATE; private events need a key with access.","title":"Visibility"},"event_type":{"anyOf":[{"enum":["CANVASS","PHONE_BANK","TEXT_BANK","MEETING","COMMUNITY","FUNDRAISER","MEET_GREET","HOUSE_PARTY","VOTER_REG","TRAINING","FRIEND_TO_FRIEND_OUTREACH","DEBATE_WATCH_PARTY","ADVOCACY_CALL","RALLY","TOWN_HALL","OFFICE_OPENING","BARNSTORM","SOLIDARITY_EVENT","COMMUNITY_CANVASS","SIGNATURE_GATHERING","CARPOOL","WORKSHOP","PETITION","AUTOMATED_PHONE_BANK","LETTER_WRITING","LITERATURE_DROP_OFF","VISIBILITY_EVENT","OTHER"],"type":"string"},{"type":"null"}],"default":null,"description":"Only events of this type.","title":"Event Type"},"is_virtual":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for virtual events only, false for in-person only.","title":"Is Virtual"},"exclude_full":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to leave out time slots that are full.","title":"Exclude Full"},"high_priority_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only pinned high-priority events.","title":"High Priority Only"},"state":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter state code of the event location.","title":"State"},"zipcode":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Postal code; results are then sorted by distance (at most 1000 results).","title":"Zipcode"},"max_dist":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum distance in miles from zipcode.","title":"Max Dist"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (default 25 when omitted).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_id"],"title":"list_organization_eventsArguments","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_organization_event":{"post":{"operationId":"get_organization_event","summary":"Get one event of an organization with its title, type, place and time slots. Use for \"Give me the details of event 1 of ","description":"Get one event of an organization with its title, type, place and time slots. Use for \"Give me the details of event 1 of organization 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Numeric id of the organization on Mobilize, for example 1.","minimum":1,"title":"Organization Id","type":"integer"},"event_id":{"description":"Numeric id of the event.","minimum":1,"title":"Event Id","type":"integer"}},"required":["organization_id","event_id"],"title":"get_organization_eventArguments","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_public_event":{"post":{"operationId":"get_public_event","summary":"Get one public event by id (404 for private events) with its title, type, place and time slots. Use for \"What are the ti","description":"Get one public event by id (404 for private events) with its title, type, place and time slots. Use for \"What are the time slots of public event 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Numeric id of the event.","minimum":1,"title":"Event Id","type":"integer"}},"required":["event_id"],"title":"get_public_eventArguments","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_deleted_events":{"post":{"operationId":"list_deleted_events","summary":"List the ids and deletion times of events an organization has removed, optionally since a time. Use for \"Which events of","description":"List the ids and deletion times of events an organization has removed, optionally since a time. Use for \"Which events of organization 1 were deleted recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Numeric id of the organization on Mobilize, for example 1.","minimum":1,"title":"Organization Id","type":"integer"},"updated_since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items modified after this Unix timestamp (seconds).","title":"Updated Since"},"visibility":{"anyOf":[{"enum":["PUBLIC","PRIVATE"],"type":"string"},{"type":"null"}],"default":null,"description":"PUBLIC or PRIVATE events.","title":"Visibility"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (default 25 when omitted).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["organization_id"],"title":"list_deleted_eventsArguments","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_enums":{"post":{"operationId":"get_enums","summary":"List the allowed values Mobilize uses for event type, visibility, accessibility and approval status. Use for \"Which even","description":"List the allowed values Mobilize uses for event type, visibility, accessibility and approval status. Use for \"Which event types does Mobilize support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_enumsArguments","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}}}}