Skip to main content
Glama
get-mcp-ads

Adjust MCP server

Adjust MCP server

Bring your Adjust reporting into your MCP client.

Read attribution and performance reports, event catalogs and period comparisons for explicitly selected apps.

Release CI License: Apache 2.0 Node

Watch the film · What's new · Install · Tool reference · Try hosted getmcpads

Watch the getmcpads film: every ad account in one conversation with your AI assistant

Play the 45-second film

The film shows hosted getmcpads with sample data. Its MCP Apps, from creative galleries and alerts to Google Sheets exports and bulk launches, belong to the hosted product. This repository provides the standalone native API tools.

5 read tools · 0 write tools. Read-only by design: no setting adds a write tool.

Run locally with your own Adjust API token and a client that supports stdio MCP, such as Claude Desktop, Claude Code or Cursor. Your requests go directly to the Adjust Report Service API. For managed connections, including supported ChatGPT setups, use the hosted option.

What's new

v1.0.0: First standalone release · October 23, 2026

  • First standalone release, synchronized with getmcpads gateway revision 3e1c2c8.

  • Five native read tools: adjust_list_apps, adjust_list_events, adjust_get_catalog, adjust_run_report and adjust_compare_periods, plus the adjust://guide resource.

  • Read-only by design. There is no write tool and no write setting.

  • Require ADJUST_API_TOKEN and an explicit ADJUST_APP_TOKENS allowlist, validated at startup. ADJUST_ENVIRONMENT fixes production or sandbox data for every report.

  • Send requests only to automate.adjust.com, refuse redirects, apply a 25 second timeout and a 20 MB response limit, and redact the API token from provider text.

  • Keep native totals, treat HTTP 200 error bodies as failures and mark truncated, warned or paginated reports partial.

  • Report configured app tokens that Adjust did not return, in unavailableAppTokens.

  • Require Node.js 22.23.4, 24.22.1, 26.12.1 or a newer release of those lines, warn on stderr otherwise, and check Node 22, 24 and 26 in CI.

  • Publish from version tags through release.yml: npm with provenance, the GitHub release, then the MCP Registry.

Full changelog · All releases

Source synchronization: SOURCE_SYNC.md.

Upgrade notes

This is the first release. It requires Node.js 22.23.4, 24.22.1, 26.12.1 or a newer release of those lines, and prints a warning on stderr when started on an older one. Hosted MCP Apps, exports and business reviews are outside this release.

Related MCP server: ga-gsc-analytics

Install this release

This is a GitHub source release. npm and MCP Registry versions are published separately. The commands below select this exact version; unpinned npx examples later in this document select the version currently available on npm.

git clone --branch v1.0.0 --depth 1 https://github.com/get-mcp-ads/adjust-mcp-server.git
cd adjust-mcp-server
npm ci
npm run build

Configure your MCP client to run node with the absolute path to dist/cli.js and the variables documented below.

{
  "mcpServers": {
    "adjust": {
      "command": "node",
      "args": ["/absolute/path/to/adjust-mcp-server/dist/cli.js"],
      "env": {
        "ADJUST_API_TOKEN": "your-adjust-api-token",
        "ADJUST_APP_TOKENS": "abc123def456,ghi789jkl012"
      }
    }
  }
}

Once the package is on npm, the same entry can use "command": "npx" with "args": ["-y", "@getmcpads/adjust-mcp-server"]. Run npm run doctor in the repository to check the configuration locally. It prints no secret and makes no network request.

Prefer a managed connection? Use Adjust with hosted getmcpads. Connect your account, select the data your assistant may access and use the hosted MCP connection. See the site for current features and plans.

Configuration

Provide these environment variables through the client's secret configuration:

Variable

Purpose

ADJUST_API_TOKEN

Required. The API token of your Adjust user. It is a bearer credential with that user's reporting access.

ADJUST_APP_TOKENS

Required. Comma-separated app tokens this server may read, up to 200. Every request is checked against this list, and app discovery returns only these apps.

ADJUST_ENVIRONMENT

production (default) or sandbox. Fixed for every report; a tool call cannot change it.

