Skip to main content
Glama

Track a target

track

Use when a creator, hashtag, keyword, sound or Advertiser should be watched daily, with Change Reports. Not for filing into a Collection: add_to_collection (also starts a Tracker for a new target). Price: Per cycle, first on create: creator 6, hashtag 3, keyword 3, sound 6, advertiser 30 credits; +20 credits per new video or Ad analysed; focus +3 credits per video judged, +1 credit per must_mention rejection. Re-tracking: free, same Tracker. kind=keyword takes the phrase; TikTok Advertiser (kind=advertiser, platform tiktok): EU/EEA, CH, UK and Turkey. refresh=true + tracker_id: a cycle now.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "track"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindNo
focusNokind=creator, hashtag, sound or keyword: which Videos are relevant to you, as search_videos' focus. Off-focus Videos are hidden from get_tracker, not removed.
targetNoCreator: handle or profile URL (tiktok, instagram, facebook); hashtag: the tag ('#' optional); keyword: the search phrase; sound: the TikTok sound id or tiktok.com/music/ URL; advertiser: Facebook Page id or URL (meta or no platform), with platform tiktok or platform google its library id, URL or name
refreshNo
estimateNoQuote the price in Credits: no Run, no charge
platformNo
collectionNoAlso put the Tracker in this Collection, by id or name, e.g. 'Competitors'; a new name creates it with this target's kind.
tracker_idNo
max_creditsNo
intelligenceNo
idempotency_keyNoReuse on a retry: replays the original Run, not charged again

Output Schema

