Skip to main content
Glama

Estimate audience reach

soclo_ads_estimate_ad_reach
Read-onlyIdempotent

Soclo Ads: Estimate audience reach. Read only; no spend. Fields: soclo://tools/soclo_ads_estimate_ad_reach.

Input Schema

NameRequiredDescriptionDefault
confirmNoTrue only after owner approval of spending/deletion preview.
payloadYes
platformNo
accountIdYes
requestIdNoReuse this request ID for confirmation and outcome recovery.
parametersNo
adAccountIdNoAdvertiser/ad account selected from your Soclo connection.
expectedCurrencyNoApproved preview currency, e.g. GBP.
expectedBudgetTypeNoApproved preview budget type: daily or lifetime.
expectedBudgetAmountNoApproved preview amount; changes require a new preview.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed27 schema fields changed
    • addedInput schema / definitions
      Added value: +{
      +  "s1": {
      +    "properties": {
      +      "address": {
      +        "type": "string"
      +      },
      +      "distanceUnit": {
      +        "enum": [
      +          "mile",
      +          "kilometer"
      +        ],
      +        "type": "string"
      +      },
      +      "latitude": {
      +        "maximum": 90,
      +        "minimum": -90,
      +        "type": "number"
      +      },
      +      "longitude": {
      +        "maximum": 180,
      +        "minimum": -180,
      +        "type": "number"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "radius": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "latitude",
      +      "longitude",
      +      "radius",
      +      "distanceUnit"
      +    ],
      +    "type": "object"
      +  },
      +  "s2": {
      +    "enum": [
      +      "africa",
      +      "asia",
      +      "europe",
      +      "north_america",
      +      "south_america",
      +      "oceania",
      +      "central_america",
      +      "caribbean",
      +      "eea",
      +      "euro_area",
      +      "nafta",
      +      "mercosur",
      +      "afta",
      +      "apec",
      +      "gcc",
      +      "cisfta",
      +      "emerging_markets",
      +      "itunes_app_store",
      +      "android_free_store",
      +      "android_paid_store"
      +    ],
      +    "type": "string"
      +  },
      +  "s3": {
      +    "items": {
      +      "properties": {
      +        "key": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "key"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  }
      +}
    • removedInput schema / properties / accountId / description
      Removed value: -"The connected ad account in Soclo."
    • changedInput schema / properties / payload / properties / spec / properties / cities / items / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "properties": {
      -      "distanceUnit": {
      -        "description": "Required if radius is set.",
      -        "enum": [
      -          "mile",
      -          "kilometer"
      -        ],
      -        "type": "string"
      -      },
      -      "key": {
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "radius": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "key"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "properties": {
      +      "distanceUnit": {
      +        "enum": [
      +          "mile",
      +          "kilometer"
      +        ],
      +        "type": "string"
      +      },
      +      "key": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "radius": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "key"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / payload / properties / spec / properties / countries / description
      Removed value: -"ISO 3166-1 alpha-2 country codes (e.g. ['US'])."
    • addedInput schema / properties / payload / properties / spec / properties / countryGroups / items / $ref
      Added value: +"#/definitions/s2"
    • removedInput schema / properties / payload / properties / spec / properties / countryGroups / items / enum
      Removed value: -[
      -  "africa",
      -  "asia",
      -  "europe",
      -  "north_america",
      -  "south_america",
      -  "oceania",
      -  "central_america",
      -  "caribbean",
      -  "eea",
      -  "euro_area",
      -  "nafta",
      -  "mercosur",
      -  "afta",
      -  "apec",
      -  "gcc",
      -  "cisfta",
      -  "emerging_markets",
      -  "itunes_app_store",
      -  "android_free_store",
      -  "android_paid_store"
      -]
    • removedInput schema / properties / payload / properties / spec / properties / countryGroups / items / type
      Removed value: -"string"
    • addedInput schema / properties / payload / properties / spec / properties / customLocations / items / $ref
      Added value: +"#/definitions/s1"
    • removedInput schema / properties / payload / properties / spec / properties / customLocations / items / properties
      Removed value: -{
      -  "address": {
      -    "type": "string"
      -  },
      -  "distanceUnit": {
      -    "enum": [
      -      "mile",
      -      "kilometer"
      -    ],
      -    "type": "string"
      -  },
      -  "latitude": {
      -    "maximum": 90,
      -    "minimum": -90,
      -    "type": "number"
      -  },
      -  "longitude": {
      -    "maximum": 180,
      -    "minimum": -180,
      -    "type": "number"
      -  },
      -  "name": {
      -    "type": "string"
      -  },
      -  "radius": {
      -    "description": "Positive radius around the point.",
      -    "type": "number"
      -  }
      -}
    • removedInput schema / properties / payload / properties / spec / properties / customLocations / items / required
      Removed value: -[
      -  "latitude",
      -  "longitude",
      -  "radius",
      -  "distanceUnit"
      -]
    • removedInput schema / properties / payload / properties / spec / properties / customLocations / items / type
      Removed value: -"object"
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / cities / items / properties / distanceUnit / description
      Removed value: -"Required if radius is set."
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / cities / items / properties / radius / description
      Removed value: -"Radius around the excluded city. Requires distanceUnit."
    • addedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / countryGroups / items / $ref
      Added value: +"#/definitions/s2"
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / countryGroups / items / enum
      Removed value: -[
      -  "africa",
      -  "asia",
      -  "europe",
      -  "north_america",
      -  "south_america",
      -  "oceania",
      -  "central_america",
      -  "caribbean",
      -  "eea",
      -  "euro_area",
      -  "nafta",
      -  "mercosur",
      -  "afta",
      -  "apec",
      -  "gcc",
      -  "cisfta",
      -  "emerging_markets",
      -  "itunes_app_store",
      -  "android_free_store",
      -  "android_paid_store"
      -]
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / countryGroups / items / type
      Removed value: -"string"
    • addedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / customLocations / items / $ref
      Added value: +"#/definitions/s1"
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / customLocations / items / properties
      Removed value: -{
      -  "address": {
      -    "type": "string"
      -  },
      -  "distanceUnit": {
      -    "enum": [
      -      "mile",
      -      "kilometer"
      -    ],
      -    "type": "string"
      -  },
      -  "latitude": {
      -    "maximum": 90,
      -    "minimum": -90,
      -    "type": "number"
      -  },
      -  "longitude": {
      -    "maximum": 180,
      -    "minimum": -180,
      -    "type": "number"
      -  },
      -  "name": {
      -    "type": "string"
      -  },
      -  "radius": {
      -    "description": "Positive radius around the point.",
      -    "type": "number"
      -  }
      -}
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / customLocations / items / required
      Removed value: -[
      -  "latitude",
      -  "longitude",
      -  "radius",
      -  "distanceUnit"
      -]
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / customLocations / items / type
      Removed value: -"object"
    • addedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / regions / $ref
      Added value: +"#/definitions/s3"
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / regions / items
      Removed value: -{
      -  "properties": {
      -    "key": {
      -      "type": "string"
      -    },
      -    "name": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "key"
      -  ],
      -  "type": "object"
      -}
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / regions / type
      Removed value: -"array"
    • addedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / zips / $ref
      Added value: +"#/definitions/s3"
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / zips / items
      Removed value: -{
      -  "properties": {
      -    "key": {
      -      "type": "string"
      -    },
      -    "name": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "key"
      -  ],
      -  "type": "object"
      -}
    • removedInput schema / properties / payload / properties / spec / properties / excludedLocations / properties / zips / type
      Removed value: -"array"
    • removedInput schema / properties / platform / description
      Removed value: -"The campaign platform."
  2. First observed

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so 'Read only; no spend' largely restates structured data rather than adding to it. Nothing is said about whether the estimate is cached, how fresh the audience data is, or what the response contains. The 'Fields: soclo://tools/...' pointer is an internal reference with no behavioral meaning.

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?

The purpose is front-loaded in a short sentence, but the third sentence is an internal resource pointer that adds no decision-relevant information for an agent. Terse to the point of being under-specified rather than efficient.

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?

A read-only estimation tool with ten top-level parameters, a large nested targeting spec, and no output schema should at least sketch the shape of the result (e.g. reach range) and constraints on targeting combinations. Neither is present, so the agent cannot predict what it will get back or whether its spec is valid.

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?

At 60% schema description coverage over a deeply nested spec with ~30 targeting fields, the description supplies no parameter meaning at all. It never mentions the required accountId, the nested payload/spec structure, or how the many location and interest dimensions combine, leaving the largest usability gap in the definition.

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+resource ('Estimate audience reach') that an agent can map to ad audience sizing without opening the schema. It does not distinguish itself from nearby intake siblings such as soclo_ads_get_linked_in_supply_forecast or soclo_ads_create_rf_prediction, so it stops 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 Guidelines2/5

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

'Read only; no spend' hints this is a safe pre-flight check, but there is no explicit statement of when to call it (e.g. before creating an ad set) or which sibling to use instead for forecasts or predictions. The agent must infer the workflow position entirely.

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