{"openapi":"3.1.0","info":{"title":"Patreon (BYOK) API","version":"0.1.0","description":"Patreon (BYOK) lets an AI assistant read your own Patreon data through the Patreon API with a key you supply (creator's access token (from your API client on the Patreon developer portal)). Read-only: 7 tools (get_identity, list_my_campaigns, get_campaign, list_campaign_members, get_member, list_campaign_posts, get_post). The BYOK key travels with each request, is used for that one call only and...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-patreon.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-patreon/docs"},"termsOfService":"https://connectorbay.com/byok-patreon/terms"},"servers":[{"url":"https://byok-patreon.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-patreon/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/get_identity":{"post":{"operationId":"get_identity","summary":"Show the Patreon account the token belongs to: id, full name, vanity name, URL and whether it is a creator. Use for \"Whi","description":"Show the Patreon account the token belongs to: id, full name, vanity name, URL and whether it is a creator. Use for \"Which Patreon account is my token for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"fields_user":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"full_name,vanity,url,is_creator,created","description":"Comma-separated user attributes to return. Only attributes listed here come back.","title":"Fields User"}},"title":"get_identityArguments","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_my_campaigns":{"post":{"operationId":"list_my_campaigns","summary":"List the campaigns of the creator account with name, summary, patron count, pledge cadence, currency and URLs. Use for \"","description":"List the campaigns of the creator account with name, summary, patron count, pledge cadence, currency and URLs. Use for \"What Patreon campaigns do I run and how many patrons do they have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"fields_campaign":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,summary,creation_name,patron_count,is_monthly,currency,pledge_url,url,published_at,created_at,is_nsfw","description":"Comma-separated campaign attributes to return. Only attributes listed here come back.","title":"Fields Campaign"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many campaigns per page (default 20).","title":"Count"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the meta.pagination.cursors.next value of the previous answer (leave empty for the first page).","title":"Cursor"}},"title":"list_my_campaignsArguments","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_campaign":{"post":{"operationId":"get_campaign","summary":"Get one campaign with its name, summary, patron count, pledge cadence, currency and URLs. Use for \"Show Patreon campaign","description":"Get one campaign with its name, summary, patron count, pledge cadence, currency and URLs. Use for \"Show Patreon campaign 1234567\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign_id":{"description":"Patreon campaign ID (from list_my_campaigns), a number such as '1234567'.","maxLength":20,"title":"Campaign Id","type":"string"},"fields_campaign":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"name,summary,creation_name,patron_count,is_monthly,currency,pledge_url,url,published_at,created_at,is_nsfw","description":"Comma-separated campaign attributes to return. Only attributes listed here come back.","title":"Fields Campaign"}},"required":["campaign_id"],"title":"get_campaignArguments","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_campaign_members":{"post":{"operationId":"list_campaign_members","summary":"List the members (patrons and followers) of a campaign with status, current pledge amount in cents, lifetime support, la","description":"List the members (patrons and followers) of a campaign with status, current pledge amount in cents, lifetime support, last and next charge. Up to 1000 per page. Member email needs the matching scope and is not requested by default. Use for \"Who are my active Patreon patrons and what do they pay\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign_id":{"description":"Patreon campaign ID (from list_my_campaigns), a number such as '1234567'.","maxLength":20,"title":"Campaign Id","type":"string"},"fields_member":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"full_name,patron_status,currently_entitled_amount_cents,lifetime_support_cents,last_charge_date,last_charge_status,next_charge_date,pledge_relationship_start,is_follower,is_free_trial,is_gifted","description":"Comma-separated member attributes to return. Only attributes listed here come back.","title":"Fields Member"},"count":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many members per page (default 20, at most 1000).","title":"Count"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the meta.pagination.cursors.next value of the previous answer (leave empty for the first page).","title":"Cursor"}},"required":["campaign_id"],"title":"list_campaign_membersArguments","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_member":{"post":{"operationId":"get_member","summary":"Get one member by member id (the member UUID, not the user id) with status, pledge amount and charge dates. Use for \"Sho","description":"Get one member by member id (the member UUID, not the user id) with status, pledge amount and charge dates. Use for \"Show Patreon member 03ca69a6-0000-0000-0000-000000000000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"member_id":{"description":"Member id: the UUID returned as id by list_campaign_members.","maxLength":60,"title":"Member Id","type":"string"},"fields_member":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"full_name,patron_status,currently_entitled_amount_cents,lifetime_support_cents,last_charge_date,last_charge_status,next_charge_date,pledge_relationship_start,is_follower,is_free_trial,is_gifted","description":"Comma-separated member attributes to return. Only attributes listed here come back.","title":"Fields Member"}},"required":["member_id"],"title":"get_memberArguments","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_campaign_posts":{"post":{"operationId":"list_campaign_posts","summary":"List a campaign's posts with title, content, public and paid flags, publish time and URL. Use for \"What have I posted on","description":"List a campaign's posts with title, content, public and paid flags, publish time and URL. Use for \"What have I posted on Patreon recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign_id":{"description":"Patreon campaign ID (from list_my_campaigns), a number such as '1234567'.","maxLength":20,"title":"Campaign Id","type":"string"},"fields_post":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"title,content,is_paid,is_public,published_at,url","description":"Comma-separated post attributes to return. Only attributes listed here come back.","title":"Fields Post"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many posts per page (default 20).","title":"Count"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the meta.pagination.cursors.next value of the previous answer (leave empty for the first page).","title":"Cursor"}},"required":["campaign_id"],"title":"list_campaign_postsArguments","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_post":{"post":{"operationId":"get_post","summary":"Get one post by id with title, content, public and paid flags, publish time and URL. Use for \"Show Patreon post 12345678","description":"Get one post by id with title, content, public and paid flags, publish time and URL. Use for \"Show Patreon post 12345678\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"post_id":{"description":"Patreon post ID from list_campaign_posts, for example '12345678'.","maxLength":20,"title":"Post Id","type":"string"},"fields_post":{"anyOf":[{"maxLength":600,"type":"string"},{"type":"null"}],"default":"title,content,is_paid,is_public,published_at,url","description":"Comma-separated post attributes to return. Only attributes listed here come back.","title":"Fields Post"}},"required":["post_id"],"title":"get_postArguments","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}}}}