{"openapi":"3.1.0","info":{"title":"Adjust (BYOK) API","version":"0.1.0","description":"Adjust (BYOK) lets an AI assistant read your own Adjust data through the Adjust API with a key you supply (Adjust API token). Read-only: 7 tools (get_report, get_campaign_performance, get_daily_install_trend, get_country_breakdown, get_channel_cost_report, list_events, list_filter_values). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-adjust.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-adjust/docs"},"termsOfService":"https://connectorbay.com/byok-adjust/terms"},"servers":[{"url":"https://byok-adjust.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-adjust/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_report":{"post":{"operationId":"get_report","summary":"Run an Adjust report: choose dimensions (app, network, campaign, country_code, day and more) and metrics (installs, clic","description":"Run an Adjust report: choose dimensions (app, network, campaign, country_code, day and more) and metrics (installs, clicks, impressions, cost and more) for a period. Returns rows and totals. Use for \"How many installs did each campaign bring last week in Adjust\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dimensions":{"description":"Comma-separated dimensions to group by, for example app,network,campaign.","maxLength":200,"title":"Dimensions","type":"string"},"metrics":{"description":"Comma-separated metrics, at least one, for example installs,clicks,cost.","maxLength":200,"title":"Metrics","type":"string"},"date_period":{"description":"Report period: a logical date (today, yesterday, this_week, last_week, this_month, last_month), absolute dates like 2026-09-01:2026-09-30, or relative dates like -10d:-3d.","maxLength":200,"title":"Date Period","type":"string"},"app_token__in":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated Adjust app tokens to include (see list_filter_values with required_filters=apps).","title":"App Token  In"},"os_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated OS names to include, for example ios,android.","title":"Os Names"},"attribution_source":{"anyOf":[{"enum":["first","dynamic"],"type":"string"},{"type":"null"}],"default":null,"description":"Assign activity to the first install source (first) or split by reattribution (dynamic, default).","title":"Attribution Source"},"ad_spend_mode":{"anyOf":[{"enum":["adjust","network","mixed"],"type":"string"},{"type":"null"}],"default":null,"description":"Ad spend source: adjust, network or mixed.","title":"Ad Spend Mode"},"cohort_maturity":{"anyOf":[{"enum":["immature","mature"],"type":"string"},{"type":"null"}],"default":null,"description":"immature shows current cohort values, mature zeroes immature cohorts.","title":"Cohort Maturity"},"campaign__contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only rows whose campaign contains this text (case-insensitive).","title":"Campaign  Contains"},"sandbox":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to use sandbox data instead of production.","title":"Sandbox"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Currency for money metrics, for example USD.","title":"Currency"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated fields to sort by; a leading minus sorts descending, for example -installs.","title":"Sort"},"utc_offset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Time zone of the report as an offset, for example +01:00.","title":"Utc Offset"}},"required":["dimensions","metrics","date_period"],"title":"get_reportArguments","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_performance":{"post":{"operationId":"get_campaign_performance","summary":"Installs, clicks, impressions and cost per network and campaign for a period (defaults to last week). Use for \"Which Adj","description":"Installs, clicks, impressions and cost per network and campaign for a period (defaults to last week). Use for \"Which Adjust campaigns performed best last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_period":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"last_week","description":"Report period: a logical date (today, yesterday, this_week, last_week, this_month, last_month), absolute dates like 2026-09-01:2026-09-30, or relative dates like -10d:-3d.","title":"Date Period"},"dimensions":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"network,campaign","description":"Comma-separated dimensions to group by (default network,campaign).","title":"Dimensions"},"metrics":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"installs,clicks,impressions,cost","description":"Comma-separated metrics to return (default installs,clicks,impressions,cost).","title":"Metrics"},"app_token__in":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated Adjust app tokens to include (see list_filter_values with required_filters=apps).","title":"App Token  In"},"os_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated OS names to include, for example ios,android.","title":"Os Names"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Currency for money metrics, for example USD.","title":"Currency"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated fields to sort by; a leading minus sorts descending, for example -installs.","title":"Sort"},"utc_offset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Time zone of the report as an offset, for example +01:00.","title":"Utc Offset"}},"title":"get_campaign_performanceArguments","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_daily_install_trend":{"post":{"operationId":"get_daily_install_trend","summary":"Installs and clicks per day for a period, to see the trend (defaults to the last 14 days). Use for \"What is the daily in","description":"Installs and clicks per day for a period, to see the trend (defaults to the last 14 days). Use for \"What is the daily install trend in Adjust\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_period":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"-14d:-1d","description":"Report period: a logical date (today, yesterday, this_week, last_week, this_month, last_month), absolute dates like 2026-09-01:2026-09-30, or relative dates like -10d:-3d.","title":"Date Period"},"dimensions":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"day","description":"Comma-separated dimensions to group by (default day).","title":"Dimensions"},"metrics":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"installs,clicks","description":"Comma-separated metrics to return (default installs,clicks).","title":"Metrics"},"app_token__in":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated Adjust app tokens to include (see list_filter_values with required_filters=apps).","title":"App Token  In"},"os_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated OS names to include, for example ios,android.","title":"Os Names"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Currency for money metrics, for example USD.","title":"Currency"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated fields to sort by; a leading minus sorts descending, for example -installs.","title":"Sort"},"utc_offset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Time zone of the report as an offset, for example +01:00.","title":"Utc Offset"}},"title":"get_daily_install_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_country_breakdown":{"post":{"operationId":"get_country_breakdown","summary":"Installs and clicks per country code for a period (defaults to last month). Use for \"Which countries bring the most Adju","description":"Installs and clicks per country code for a period (defaults to last month). Use for \"Which countries bring the most Adjust installs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_period":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"last_month","description":"Report period: a logical date (today, yesterday, this_week, last_week, this_month, last_month), absolute dates like 2026-09-01:2026-09-30, or relative dates like -10d:-3d.","title":"Date Period"},"dimensions":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"country_code","description":"Comma-separated dimensions to group by (default country_code).","title":"Dimensions"},"metrics":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"installs,clicks","description":"Comma-separated metrics to return (default installs,clicks).","title":"Metrics"},"app_token__in":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated Adjust app tokens to include (see list_filter_values with required_filters=apps).","title":"App Token  In"},"os_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated OS names to include, for example ios,android.","title":"Os Names"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Currency for money metrics, for example USD.","title":"Currency"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated fields to sort by; a leading minus sorts descending, for example -installs.","title":"Sort"},"utc_offset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Time zone of the report as an offset, for example +01:00.","title":"Utc Offset"}},"title":"get_country_breakdownArguments","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_channel_cost_report":{"post":{"operationId":"get_channel_cost_report","summary":"Installs and cost per channel (partner and network) for a period (defaults to last month). Use for \"How much did each ch","description":"Installs and cost per channel (partner and network) for a period (defaults to last month). Use for \"How much did each channel cost in Adjust last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_period":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"last_month","description":"Report period: a logical date (today, yesterday, this_week, last_week, this_month, last_month), absolute dates like 2026-09-01:2026-09-30, or relative dates like -10d:-3d.","title":"Date Period"},"dimensions":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"channel","description":"Comma-separated dimensions to group by (default channel).","title":"Dimensions"},"metrics":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"installs,cost","description":"Comma-separated metrics to return (default installs,cost).","title":"Metrics"},"app_token__in":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated Adjust app tokens to include (see list_filter_values with required_filters=apps).","title":"App Token  In"},"os_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated OS names to include, for example ios,android.","title":"Os Names"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Currency for money metrics, for example USD.","title":"Currency"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated fields to sort by; a leading minus sorts descending, for example -installs.","title":"Sort"},"utc_offset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Time zone of the report as an offset, for example +01:00.","title":"Utc Offset"}},"title":"get_channel_cost_reportArguments","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_events":{"post":{"operationId":"list_events","summary":"List the in-app events defined in Adjust with slug, name, section, app tokens and event tokens. Use for \"Which events ar","description":"List the in-app events defined in Adjust with slug, name, section, app tokens and event tokens. Use for \"Which events are tracked in Adjust\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"events__contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Exact match on the event key or partial match on its value.","title":"Events  Contains"},"app_token__in":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated Adjust app tokens to include (see list_filter_values with required_filters=apps).","title":"App Token  In"},"tokens_mapping":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to add the mapping of event tokens to app tokens.","title":"Tokens Mapping"}},"title":"list_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/list_filter_values":{"post":{"operationId":"list_filter_values","summary":"List the values that report filters accept (apps, networks, partners, countries, currencies, dimensions, platforms and m","description":"List the values that report filters accept (apps, networks, partners, countries, currencies, dimensions, platforms and more) with ids and names. Use for \"Which apps and networks can I filter Adjust reports by\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"required_filters":{"description":"Comma-separated filter groups to return, for example apps,networks,countries.","maxLength":200,"title":"Required Filters","type":"string"}},"required":["required_filters"],"title":"list_filter_valuesArguments","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}}}}