Skip to main content
Glama

Get campaigns

campaignstack_get_campaigns
Read-onlyIdempotent

Read campaigns and optional campaign planning details in one stable collection envelope. Use this when the user needs campaign identity, ICP, personas, roadmap, topics, weights, metrics, automations, job history, guidance history, ICP match scores, or the topic vocabulary (include.topicVocabulary, the ids a campaign topic can be set to). Pass include.personas.ids or include.roadmap.ids to target one specific persona or phase directly instead of scanning the capped list, and include.icpScores.icpId to read match scores for one ICP. Omit ids to list matching records, pass one id for one record, or pass several ids for several records. The response still uses the same collection envelope. Use include only for extra details the user asked for. Large, computed, historical, or external includes must use their documented caps and must report when data is truncated or paginated. This read-only tool does not change data. Instead use campaignstack_get_workspaces for workspace-level setup, and campaignstack_get_identities for sender accounts or voice. The result returns items, pagination, missingIds when requested ids are unavailable, and warnings for capped includes.

Input Schema

NameRequiredDescriptionDefault
idsNoOptional entity ids to fetch, capped at 50.
limitNoMaximum items to return, capped at 50.
cursorNoOpaque pagination cursor.
filtersNo
includeNo

Output Schema

NameRequiredDescriptionDefault
itemsNo
warningsNo
missingIdsNo
paginationNo
topicVocabularyNoPresent when include.topicVocabulary was requested.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / include / properties / metrics / description
      Previous value: -"Campaign metric rows."New value: +"Daily campaign metric rows, newest first. Each row counts people, campaign to date, as of the end of its UTC date: totalLeads (in the campaign), leadsContacted (sent a connection request, message or email by this campaign), leadsResponded (contacted people who replied on the account the campaign wrote from), leadsConverted (contacted people who booked a meeting afterwards), leadsAdded (in the campaign and not contacted yet), leadsFailed (a workflow step failed for them), avgMatchScore (mean ICP match). The newest row holds the current totals; rows dated before 2026-10-09 may still carry older workflow-step counts."
  2. Changed4 schema fields changed
    • changedInput schema / properties / filters / properties / workspaceId / description
      Previous value: -"Workspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach."New value: +"Workspace ID. Omit it when this connection reaches one workspace: a workspace key (cs_) is bound to its own, and a user key (csu_) or connected app whose person belongs to exactly one workspace defaults to that one. Required only when the person belongs to several; the error then lists them, and campaignstack_whoami reports them too."
    • addedInput schema / properties / include / properties / topicVocabulary
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The topic taxonomy a campaign can focus on: every topicId, exact name and category the topic operation of campaignstack_edit_campaign accepts. Returned once at the top level as topicVocabulary, even when no campaign matches. Filter with category.",
      +  "properties": {
      +    "category": {
      +      "description": "Only topics in this taxonomy category.",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "limit": {
      +      "default": 100,
      +      "description": "Capped at 100.",
      +      "maximum": 100,
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedInput schema / properties / include / properties / topics / description
      Previous value: -"Campaign topic weights."New value: +"Campaign topic weights, plus the topics the workspace's search watches are active on."
    • addedOutput schema / properties / topicVocabulary
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Present when include.topicVocabulary was requested.",
      +  "properties": {
      +    "categories": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "topics": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "category": {
      +            "type": "string"
      +          },
      +          "displayName": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "topicId": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "topicId",
      +          "name",
      +          "displayName",
      +          "category"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "totalCount": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "topics",
      +    "totalCount",
      +    "categories"
      +  ],
      +  "type": "object"
      +}
  3. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the sentence 'This read-only tool does not change data' mostly restates structured data. Beyond that, the description adds real behavioral context: large/computed/historical includes must respect caps and report truncation or pagination, and the response surfaces missingIds and warnings. It does not discuss auth requirements, but the coverage added on top of annotations is solid.

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?

Purpose is front-loaded and most sentences carry distinct information (targeting, ids semantics, include discipline, alternatives, envelope guarantees). It is dense and slightly repetitive about the 'collection envelope' and re-states the read-only nature, which keeps it from a 5.

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

Completeness5/5

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

For a zero-required-parameter read tool with a rich nested include schema and an output schema, the description covers what an agent needs: when to call it, how to target specific entities, how ids behave, cap/truncation expectations, and the sibling tools for adjacent data. Return-value detail is appropriately delegated to the output schema.

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?

With 60% schema description coverage, the description compensates meaningfully: it explains the include.personas.ids and include.roadmap.ids targeting trick (bypassing list caps and scanning), include.icpScores.icpId for per-ICP match scores, and that topicVocabulary returns the ids a campaign topic may be set to. It reinforces rather than repeats the schema on ids/limit semantics.

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?

States a specific verb and resource ('Read campaigns and optional campaign planning details') and enumerates exactly which related records can be hydrated (ICP, personas, roadmap, topics, weights, metrics, job history, guidance history, scores, vocabulary). It also distinguishes itself from campaignstack_get_workspaces and campaignstack_get_identities, so an agent can route without opening the 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?

Gives explicit selection rules: 'Omit ids to list matching records, pass one id for one record, or pass several ids for several records', and 'Use include only for extra details the user asked for'. It names the alternatives ('Instead use campaignstack_get_workspaces for workspace-level setup, and campaignstack_get_identities for sender accounts or voice'), leaving little to inference.

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