NameRequiredDescriptionDefault
runNoThe first cycle, run on create.
cachedNo
createdNoFalse when you already tracked this target: the existing Tracker, and nothing charged.
trackerNo
coverageNo`library_regions_only` when a TikTok advertiser's first cycle found no Ads in the library (with `coverage_note`).
per_cycleNo
focus_noteNoBeside `focus_applied`: how to set the Focus on this Tracker.
tracker_idNo
collectionsNoEvery Collection the Tracker is now in.
change_reportNoThe first cycle's report, null when quiet or not `created`.
coverage_noteNoThe regions the TikTok ad library covers, beside `coverage`.
focus_appliedNoOnly when `created` is false and `focus` differs from the Tracker's.
already_trackingNo
estimate_creditsNo
intelligence_runNoAdvertiser Trackers with `intelligence.
collection_errorsNoOnly when a Collection in `collection_ids` was deleted while the first cycle ran.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / platform / enum
      Previous value: -[
      -  "tiktok",
      -  "instagram",
      -  "youtube",
      -  "facebook"
      -]New value: +[
      +  "tiktok",
      +  "instagram",
      +  "youtube",
      +  "facebook",
      +  "meta",
      +  "google"
      +]
    • changedInput schema / properties / target / description
      Previous value: -"Creator: handle or profile URL (tiktok, instagram, facebook); hashtag: the tag ('#' optional); keyword: the search phrase; sound: the TikTok sound id or tiktok.com/music/ URL; advertiser: the Facebook Page id or Page URL (platform meta or omitted), or with platform tiktok the ad library advertiser id, library.tiktok.com URL or name"New value: +"Creator: handle or profile URL (tiktok, instagram, facebook); hashtag: the tag ('#' optional); keyword: the search phrase; sound: the TikTok sound id or tiktok.com/music/ URL; advertiser: Facebook Page id or URL (meta or no platform), with platform tiktok or platform google its library id, URL or name"
  2. Changed9 schema fields changed
    • changedInput schema / properties / collection / description
      Previous value: -"Also put the Tracker in this Collection, by id or name, e.g. 'Competitors'. A name you have not used yet creates the Collection, with this target's kind."New value: +"Also put the Tracker in this Collection, by id or name, e.g. 'Competitors'; a new name creates it with this target's kind."
    • changedInput schema / properties / estimate / description
      Previous value: -"Return the price, in Credits, without running the operation or creating a Run"New value: +"Quote the price in Credits: no Run, no charge"
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Reuse the same key when retrying: a repeat returns the original Run and is not charged again"New value: +"Reuse on a retry: replays the original Run, not charged again"
    • changedInput schema / properties / target / description
      Previous value: -"Creator handle or profile URL (tiktok, instagram, facebook); for kind=hashtag the tag (with or without '#'); for kind=keyword the search phrase; for kind=sound the TikTok sound id or its tiktok.com/music/ URL; for kind=advertiser the Facebook Page id or Page URL (platform meta or omitted), or with platform tiktok the TikTok ad library advertiser id, its library.tiktok.com URL or its name"New value: +"Creator: handle or profile URL (tiktok, instagram, facebook); hashtag: the tag ('#' optional); keyword: the search phrase; sound: the TikTok sound id or tiktok.com/music/ URL; advertiser: the Facebook Page id or Page URL (platform meta or omitted), or with platform tiktok the ad library advertiser id, library.tiktok.com URL or name"
    • changedOutput schema / properties / change_report / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "$ref": "#/properties/tracker"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  {
      -    "anyOf": [
      -      {
      -        "$ref": "#/properties/tracker"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/properties/tracker"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / intelligence_run / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "not": {}
      -      },
      -      {
      -        "anyOf": [
      -          {
      -            "$ref": "#/properties/tracker"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    ]
      -  },
      -  {
      -    "anyOf": [
      -      {
      -        "$ref": "#/properties/tracker"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/properties/tracker"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / run / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "$ref": "#/properties/tracker"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  {
      -    "$ref": "#/properties/tracker"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/properties/tracker"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / tracker / additionalProperties
      Previous value: -trueNew value: +{}
    • removedOutput schema / properties / tracker / properties
      Removed value: -{}
  3. Changed2 schema fields changed
    • changedInput schema / properties / focus / description
      Previous value: -"kind=creator, hashtag, sound or keyword: which Videos are relevant to you, in plain language with any exclusions, e.g. 'Apple Inc. and its products (iPhone, Mac, AirPods). Not the fruit, recipes or orchards.' Optional must_mention terms rule out cheaply a Video whose captions or transcript name none of them (one with neither goes to the model). Off-focus Videos are hidden from get_tracker, not removed."New value: +"kind=creator, hashtag, sound or keyword: which Videos are relevant to you, as search_videos' focus. Off-focus Videos are hidden from get_tracker, not removed."
    • addedInput schema / properties / max_credits
      Added value: +{
      +  "minimum": 0,
      +  "type": "integer"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "already_tracking": {
      +      "type": "boolean"
      +    },
      +    "cached": {
      +      "type": "boolean"
      +    },
      +    "change_report": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "$ref": "#/properties/tracker"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        {
      +          "anyOf": [
      +            {
      +              "$ref": "#/properties/tracker"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      ],
      +      "description": "The first cycle's report, null when quiet or not `created`."
      +    },
      +    "collection_errors": {
      +      "description": "Only when a Collection in `collection_ids` was deleted while the first cycle ran.",
      +      "items": {
      +        "$ref": "#/properties/tracker"
      +      },
      +      "type": "array"
      +    },
      +    "collections": {
      +      "description": "Every Collection the Tracker is now in.",
      +      "items": {
      +        "$ref": "#/properties/tracker"
      +      },
      +      "type": "array"
      +    },
      +    "coverage": {
      +      "description": "`library_regions_only` when a TikTok advertiser's first cycle found no Ads in the library (with `coverage_note`).",
      +      "enum": [
      +        "library_regions_only",
      +        "partial"
      +      ],
      +      "type": "string"
      +    },
      +    "coverage_note": {
      +      "description": "The regions the TikTok ad library covers, beside `coverage`.",
      +      "type": "string"
      +    },
      +    "created": {
      +      "description": "False when you already tracked this target: the existing Tracker, and nothing charged.",
      +      "type": "boolean"
      +    },
      +    "estimate_credits": {
      +      "type": "integer"
      +    },
      +    "focus_applied": {
      +      "const": false,
      +      "description": "Only when `created` is false and `focus` differs from the Tracker's.",
      +      "type": "boolean"
      +    },
      +    "focus_note": {
      +      "description": "Beside `focus_applied`: how to set the Focus on this Tracker.",
      +      "type": "string"
      +    },
      +    "intelligence_run": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "not": {}
      +            },
      +            {
      +              "anyOf": [
      +                {
      +                  "$ref": "#/properties/tracker"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          ]
      +        },
      +        {
      +          "anyOf": [
      +            {
      +              "$ref": "#/properties/tracker"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      ],
      +      "description": "Advertiser Trackers with `intelligence."
      +    },
      +    "per_cycle": {
      +      "type": "boolean"
      +    },
      +    "run": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "$ref": "#/properties/tracker"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        {
      +          "$ref": "#/properties/tracker"
      +        }
      +      ],
      +      "description": "The first cycle, run on create."
      +    },
      +    "tracker": {
      +      "additionalProperties": true,
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "tracker_id": {}
      +  },
      +  "type": "object"
      +}
  5. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare readOnly=false, openWorld=true, idempotent=false and destructive=false; the description goes well beyond that with per-kind credit pricing, per-video/per-ad surcharges, focus costs, free re-tracking, and the EU/EEA/CH/UK/Turkey geographic limit for TikTok advertisers. It does not explain the guardrail behaviour of max_credits or what intelligence=true changes, which are the remaining behavioural gaps.

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?

The most decision-relevant sentence (when to use, and the add_to_collection exclusion) is front-loaded, and the pricing/geography/refresh details follow in a compact telegraphic block. It is dense and slightly run-on, but essentially no sentence is wasted for a tool with this much pricing and eligibility nuance.

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 an 11-parameter, zero-required, open-world creation tool, the description supplies the cost model, geo-eligibility, re-tracking and refresh behaviour, and an output schema exists so return values need not be described. The main shortfall is that the credit-cap and intelligence toggles are left undocumented, which matters for an agent trying to bound spend.

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 45% across 11 parameters, so the description has to carry real weight and only partly does: it clarifies kind=keyword semantics, refresh+tracker_id coupling, and the advertiser/platform/region combination. Parameters such as max_credits, intelligence and platform (as a standalone selector) get no explanation in the description beyond what the schema shows.

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

Purpose5/5

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

The description opens with a specific verb and resource set: 'a creator, hashtag, keyword, sound or Advertiser should be watched daily, with Change Reports', which precisely mirrors the kind enum. It also names the sibling it is not (add_to_collection), so an agent can distinguish the two without opening either schema.

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

Usage Guidelines5/5

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

It gives an explicit when-to-use condition ('should be watched daily'), an explicit exclusion ('Not for filing into a Collection: add_to_collection'), and a routing rule for re-tracking ('free, same Tracker'). The 'refresh=true + tracker_id: a cycle now' line tells the agent how to force an immediate cycle versus creating a new Tracker.

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