Skip to main content
Glama

Send Conversation

send_conversation
Destructive

Send a new Canvas message to one or more recipients, creating a separate private conversation copy per recipient so each user sees only their own thread. Use it to contact users individually.

Instructions

Send a new message and return the created conversation object(s) (id, subject, participants) — one per recipient. With more than one entry in recipients, this creates a separate private conversation with each recipient rather than one shared group thread: each recipient sees only their own copy, and nobody sees who else received it. Every call sends again — there is no dedup against an already-sent message with the same subject and body. recipients must be real Canvas user ids as strings; list_course_users or search_users can look those up first. Requires the authenticated user to have permission to message every recipient (course messaging rules and any inbox restrictions Canvas enforces). Use list_conversations and get_conversation to review what was sent.

Input Schema

NameRequiredDescriptionDefault
bodyYesThe message body
subjectYesThe conversation subject line
recipientsYesArray of recipient user IDs (as strings)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.18.11
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. First observedv1.18.0

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the openWorldHint=true / destructiveHint=true annotations: it describes the non-obvious fan-out semantics (N recipients = N separate private threads, no visibility across recipients), discloses the irreversible repeat-send/no-dedup behavior that the destructiveHint only hints at, and spells out the permission gate. These are exactly the traits that would cause an agent to misfire if undocumented.

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?

It is a single dense block, but the most decision-relevant fact (one conversation per recipient) is front-loaded in the opening sentences and every later sentence (dedup, id lookup, permissions, follow-up tools) carries distinct information. Slightly denser than ideal — bullet separation of the recipients/permissions rules would read faster — but no filler.

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?

There is no output schema, and the description compensates by naming the returned fields (id, subject, participants) and their multiplicity. Combined with the permission prerequisite, id-lookup guidance, and the duplicate-send warning, an agent has everything needed to call this correctly and to interpret the result.

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?

Schema coverage is 100%, so the baseline is 3; the description earns a bump by adding semantics the schema does not carry — that recipients entries are Canvas user ids as strings requiring lookup, and that array length changes the number of conversations created. It stops short of anything about subject/body constraints, which the schema already covers adequately.

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?

Opens with a specific verb and resource ("Send a new message and return the created conversation object(s)") and immediately disambiguates from the sibling read tools by naming list_conversations and get_conversation later. An agent can distinguish this from every listed conversation sibling 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 prerequisites (recipients must be real Canvas user ids as strings, look them up via list_course_users or search_users first), explicit permissions requirements, and names the follow-up tools. It also states the important when-not-to-expect-dedup condition, so nothing about invocation context is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools