{"openapi":"3.1.0","info":{"title":"Bundle Social (BYOK) API","version":"0.1.0","description":"Bundle Social (BYOK) lets an AI assistant read your own Bundle Social data through the Bundle Social API with a key you supply (bundle.social API key). Read-only: 10 tools (get_health, get_organization, get_posts_usage, get_comments_usage, get_uploads_usage, get_credit_balance, list_teams, list_posts, list_comments, list_uploads). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-bundle-social.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-bundle-social/docs"},"termsOfService":"https://connectorbay.com/byok-bundle-social/terms"},"servers":[{"url":"https://byok-bundle-social.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-bundle-social/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_health":{"post":{"operationId":"get_health","summary":"Check that bundle.social is up and see the operational status of every supported social platform (Facebook, Instagram, T","description":"Check that bundle.social is up and see the operational status of every supported social platform (Facebook, Instagram, TikTok, YouTube, X and more). Use for \"Is any social platform down in bundle.social right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_healthArguments","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":{"post":{"operationId":"get_organization","summary":"Get your organization: name, daily post and comment limits per platform, analytics settings and whether the account is s","description":"Get your organization: name, daily post and comment limits per platform, analytics settings and whether the account is suspended. Use for \"What are the posting limits of my bundle.social organization\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_organizationArguments","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_posts_usage":{"post":{"operationId":"get_posts_usage","summary":"Get how many posts the organization has used against its plan limit this billing period. Use for \"How many posts have I ","description":"Get how many posts the organization has used against its plan limit this billing period. Use for \"How many posts have I used this month in bundle.social\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_posts_usageArguments","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_comments_usage":{"post":{"operationId":"get_comments_usage","summary":"Get how many comments the organization has used against its plan limit this billing period. Use for \"How many comments h","description":"Get how many comments the organization has used against its plan limit this billing period. Use for \"How many comments have I used this month in bundle.social\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_comments_usageArguments","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_uploads_usage":{"post":{"operationId":"get_uploads_usage","summary":"Get how much upload capacity the organization has used against its plan limit this billing period. Use for \"How much upl","description":"Get how much upload capacity the organization has used against its plan limit this billing period. Use for \"How much upload capacity have I used in bundle.social\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_uploads_usageArguments","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_credit_balance":{"post":{"operationId":"get_credit_balance","summary":"Get the prepaid credit balance (settled, held and available, in cents) that metered X actions draw from. Use for \"What i","description":"Get the prepaid credit balance (settled, held and available, in cents) that metered X actions draw from. Use for \"What is my bundle.social credit balance\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_credit_balanceArguments","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_teams":{"post":{"operationId":"list_teams","summary":"List the teams of the organization (the containers for social accounts, posts and uploads) with their ids. Use for \"Whic","description":"List the teams of the organization (the containers for social accounts, posts and uploads) with their ids. Use for \"Which teams do I have in bundle.social\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (default 0).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Maximum items to return (default 10).","title":"Limit"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only teams whose name contains this text.","title":"Search"}},"title":"list_teamsArguments","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_posts":{"post":{"operationId":"list_posts","summary":"List the posts of a team by status (draft, scheduled, posted, error), platform or date range with title, planned and act","description":"List the posts of a team by status (draft, scheduled, posted, error), platform or date range with title, planned and actual post date, error and retry count. Use for \"What posts are scheduled for team team_1abc in bundle.social\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Team id from list_teams.","maxLength":60,"title":"Team Id","type":"string"},"status":{"anyOf":[{"enum":["DRAFT","SCHEDULED","POSTED","ERROR","DELETED","PROCESSING","REVIEW","RETRYING"],"type":"string"},{"type":"null"}],"default":null,"description":"Only posts with this status.","title":"Status"},"order_by":{"anyOf":[{"enum":["createdAt","updatedAt","postDate","postedDate","deletedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"},"order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"ASC or DESC.","title":"Order"},"q":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text in the post.","title":"Q"},"post_date_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only posts planned at or after this ISO 8601 date/time.","title":"Post Date From"},"post_date_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only posts planned at or before this ISO 8601 date/time.","title":"Post Date To"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (default 0).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Maximum items to return (default 10).","title":"Limit"}},"required":["team_id"],"title":"list_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/list_comments":{"post":{"operationId":"list_comments","summary":"List the comments your team scheduled or posted through bundle.social with status, dates and errors. Use for \"Which of o","description":"List the comments your team scheduled or posted through bundle.social with status, dates and errors. Use for \"Which of our scheduled comments failed in bundle.social\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Team id from list_teams.","maxLength":60,"title":"Team Id","type":"string"},"post_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only comments on this post id.","title":"Post Id"},"status":{"anyOf":[{"enum":["DRAFT","SCHEDULED","POSTED","ERROR","DELETED","PROCESSING","RETRYING"],"type":"string"},{"type":"null"}],"default":null,"description":"Only comments with this status.","title":"Status"},"order_by":{"anyOf":[{"enum":["createdAt","updatedAt","deletedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"},"order":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"ASC or DESC.","title":"Order"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (default 0).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Maximum items to return (default 10).","title":"Limit"}},"required":["team_id"],"title":"list_commentsArguments","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_uploads":{"post":{"operationId":"list_uploads","summary":"List the media files (images, videos, documents) in a team's library, newest first, with type, size, dimensions and used","description":"List the media files (images, videos, documents) in a team's library, newest first, with type, size, dimensions and used or unused status. Use for \"What media files does team team_1abc have in bundle.social\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Team id from list_teams.","title":"Team Id"},"type":{"anyOf":[{"enum":["image","video","document"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this media type.","title":"Type"},"status":{"anyOf":[{"enum":["USED","UNUSED"],"type":"string"},{"type":"null"}],"default":null,"description":"Only used or unused files.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum files (default 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Files to skip.","title":"Offset"}},"title":"list_uploadsArguments","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}}}}