Adjust shows the API token in your profile's account settings. See Adjust's authentication guide. The server checks the configuration at startup and exits with a message that names the variable to fix. That message never contains a token value. After setup, call adjust_list_apps. Its unavailableAppTokens field lists configured app tokens that Adjust did not return for this API token. This package accepts a token from the environment. It runs no OAuth flow and writes nothing to disk. When you rotate the token, update the client configuration and restart the server.

Safety and coverage

Read-only by design. Every request is an HTTP GET to the Report Service. There is no write tool and no environment variable that adds one. The app allowlist is checked before any request is sent. App discovery is filtered to the allowlist, and a report that contains a row from another app is withheld. Requests go only to automate.adjust.com, the host Adjust documents for the Report Service. Redirects are refused and never followed. Each request has a 25 second timeout and a 20 MB response limit. An HTTP 200 response that carries an error body is treated as a failed request and returns no data. A read makes at most three attempts on HTTP 429, 502, 503 and 504, honoring a short Retry-After. A longer delay is returned as retryAfterSeconds instead of waiting. Adjust documents a limit of 50 requests per second per source IP address, with a burst allowance of 100.

Reports keep Adjust's native totals. They are never rebuilt from breakdown rows. A missing value is null, not zero, and ratios such as ROAS stay native fractions. Truncated rows, provider warnings, duplicate breakdown rows and unexpected pagination metadata mark a report partial. The API token is never returned or logged, and it is removed from provider text before that text reaches the model. Event definitions keep only the requested app: other apps' identifiers and SDK event tokens are removed. The Report Service returns aggregated data. This server has no tool for user-level or device-level data.

Coverage is the Report Service JSON report, the app inventory from filters data and the event catalog. CSV, Parquet and pivot report formats are not exposed. Use tools/list or server-card.json for exact schemas and the Report Service API reference for provider details.

Official Adjust MCP server

Adjust offers its own MCP server. The facts below come from Adjust's help center article, read on October 23, 2026.

Adjust MCP

This server

Availability

Early Access, added to your Adjust package on request

Open source under Apache 2.0

Connection

Remote endpoint https://mcp.adjust.com/mcpo

Local process over stdio

Authentication

OAuth in supported clients

Adjust API token in an environment variable

Data

Aggregated data only

Aggregated Report Service data only

This server reads only the apps listed in ADJUST_APP_TOKENS, within the access of the Adjust user who owns the API token.

Hosted option

getmcpads for Adjust manages the hosted connection and app selection. Hosted and source releases can differ. Contact: hello@getmcpads.com.

Development

npm run typecheck
npm run lint
npm run build
npm test
npm run catalog

All tests run offline with synthetic responses. No live Adjust account is contacted.

Tools

Every tool is listed below. See server-card.json for complete parameter and output schemas.

Tool

Purpose

adjust_list_apps

List the allowlisted apps the API token can read, with native currency, configured operating systems and any configured token Adjust did not return

adjust_list_events

Discover event slugs, activity-count metric IDs and app-specific event tokens for one app

adjust_get_catalog

Read the 35 documented dimensions, 12 example metrics and the event metrics of one app

adjust_run_report

Run an attribution and performance report for one app, with native totals, warnings and measurement settings

adjust_compare_periods

Compare two equal-length periods for one app with identical settings, using native totals

There are no write tools.

Resource

Resource

Purpose

adjust://guide

Tool order, app scope, measurement settings, rate limits and documentation link

License

Apache License 2.0. See NOTICE.

More from getmcpads

Meta Ads · Google Ads · Google Analytics 4 · Google Search Console · TikTok Ads · Pinterest Ads · X Ads

Maintained by Emmanuel at getmcpads. Questions: hello@getmcpads.com.

Available Tools

5 tools
adjust_compare_periodsadjust compare periodsA
Read-onlyIdempotent

Compare two equal-length periods for one allowlisted Adjust application with identical metrics, filters, OS and measurement settings. Defaults to the immediately preceding period. Changes use native totals, never sums of breakdowns. Unavailable or partial values have no calculated change; cohort maturity and reporting delays still apply.

