{"openapi":"3.1.0","info":{"title":"Growi (BYOK) API","version":"0.1.0","description":"Growi (BYOK) lets an AI assistant read your own Growi data through the Growi API with a key you supply (Growi API key (Settings, Developer tab)). Read-only: 12 tools (list_brands, list_campaigns, get_content_snapshots, get_content_platform_mix, get_content_24h_trend, get_shop_gmv_24h, get_affiliate_summary, get_weekly_summary, get_creator_activity, get_sales_channel_mix,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-growi.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-growi/docs"},"termsOfService":"https://connectorbay.com/byok-growi/terms"},"servers":[{"url":"https://byok-growi.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-growi/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_brands":{"post":{"operationId":"list_brands","summary":"List the brands of the organization (id and name). Use for \"Which brands do I have in Growi\".","description":"List the brands of the organization (id and name). Use for \"Which brands do I have in Growi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_brandsArguments","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_campaigns":{"post":{"operationId":"list_campaigns","summary":"List the campaigns with id, name, type (Campaign, Contract, Ambassador Program) and status. Use for \"Which Growi campaig","description":"List the campaigns with id, name, type (Campaign, Contract, Ambassador Program) and status. Use for \"Which Growi campaigns are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_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_content_snapshots":{"post":{"operationId":"get_content_snapshots","summary":"Get the daily totals of views, likes, comments, shares, saves and posts of tracked creator content for a date range, opt","description":"Get the daily totals of views, likes, comments, shares, saves and posts of tracked creator content for a date range, optionally for one campaign. Use for \"How did my Growi creator content perform each day last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day, MM/DD/YYYY (for example 10/01/2026).","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day, MM/DD/YYYY (for example 10/31/2026).","maxLength":10,"title":"End Date","type":"string"},"limit":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum rows (default 4, recommended 20).","title":"Limit"},"campaign_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this campaign id (from list_campaigns).","title":"Campaign Id"}},"required":["start_date","end_date"],"title":"get_content_snapshotsArguments","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_content_platform_mix":{"post":{"operationId":"get_content_platform_mix","summary":"Get how many posts of the tracked creator content are on each platform (TikTok, Instagram, X, YouTube) for a date range.","description":"Get how many posts of the tracked creator content are on each platform (TikTok, Instagram, X, YouTube) for a date range. Use for \"Which platforms does my Growi creator content come from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day, MM/DD/YYYY (for example 10/01/2026).","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day, MM/DD/YYYY (for example 10/31/2026).","maxLength":10,"title":"End Date","type":"string"},"limit":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum rows (default 4, recommended 20).","title":"Limit"}},"required":["start_date","end_date"],"title":"get_content_platform_mixArguments","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_content_24h_trend":{"post":{"operationId":"get_content_24h_trend","summary":"Get daily views, likes and other 24 hour engagement of tracked content against the same day a week earlier. Use for \"Are","description":"Get daily views, likes and other 24 hour engagement of tracked content against the same day a week earlier. Use for \"Are my Growi creator views up or down against last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day, MM/DD/YYYY (for example 10/01/2026).","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day, MM/DD/YYYY (for example 10/31/2026).","maxLength":10,"title":"End Date","type":"string"},"limit":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum rows (default 4, recommended 20).","title":"Limit"}},"required":["start_date","end_date"],"title":"get_content_24h_trendArguments","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_shop_gmv_24h":{"post":{"operationId":"get_shop_gmv_24h","summary":"Get daily TikTok Shop gross merchandise value and order counts against the same day a week earlier. Use for \"How is my T","description":"Get daily TikTok Shop gross merchandise value and order counts against the same day a week earlier. Use for \"How is my TikTok Shop GMV trending in Growi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day, MM/DD/YYYY (for example 10/01/2026).","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day, MM/DD/YYYY (for example 10/31/2026).","maxLength":10,"title":"End Date","type":"string"}},"required":["start_date","end_date"],"title":"get_shop_gmv_24hArguments","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_affiliate_summary":{"post":{"operationId":"get_affiliate_summary","summary":"Get the TikTok Shop affiliate totals for a date range: gross GMV, commission (base, estimated, actual), orders, items so","description":"Get the TikTok Shop affiliate totals for a date range: gross GMV, commission (base, estimated, actual), orders, items sold, number of creators and returns. Use for \"How much affiliate GMV and commission did my shop make this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day, YYYY-MM-DD (UTC, inclusive).","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day, YYYY-MM-DD (UTC, inclusive; pass today to include today).","maxLength":10,"title":"End Date","type":"string"},"scope":{"anyOf":[{"enum":["all","growi"],"type":"string"},{"type":"null"}],"default":"all","description":"all affiliate orders (default) or growi (only collaborations created through Growi).","title":"Scope"},"organization_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for this child organization id (agencies with several organizations).","title":"Organization Id"}},"required":["start_date","end_date"],"title":"get_affiliate_summaryArguments","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_weekly_summary":{"post":{"operationId":"get_weekly_summary","summary":"Compare one week with the week before: affiliate GMV, orders, units, commission, active and new creators, samples and co","description":"Compare one week with the week before: affiliate GMV, orders, units, commission, active and new creators, samples and content posted. Use for \"How did my TikTok Shop affiliate program do this week against last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"week_start":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Monday of the week, YYYY-MM-DD (default: the latest week).","title":"Week Start"},"organization_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for this child organization id (agencies with several organizations).","title":"Organization Id"}},"title":"get_weekly_summaryArguments","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_creator_activity":{"post":{"operationId":"get_creator_activity","summary":"Get how many TikTok Shop affiliate creators were active, new, returning, retained and churned per week or month with the","description":"Get how many TikTok Shop affiliate creators were active, new, returning, retained and churned per week or month with their GMV and orders. Use for \"How many creators did I gain and lose per week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day, YYYY-MM-DD (UTC, inclusive).","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day, YYYY-MM-DD (UTC, inclusive; pass today to include today).","maxLength":10,"title":"End Date","type":"string"},"granularity":{"anyOf":[{"enum":["week","month"],"type":"string"},{"type":"null"}],"default":"week","description":"Period size: week (default) or month.","title":"Granularity"},"organization_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for this child organization id (agencies with several organizations).","title":"Organization Id"}},"required":["start_date","end_date"],"title":"get_creator_activityArguments","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_sales_channel_mix":{"post":{"operationId":"get_sales_channel_mix","summary":"Break the TikTok Shop GMV down by sales channel (seller video, LIVE, product card, affiliate video and LIVE) with orders","description":"Break the TikTok Shop GMV down by sales channel (seller video, LIVE, product card, affiliate video and LIVE) with orders, impressions and clicks. Use for \"Which sales channels bring my TikTok Shop GMV\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day, YYYY-MM-DD (UTC, inclusive).","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day, YYYY-MM-DD (UTC, inclusive; pass today to include today).","maxLength":10,"title":"End Date","type":"string"},"currency":{"anyOf":[{"enum":["USD","LOCAL"],"type":"string"},{"type":"null"}],"default":null,"description":"USD or LOCAL (shop currency).","title":"Currency"},"max_pages":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"Pages of orders to read (default 5).","title":"Max Pages"},"organization_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for this child organization id (agencies with several organizations).","title":"Organization Id"}},"required":["start_date","end_date"],"title":"get_sales_channel_mixArguments","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_shop_performance_score":{"post":{"operationId":"get_shop_performance_score","summary":"Get the TikTok Shop Performance Score: overall score, tier, peer percentile, scores per dimension, unlocked benefits and","description":"Get the TikTok Shop Performance Score: overall score, tier, peer percentile, scores per dimension, unlocked benefits and top issues. Use for \"How healthy is my TikTok Shop\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"locale":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Language of the labels, for example en.","title":"Locale"},"organization_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for this child organization id (agencies with several organizations).","title":"Organization Id"}},"title":"get_shop_performance_scoreArguments","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_connection_health":{"post":{"operationId":"get_connection_health","summary":"Check whether the TikTok Shop is connected to Growi and its data is syncing: status (ok, degraded, broken), reasons and ","description":"Check whether the TikTok Shop is connected to Growi and its data is syncing: status (ok, degraded, broken), reasons and token expiry times. Use for \"Is my TikTok Shop still connected to Growi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for this child organization id (agencies with several organizations).","title":"Organization Id"}},"title":"get_connection_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}}}}