Skip to main content
Glama

Onsa

What to do next

list_next_steps
Read-onlyIdempotent

What this campaign still needs from a human, as a ranked to-do list: people who REPLIED, people who accepted an invite but were never messaged, drafts waiting for approval, leads found but never contacted, and setup that is missing. CALL THIS WHENEVER THE USER ASKS FOR RECOMMENDATIONS, ADVICE, NEXT STEPS, OR WHAT TO DO — and alongside get_campaign_stats whenever they ask how a campaign is PERFORMING or what is happening with it, because the funnel gives you numbers and this gives you the actions behind them. It is the question "what should I do about this campaign today". Use it before suggesting new searches — an unworked cohort is almost always worth more than another one. For replies specifically, list_replies is the better source: its awaitingOurReply compares timestamps, while the replied bucket here is only leads whose sentiment was scored and does not know whether you have since answered. Pass any leadIds to get_campaign_leads to see who the people actually are. Honest limits, which you should pass on rather than overstate: Onsa does not record whether you have ALREADY replied, or whether you contacted someone outside Onsa; "replied" only includes replies whose sentiment was scored, so it is a floor; a withdrawn or unreachable invite leaves no trace, so some "never contacted" leads may already have been tried. Sentiment is judged once per lead, not per message. Counts are complete; leadIds are capped at 200.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
campaignIdYesCampaign to inspect, from list_campaigns or fetch_leads

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYes
campaignIdYes
leadsTotalYes
campaignUrlYes
campaignTitleYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to repeat those. Instead, it discloses critical limitations: it does not know if the user already replied, 'replied' is a floor (only sentiment-scored replies), withdrawn/unreachable invites leave no trace, sentiment is judged once per lead, and leadIds are capped at 200. These caveats go far beyond the annotations and prevent the agent from overstating what the tool knows.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place. It is front-loaded with the purpose, then usage guidance, then an explicit alternative, then honest limits. The structure is logical and the content is dense without redundancy. It reads as a well-crafted, informative definition rather than a padded one.

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?

Given the tool's moderate complexity, the presence of an output schema (so return format need not be described), and the detailed annotations, the description is complete. It covers what the tool does, when to use it, how it differs from similar tools, and its limitations. No critical information for correct invocation is missing.

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?

The schema covers the sole parameter campaignId with a description ('Campaign to inspect, from list_campaigns or fetch_leads') and 100% coverage. The tool description does not add any additional meaning about the parameter itself; it focuses on output semantics and usage. Since schema coverage is full, a baseline of 3 is appropriate, and the description adds no further parameter-level context.

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 precise statement of what the tool returns: a ranked to-do list of what a campaign still needs from a human, enumerating concrete buckets (replied, accepted-but-unmessaged, drafts, uncontacted leads, missing setup). It clearly names the verb (list) and resource (next steps) and distinguishes it from siblings like list_replies and get_campaign_stats. The purpose is unambiguous and actionable.

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?

The description gives explicit trigger conditions: 'CALL THIS WHENEVER THE USER ASKS FOR RECOMMENDATIONS, ADVICE, NEXT STEPS, OR WHAT TO DO.' It also states when to pair it with get_campaign_stats, when to prefer list_replies instead, and advises using it before suggesting new searches. This is exemplary usage guidance with clear alternatives and a rationale.

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