NameRequiredDescriptionDefault
limitNoDisplay row limit only; truncation is explicit and native totals are preserved.
endDateYesLast date of the reporting period, in YYYY-MM-DD format, on or after startDate.
filtersNoFilters combined according to this tool's query schema. Use provider field names and the declared operators.
metricsNoNative or documented calculated metric names to request. Check compatibility with the selected dimensions.
osNamesNoOperating system filter, for example ios or android. Keep os_name in dimensions to compare platforms.
appTokenYesExact Adjust application token from ADJUST_APP_TOKENS. Applications are separate from advertising accounts.
currencyNoExplicit ISO currency for money metrics. Keep the same currency across comparisons.
startDateYesFirst date of the reporting period, in YYYY-MM-DD format.
utcOffsetNoFixed UTC offset; +00:00 by default. Split local-date comparisons if the offset changes during the period.+00:00
comparisonNoOptional equal-length comparison period; otherwise use the immediately preceding period.
dimensionsNoNative reporting dimensions. Validate compatibility with the selected metrics.
adSpendModeNoNative source of ad spend. Keep the same mode across comparisons and avoid counting overlapping spend twice.network
reattributedNoInclude all users, reattributed users only, or users without reattribution.all
cohortMaturityNoInclude current cohort values or use mature-only mode, which may zero immature cohorts.immature
iapRevenueModeNoIn-app revenue percentage. Retain the same setting across comparisons.GROSS_100
attributionTypesNoOptional engagement filter. Omit for an unfiltered report including native organic data. Empty types in output means no engagement filter.
attributionSourceNoAssign activity to the first install source or the native dynamic reattribution source.dynamic

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: changes derive from native totals rather than sums of breakdowns, unavailable or partial values produce no calculated change, and cohort maturity and reporting delays still apply to results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, front-loaded with the core operation and scope before the caveats about native totals and partial values. No filler sentences, though the list of invariants is dense and could be skimmed past.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter read-only analytics tool with full schema coverage and an output schema, the description covers the operation, the default comparison window, and the key caveats about totals and partial data. The only meaningful omission is an explicit pointer to adjust_run_report for non-comparison reporting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description contributes semantics the schema does not encode: periods must be equal length and both sides must share identical metrics, filters, OS and measurement settings. Those cross-parameter constraints materially help correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: comparing two equal-length periods for one Adjust application with identical metrics, filters, OS and measurement settings. It doesn't name adjust_run_report as the non-comparison alternative, so the boundary against the closest sibling is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes the comparison behavior (defaults to the immediately preceding period) and the requirement that both periods use identical metrics/filters/settings, which implies when this tool is appropriate. However, it never explicitly says when to use this instead of adjust_run_report, so the routing decision is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adjust_get_catalogadjust get catalogA
Read-onlyIdempotent

Read documented standard Adjust dimensions and example metrics, plus event metrics scoped to one allowlisted application. Metrics and spend/revenue access remain subject to Adjust permissions; the standard metric list is not exhaustive.

NameRequiredDescriptionDefault
appTokenYesExact Adjust application token from ADJUST_APP_TOKENS. Applications are separate from advertising accounts.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the bar is low, and the description still adds real context: results are permission-gated by Adjust, scoping is limited to an allowlisted application, and the metric list is partial rather than complete. That tells the agent to treat the output as an incomplete, entitlement-dependent catalog rather than a definitive one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded with the catalog scope before the permission and completeness caveats. Slightly dense phrasing ('documented standard', 'example metrics') costs a little clarity but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description covers scope, entitlement limits, and incompleteness. The remaining gap is the relationship to the report tools, which the description never states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter at 100% schema coverage, so the schema already carries the semantics ('Exact Adjust application token from ADJUST_APP_TOKENS'). The description only restates the scoping ('one allowlisted application') without adding format, fallback, or error behavior, which matches the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Read') and resource (standard Adjust dimensions and example metrics, plus event metrics for one application), so the catalog/discovery nature is clear. It does not explicitly differentiate itself from adjust_list_events, which is adjacent in scope, leaving a small ambiguity about what 'event metrics' means here versus that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is a discovery call that precedes adjust_run_report or adjust_compare_periods, but no sentence says when to call it or when to prefer a sibling. The 'not exhaustive' caveat hints at follow-up behavior without giving direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adjust_list_appsadjust list appsA
Read-onlyIdempotent

