Skip to main content
Glama

AdsAgent — Meta Ads MCP

mmp_insights_query_product_cohort

Read-only

Read cohorts; channel_pid required

Input Schema

NameRequiredDescriptionDefault
cursorNo
date_toYes
date_fromYes
event_keysNo
channel_pidYes
cohort_daysNo
product_refNo
product_nameNo

Output Schema

NameRequiredDescriptionDefault
messageNo
retryableNo
support_refNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / properties / connection_context
      Removed value: -{
      -  "pattern": "^mctx_v1_[0-9a-f]{64}$",
      -  "type": "string"
      -}
  2. Changed2 schema fields changed
    • addedInput schema / properties / cohort_days
      Added value: +{
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / cursor
      Added value: +{
      +  "type": "string"
      +}
  3. Changed6 schema fields changed
    • addedOutput schema / then / properties / category
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / then / properties / expected
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / then / properties / failure_kind
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / then / properties / responsibility_hint
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / then / properties / route
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / then / properties / user_visible
      Added value: +{
      +  "type": "boolean"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / connection_context
      Added value: +{
      +  "pattern": "^mctx_v1_[0-9a-f]{64}$",
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • addedOutput schema / $defs / sa
      Added value: +{
      +  "properties": {
      +    "can_report_stored_total": {
      +      "type": "boolean"
      +    },
      +    "reason": {
      +      "type": "string"
      +    },
      +    "zero_proven": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "can_report_stored_total",
      +    "zero_proven",
      +    "reason"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / else / properties / read_evidence
      Added value: +{
      +  "description": "Proofs apply independently to returned metrics and scope as stored/observed. A new read_ref is a call identifier, never a source watermark. False or missing proof means unknown, not zero. Fingerprints correlate requests/results in audits; they are not authorization or pagination tokens.",
      +  "properties": {
      +    "artifact_returned": {
      +      "type": "boolean"
      +    },
      +    "configuration": {
      +      "properties": {
      +        "account_inventory_enumerated": {
      +          "const": false
      +        },
      +        "all_campaigns_paused_proven": {
      +          "const": false
      +        },
      +        "requested_ids_complete": {
      +          "type": "boolean"
      +        },
      +        "scope": {
      +          "const": "requested_entity_ids_only"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "mmp": {
      +      "properties": {
      +        "can_report_scoped_totals": {
      +          "type": "boolean"
      +        },
      +        "provider_cache_max_age_seconds": {
      +          "const": 90
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "scope": {
      +          "const": "linked_apps_queried_channels_and_windows"
      +        },
      +        "source_observed_at": {
      +          "type": "null"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "read_ref": {
      +      "pattern": "^read_[0-9a-f]{32}$",
      +      "type": "string"
      +    },
      +    "request_fingerprint": {
      +      "type": "string"
      +    },
      +    "result_fingerprint": {
      +      "type": "string"
      +    },
      +    "scopes": {
      +      "items": {
      +        "properties": {
      +          "all_campaigns_paused_proven": {
      +            "const": false
      +          },
      +          "funnel": {
      +            "additionalProperties": {
      +              "$ref": "#/$defs/sa"
      +            },
      +            "maxProperties": 32,
      +            "type": "object"
      +          },
      +          "index": {
      +            "type": "integer"
      +          },
      +          "inventory_anchor": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "inventory_coverage": {
      +            "type": "string"
      +          },
      +          "inventory_source_observed_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "metrics": {
      +            "additionalProperties": {
      +              "$ref": "#/$defs/sa"
      +            },
      +            "type": "object"
      +          },
      +          "metrics_source_observed_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "range_complete": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "scope": {
      +            "const": "stored_query"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "maxItems": 10,
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "read_ref",
      +    "request_fingerprint",
      +    "result_fingerprint"
      +  ],
      +  "type": "object"
      +}
  6. First observed

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and closed-world scope, so the description adds nothing on safety. It stays silent on what cohort rows look like, how cursor paging behaves, or how cohort_days affects the output, which is exactly the context annotations can't give.

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

Conciseness3/5

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

Two clauses, zero waste, and the constraint is front-loaded after the verb. Brevity here is under-specification rather than efficiency, capping the score at adequate.

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

Completeness2/5

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

With 8 parameters, 0% schema descriptions, and an output schema present, the description does almost none of the work needed to call this correctly; cohort semantics and date/cohort_days interactions are entirely missing.

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

Parameters2/5

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

Schema coverage is 0% across 8 parameters, and the description only mentions channel_pid, which is already listed as required in the schema. date_from/date_to format, cohort_days meaning, event_keys, product_ref vs product_name, and cursor usage are all undocumented.

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

Purpose2/5

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

The text "Read cohorts" essentially restates the tool name (mmp_insights_query_product_cohort) without specifying what a "cohort" means here or how it differs from siblings like mmp_insights_query_product_event_summary. Only the bare read verb adds information.

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?

"channel_pid required" is a prerequisite, not usage guidance; there is no statement of when to pick this over the event-summary or today tools. The agent is left to infer selection context from the name alone.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources