Skip to main content
Glama

SnapWidget

Save Campaign

save_campaign
Destructive

Creates an Instagram hashtag campaign, or changes one when campaign_id is given (then send only the fields to change). People join with the join link in the answer, and the campaign's widgets show their posts with the hashtag.

Input Schema

NameRequiredDescriptionDefault
nameNoThe campaign name, unique among the user's campaigns (a new campaign needs it).
hashtagNoThe hashtag of the posts to show, without #.
campaign_idNoThe campaign's id (the id in list_campaigns), to change a campaign. Not sent: a new campaign.
descriptionNoA short text for the join page (a new campaign needs it).
campaign_signup_colorNoThe color of the join page, for example #1f6feb.
campaign_signup_titleNoThe title of the join page.
campaign_signup_image_urlNoA link to the image of the join page.
campaign_signup_descriptionNoThe text of the join page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds genuine value by clarifying that updates are partial (only changed fields are sent) rather than wholesale replacement, and that the answer contains a join link. However, it says nothing about what happens on a name collision (the schema says names are unique), whether changes are reversible, or permission requirements — meaningful gaps for a destructive 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?

Two compact clauses front-load the create-or-update decision, then add the observable outcome (join link, widgets). Nothing is padded, though the phrasing 'changes one when campaign_id is given' is slightly clunky.

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 8-parameter upsert with no output schema, the description covers the mode switch, the partial-update rule, and what the caller receives (join link plus widget behavior). Remaining gaps — conflict handling on duplicate names and side effects of destructive changes — are secondary but real.

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 100%, so every parameter already documents itself, including the campaign_id 'not sent = new campaign' semantics and the name/description requirements. The description's mention of campaign_id duplicates the schema, so the baseline 3 applies with no compensating detail.

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 uses a specific verb and resource ('Creates an Instagram hashtag campaign, or changes one') and explicitly states the branch condition (campaign_id present = update). This makes the create/upsert duality unmistakable and separates it from read/delete siblings like get_campaign or delete_campaign.

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?

It clearly states the two usage modes and the key operational rule for updates: send only the fields to change. It lacks explicit routing guidance against siblings (e.g., when to use update_widget instead, or when to prefer list_campaigns first to obtain an id), but the context is unambiguous.

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.