List the Adjust applications in ADJUST_APP_TOKENS that this API token can read, with native currency and configured operating systems. Applications outside the allowlist are never returned.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuinely new behavior: results are scoped to the ADJUST_APP_TOKENS allowlist and applications outside it are never returned, which tells the agent it may get a subset rather than all apps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero waste that front-loads the resource and follows with the scoping and allowlist clause. Nothing is repeated verbatim from the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't explain return fields, and it still notes native currency and configured operating systems. For a zero-parameter read tool this is close to complete, with only the lack of guidance relative to the sibling list/catalog tools as a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is complete, so there is nothing for the description to compensate for. Baseline of 4 applies; the description correctly avoids inventing filtering options that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the Adjust applications') and scopes it precisely to what the token can read plus the allowlist constraint. It does not name a sibling, but 'applications' is inherently distinct from the events/catalog/report siblings, so an agent can select it without confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: it's the enumeration call for apps an agent already knows about. There is no explicit when-to-use versus adjust_list_events or adjust_get_catalog, and no stated preconditions or exclusions beyond the allowlist filter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adjust_list_eventsadjust list eventsA
Read-onlyIdempotent

Discover native event base slugs, ordinary activity-count metric IDs and app-specific event tokens for one allowlisted Adjust app. Use activityMetric for counts; the event base slug alone is not a report metric. Keep SKAdNetwork and aggregate revenue definitions separate.

NameRequiredDescriptionDefault
searchNoFilter native event definitions by a short search term.
appTokenYesExact Adjust application token from ADJUST_APP_TOKENS. Applications are separate from advertising accounts.

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered and the description only needs to add context. It does so by disclosing that results are scoped to one allowlisted app and that three distinct identifier namespaces exist (base slugs, activityMetric IDs, event tokens) whose definitions must not be mixed. It says nothing about pagination or result volume, but with an output schema present that is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler, and the core capability is front-loaded before the caveats. The middle clauses are dense ('ordinary activity-count metric IDs and app-specific event tokens') but every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with full schema coverage, complete annotations and an output schema, the description supplies the domain context an agent actually needs: what kinds of identifiers come back and which one feeds counts. The only real gap is ordering or result-size expectations, which is modest given the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both appToken and search documented in the schema itself, so the baseline of 3 applies. The description reinforces the app scoping ('for one allowlisted Adjust app') but never mentions the search filter or how matching behaves. It adds nothing the schema does not already carry for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb plus a precise scope: 'Discover native event base slugs, ordinary activity-count metric IDs and app-specific event tokens for one allowlisted Adjust app.' That is far more specific than the name alone, which only says 'list events.' It does not explicitly name a sibling, though the line about the event base slug not being a report metric implicitly routes the agent away from adjust_run_report, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Guidance is present but is about field interpretation rather than tool selection: 'Use activityMetric for counts; the event base slug alone is not a report metric' and 'Keep SKAdNetwork and aggregate revenue definitions separate.' These are genuinely useful caveats about what identifier to carry downstream, but there is no explicit statement of when to call this instead of adjust_run_report or adjust_get_catalog, or of prerequisites such as needing a token from ADJUST_APP_TOKENS first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adjust_run_reportadjust run reportA
Read-onlyIdempotent

Read an attribution/performance report for one allowlisted Adjust app. Preserves native totals, warnings, attribution options, currency and UTC offset. Missing metrics are null; ratios are native fractions. A truncated or partial result is not a complete extraction.

