Skip to main content
Glama

PixelFlow

List triggers

list_triggers
Read-onlyIdempotent

List every conversion trigger on one site, including integrations such as Stripe. Each trigger has its type, the event it sends, its page URL, selector, value and data extraction. It also shows when the trigger last sent an event and whether that send succeeded. Use it to check what is tracked, or to find a trigger_id before changing a trigger or an integration.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "site_id": "<site_id>"
    },
    "name": "list_triggers"
  }
}

Input Schema

NameRequiredDescriptionDefault
site_idYesSite to act on, as returned by list_sites.
timezoneNoIANA time zone such as Europe/Berlin. Default UTC. Returned times and day buckets use it.

Output Schema

NameRequiredDescriptionDefault
timezoneYesIANA time zone used for times. UTC when none was passed.
triggersYesEvery trigger on the site: saved triggers newest first, then system triggers.
checked_fromYesStart of the period checked for each trigger's last event, which runs to now.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • addedOutput schema / properties / triggers / items / properties / created_at / anyOf
      Added value: +[
      +  {
      +    "format": "date-time",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / triggers / items / properties / created_at / format
      Removed value: -"date-time"
    • removedOutput schema / properties / triggers / items / properties / created_at / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • removedOutput schema / properties / triggers / items / properties / data_extraction / additionalProperties
      Removed value: -true
    • addedOutput schema / properties / triggers / items / properties / data_extraction / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / triggers / items / properties / data_extraction / type
      Removed value: -[
      -  "object",
      -  "null"
      -]
    • addedOutput schema / properties / triggers / items / properties / last_event_at / anyOf
      Added value: +[
      +  {
      +    "format": "date-time",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / triggers / items / properties / last_event_at / format
      Removed value: -"date-time"
    • removedOutput schema / properties / triggers / items / properties / last_event_at / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / triggers / items / properties / last_event_sent / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / triggers / items / properties / last_event_sent / type
      Removed value: -[
      -  "boolean",
      -  "null"
      -]
    • addedOutput schema / properties / triggers / items / properties / selector / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / triggers / items / properties / selector / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • removedOutput schema / properties / triggers / items / properties / text_match / additionalProperties
      Removed value: -true
    • addedOutput schema / properties / triggers / items / properties / text_match / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / triggers / items / properties / text_match / type
      Removed value: -[
      -  "object",
      -  "null"
      -]
    • addedOutput schema / properties / triggers / items / properties / url / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / triggers / items / properties / url / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / triggers / items / properties / value / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / triggers / items / properties / value / type
      Removed value: -[
      -  "number",
      -  "null"
      -]
  2. Changed7 schema fields changed
    • removedInput schema / properties / from
      Removed value: -{
      -  "description": "Range start. YYYY-MM-DD is the start of that calendar day in timezone. A full ISO instant is that instant",
      -  "type": "string"
      -}
    • removedInput schema / properties / site
      Removed value: -{
      -  "description": "Domain, id, or external id from list_sites",
      -  "type": "string"
      -}
    • addedInput schema / properties / site_id
      Added value: +{
      +  "description": "Site to act on, as returned by list_sites.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone. Omitted means UTC, and the response says UTC"New value: +"IANA time zone such as Europe/Berlin. Default UTC. Returned times and day buckets use it."
    • removedInput schema / properties / to
      Removed value: -{
      -  "description": "Range end. YYYY-MM-DD is the end of that calendar day in timezone, so later events that day are included. A full ISO instant is that instant",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "site",
      -  "from",
      -  "to"
      -]New value: +[
      +  "site_id"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "checked_from": {
      +      "description": "Start of the period checked for each trigger's last event, which runs to now.",
      +      "format": "date-time",
      +      "type": "string"
      +    },
      +    "timezone": {
      +      "description": "IANA time zone used for times. UTC when none was passed.",
      +      "type": "string"
      +    },
      +    "triggers": {
      +      "description": "Every trigger on the site: saved triggers newest first, then system triggers.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "created_at": {
      +            "description": "When the trigger was created. null on system triggers.",
      +            "format": "date-time",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "data_extraction": {
      +            "additionalProperties": true,
      +            "description": "Where customer data, value, and product data are read on the page; the shape create_trigger takes.",
      +            "type": [
      +              "object",
      +              "null"
      +            ]
      +          },
      +          "event": {
      +            "description": "Event the trigger sends, such as Lead.",
      +            "type": "string"
      +          },
      +          "last_event_at": {
      +            "description": "Latest event from this trigger since checked_from. null when there was none.",
      +            "format": "date-time",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "last_event_sent": {
      +            "description": "Whether that latest event was sent to the ad platforms successfully. null when there was no event.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "selector": {
      +            "description": "Element selector.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "text_match": {
      +            "additionalProperties": true,
      +            "description": "Text filter on the element.",
      +            "type": [
      +              "object",
      +              "null"
      +            ]
      +          },
      +          "trigger_id": {
      +            "description": "Id of the trigger. update_trigger and delete_trigger take it for url, click, and submit. update_integration and disconnect_integration take it as integration_id for an integration. A system trigger cannot be changed.",
      +            "type": "integer"
      +          },
      +          "type": {
      +            "description": "url: fires when a page loads. click: fires when an element is clicked. submit: fires when a form is submitted. system: built into the site platform. Otherwise an integration name, such as stripe or calendly.",
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "Page address, query removed.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "value": {
      +            "description": "Fixed value.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "trigger_id",
      +          "type",
      +          "event",
      +          "url",
      +          "selector",
      +          "text_match",
      +          "value",
      +          "data_extraction",
      +          "created_at",
      +          "last_event_at",
      +          "last_event_sent"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "timezone",
      +    "checked_from",
      +    "triggers"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / from / description
      Previous value: -"Fire-stat range start, ISO date"New value: +"Range start. YYYY-MM-DD is the start of that calendar day in timezone. A full ISO instant is that instant"
    • changedInput schema / properties / to / description
      Previous value: -"Fire-stat range end, ISO date"New value: +"Range end. YYYY-MM-DD is the end of that calendar day in timezone, so later events that day are included. A full ISO instant is that instant"
  4. First observed

TDQS

A3.9/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 genuine value beyond them: it enumerates what each returned trigger contains and notes the last-send timestamp and success flag, which tells the agent this is a diagnostic view rather than a bare ID list.

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?

Front-loaded with the core action in the first clause, and every sentence carries information. The middle sentence listing trigger fields is somewhat redundant against the output schema, but the piece as a whole is tight and well ordered.

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 an output schema for return shape, full annotation coverage, and 100% schema description coverage, the description is complete enough to call correctly. The only meaningful gap is that it never tells the agent how large result sets behave or how timezone affects the returned times.

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%, so both site_id and timezone are documented in the schema itself, including the IANA format and default. The description only implies site scoping ('on one site') and never mentions the timezone argument or how it affects returned timestamps, so it adds little beyond the schema. Baseline 3 applies.

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 with scope: 'List every conversion trigger on one site, including integrations such as Stripe.' It distinguishes itself from mutation siblings implicitly by framing the result as input for 'changing a trigger or an integration,' though it never names update_trigger or delete_trigger directly.

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

Usage Guidelines4/5

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

'Use it to check what is tracked, or to find a trigger_id before changing a trigger or an integration' gives two concrete use cases and gestures at the downstream tools. It lacks any when-not guidance (e.g., use list_events for raw event history), so routing is guided but not fully closed.

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.