{"openapi":"3.1.0","info":{"title":"Sprout Social (BYOK) API","version":"0.1.0","description":"Sprout Social (BYOK) lets an AI assistant read your own Sprout Social data through the Sprout Social API with a key you supply (Sprout Social API token). Read-only: 7 tools (list_customers, list_profiles, list_tags, list_groups, list_topics, get_profile_analytics, get_post_analytics). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sproutsocial.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sproutsocial/docs"},"termsOfService":"https://connectorbay.com/byok-sproutsocial/terms"},"servers":[{"url":"https://byok-sproutsocial.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sproutsocial/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_customers":{"post":{"operationId":"list_customers","summary":"List the Sprout customer IDs and names the token can access; the ID is needed by every other tool. Use for \"Which Sprout","description":"List the Sprout customer IDs and names the token can access; the ID is needed by every other tool. Use for \"Which Sprout Social customer accounts can I query\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_customersArguments","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_profiles":{"post":{"operationId":"list_profiles","summary":"List the connected social profiles (X, Facebook, Instagram, LinkedIn, TikTok and more) with network type, name, handle a","description":"List the connected social profiles (X, Facebook, Instagram, LinkedIn, TikTok and more) with network type, name, handle and group IDs. Use for \"Which social profiles are connected to my Sprout account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"description":"Sprout customer ID (a number), from list_customers.","minimum":1,"title":"Customer Id","type":"integer"}},"required":["customer_id"],"title":"list_profilesArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List the message tags (labels and campaigns) with active state and the groups they belong to. Use for \"Which campaign ta","description":"List the message tags (labels and campaigns) with active state and the groups they belong to. Use for \"Which campaign tags exist in Sprout\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"description":"Sprout customer ID (a number), from list_customers.","minimum":1,"title":"Customer Id","type":"integer"}},"required":["customer_id"],"title":"list_tagsArguments","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_groups":{"post":{"operationId":"list_groups","summary":"List the profile groups created in Sprout. Use for \"Which profile groups do we have in Sprout\".","description":"List the profile groups created in Sprout. Use for \"Which profile groups do we have in Sprout\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"description":"Sprout customer ID (a number), from list_customers.","minimum":1,"title":"Customer Id","type":"integer"}},"required":["customer_id"],"title":"list_groupsArguments","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_topics":{"post":{"operationId":"list_topics","summary":"List the Listening topics with type, description, group and themes. The documentation shows a bare list, so the answer i","description":"List the Listening topics with type, description, group and themes. The documentation shows a bare list, so the answer is passed through (capped). Use for \"Which Listening topics are set up in Sprout\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"description":"Sprout customer ID (a number), from list_customers.","minimum":1,"title":"Customer Id","type":"integer"}},"required":["customer_id"],"title":"list_topicsArguments","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_profile_analytics":{"post":{"operationId":"get_profile_analytics","summary":"Get daily profile metrics (for example impressions, reactions, net_follower_growth, lifetime_snapshot.followers_count) f","description":"Get daily profile metrics (for example impressions, reactions, net_follower_growth, lifetime_snapshot.followers_count) for up to 100 profiles over up to one year, 1000 rows per page. Use for \"How many impressions did profile 492 get in September 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"description":"Sprout customer ID (a number), from list_customers.","minimum":1,"title":"Customer Id","type":"integer"},"profile_filter":{"description":"Profile filter in Sprout's syntax: customer_profile_id.eq(ID1, ID2) with up to 100 profile IDs from list_profiles.","maxLength":700,"title":"Profile Filter","type":"string"},"date_filter":{"description":"Reporting period filter: reporting_period.in(YYYY-MM-DD...YYYY-MM-DD), at most one year.","maxLength":60,"title":"Date Filter","type":"string"},"metric_1":{"description":"First metric key, for example 'impressions'. Valid keys depend on the network (see the documentation's metrics tables).","maxLength":60,"title":"Metric 1","type":"string"},"metric_2":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Second metric key, for example 'reactions'.","title":"Metric 2"},"metric_3":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Third metric key, for example 'net_follower_growth'.","title":"Metric 3"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"1-based page number.","title":"Page"}},"required":["customer_id","profile_filter","date_filter","metric_1"],"title":"get_profile_analyticsArguments","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_analytics":{"post":{"operationId":"get_post_analytics","summary":"List sent posts with text, link, publication time and lifetime metrics (for example lifetime.impressions, lifetime.react","description":"List sent posts with text, link, publication time and lifetime metrics (for example lifetime.impressions, lifetime.reactions), 50 per page by default. Use for \"What were my best performing posts on profile 492 last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"description":"Sprout customer ID (a number), from list_customers.","minimum":1,"title":"Customer Id","type":"integer"},"profile_filter":{"description":"Profile filter in Sprout's syntax: customer_profile_id.eq(ID1, ID2) with up to 100 profile IDs from list_profiles.","maxLength":700,"title":"Profile Filter","type":"string"},"date_filter":{"description":"Created-time filter: created_time.in(YYYY-MM-DDThh:mm:ss..YYYY-MM-DDThh:mm:ss).","maxLength":80,"title":"Date Filter","type":"string"},"metric_1":{"description":"First post metric key, for example 'lifetime.impressions'.","maxLength":60,"title":"Metric 1","type":"string"},"metric_2":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Second post metric key, for example 'lifetime.reactions'.","title":"Metric 2"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"created_time:desc","description":"Sort as field:direction, for example 'created_time:desc'.","title":"Sort"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Posts per page (1 to 50, default 50).","title":"Limit"},"page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"1-based page number.","title":"Page"}},"required":["customer_id","profile_filter","date_filter","metric_1"],"title":"get_post_analyticsArguments","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}}}}