NameRequiredDescriptionDefault
limitNoDisplay row limit only; truncation is explicit and native totals are preserved.
endDateYesLast date of the reporting period, in YYYY-MM-DD format, on or after startDate.
filtersNoFilters combined according to this tool's query schema. Use provider field names and the declared operators.
metricsNoNative or documented calculated metric names to request. Check compatibility with the selected dimensions.
osNamesNoOperating system filter, for example ios or android. Keep os_name in dimensions to compare platforms.
appTokenYesExact Adjust application token from ADJUST_APP_TOKENS. Applications are separate from advertising accounts.
currencyNoExplicit ISO currency for money metrics. Keep the same currency across comparisons.
startDateYesFirst date of the reporting period, in YYYY-MM-DD format.
utcOffsetNoFixed UTC offset; +00:00 by default. Split local-date comparisons if the offset changes during the period.+00:00
dimensionsNoNative reporting dimensions. Validate compatibility with the selected metrics.
adSpendModeNoNative source of ad spend. Keep the same mode across comparisons and avoid counting overlapping spend twice.network
reattributedNoInclude all users, reattributed users only, or users without reattribution.all
cohortMaturityNoInclude current cohort values or use mature-only mode, which may zero immature cohorts.immature
iapRevenueModeNoIn-app revenue percentage. Retain the same setting across comparisons.GROSS_100
attributionTypesNoOptional engagement filter. Omit for an unfiltered report including native organic data. Empty types in output means no engagement filter.
attributionSourceNoAssign activity to the first install source or the native dynamic reattribution source.dynamic

Output Schema

NameRequiredDescription
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), so the description does not need to. It goes further by disclosing result semantics that matter operationally: native totals and warnings are preserved, missing metrics are null rather than zero, ratios are native fractions, and truncation is explicit so a partial result must not be treated as a complete extraction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences with the core purpose front-loaded and no filler. A couple of the sentences (null handling, native fractions) read as output-contract statements that partly duplicate what an output schema would express, but they are not wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full schema, rich annotations and an output schema present, the description covers the genuinely risky behaviors an agent needs: truncation, nulls, ratio units, and consistent settings across comparisons. The remaining gap is routing guidance against adjust_compare_periods, which no structured field supplies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter already carries a description, including limit-vs-truncation, filter operators, and dimension/metric compatibility, so the schema does the heavy lifting. The description only reinforces the currency/UTC-offset and attribution-option defaults; it adds little parameter-specific meaning beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read an attribution/performance report" names a specific verb and resource, and "for one allowlisted Adjust app" fixes the scope to a single app token. It never distinguishes itself from the closest sibling, adjust_compare_periods, which is the tool an agent most plausibly confuses it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage cue is the implicit scope (one allowlisted app), with no statement of when to choose this over adjust_compare_periods or the catalog/listing siblings. No exclusions, no preconditions such as app-token allowlisting or dimension/metric compatibility are stated in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedadjust_compare_periods
    • First observedadjust_get_catalog
    • First observedadjust_list_apps
    • First observedadjust_list_events
    • First observedadjust_run_report

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation4/5

Most tools target clearly different operations: listing apps, discovering events, reading a catalog, running a report, and comparing periods. The main overlap is between adjust_list_events and adjust_get_catalog, since both expose event metric information for one app, though their descriptions distinguish discovery tokens from catalog definitions.

Naming Consistency5/5

All tool names consistently use the adjust_ prefix followed by a clear verb_noun pattern: list_apps, list_events, get_catalog, run_report, compare_periods. The convention is predictable throughout.

Tool Count5/5

Five tools is well-scoped for a focused Adjust reporting server. Each tool supports a distinct stage of the analytics workflow without obvious redundancy.

Completeness4/5

The surface covers the core read-only analytics lifecycle: discovering apps, events, metrics/dimensions, running reports, and comparing periods. Minor gaps may exist around other Adjust resources or specialized report modes, but agents can accomplish the main workflows.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only access to Google Analytics 4 reporting data, including traffic overview, top pages, traffic sources, and conversion events, supporting custom report queries via MCP.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only access to Google Analytics 4 and Google Search Console data, allowing users to run reports, query search analytics, and generate combined snapshots for reporting.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI clients to read Google Ads account data through reporting tools for campaigns, ad groups, keywords, and raw GAQL queries, with no write or mutate capabilities.
    7
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only access to Addepar portfolio and ownership data for financial reporting, with transparent provenance caveats and compliance-oriented audit logging.
    -