Skip to main content
Glama

Add a CTA

ctas_create

[writes flayr data · write scope] Adds a call to action written by the person, claims-checked, optionally tagged as a goal (goalKey; isPrimary makes it the brand's primary goal and demotes the previous one). Nothing here creates or runs an ad. Free. Needs the Pro plan or higher. (Wraps POST /api/v2/hook-studio/ctas.)

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": {
      "card": "<card>",
      "line": "<line>",
      "destination": "<destination>",
      "platforms": "<platforms>"
    },
    "name": "ctas_create"
  }
}

Input Schema

NameRequiredDescriptionDefault
cardYes
lineYes
statusNo
brandIdNoA brand id from GET /api/v2/brands. Required for an account-wide key; a brand-bound key may omit it.
goalKeyNoThe goal this CTA serves, a short slug such as `tech-checkup`.
offerIdNo
adButtonNoThe ad button. Default: the ads config default CTA.
isPrimaryNoThe brand's primary goal. Setting it demotes the previous primary.
platformsYes
destinationYesAn https link, or "bio" for the link in bio.
paidEligibleNoAds may use this CTA. Default: true for a primary, false otherwise.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, destructive=false, idempotent=false), the description discloses the write scope, that it writes flayr data and is claims-checked, that setting isPrimary demotes the previous primary, that it is free, and that it requires the Pro plan. It also names the underlying endpoint (POST /api/v2/hook-studio/ctas), giving an agent concrete grounding for the write.

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?

Dense but front-loaded: the action comes first, then constraints, then the endpoint wrapper. The bracketed scope/plan metadata is compact and earns its place, though the parenthetical about goalKey/isPrimary duplicates schema text and could be dropped.

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

Completeness3/5

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

For an 11-parameter mutation with no output schema and only 55% schema coverage, the description covers prerequisites, side effects on primary goals, and scope, but leaves the meaning of card, line, platforms, and status unexplained and says nothing about what a successful call returns (e.g., the new CTA identifier). Adequate, not complete.

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 55%, and the description largely restates what the schema already documents for goalKey and isPrimary (including the demotion behavior that is already in the isPrimary description). Several undocumented parameters — card, line, status, offerId, platforms — receive no explanation in the description, so the coverage gap is not compensated.

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 ('Adds a call to action') and qualifies it with 'written by the person, claims-checked, optionally tagged as a goal', which separates it from the AI-oriented sibling ctas_generate. The line 'Nothing here creates or runs an ad' explicitly fences it off from the ads_* family, so an agent can route correctly 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 Guidelines4/5

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

Gives clear when-to-use context: creating a human-authored CTA, optionally bound to a goal, and an explicit when-not ('Nothing here creates or runs an ad'), plus a hard prerequisite ('Needs the Pro plan or higher'). It does not name ctas_generate or ctas_update as the alternative paths, so routing among the CTA siblings still requires 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