Skip to main content
Glama

Attach to outreach

attach_to_outreach

Only attach when the user explicitly asks to attach a specific file to someone's message — never on your own initiative. attachment_id comes from list_attachments. Name the queued message by exactly one handle: recipient_email for a queued email (pending or awaiting approval); target_provider_id for a queued LinkedIn message, or target_identifier for one whose profile is still resolving — both as shown on the row in manage_linkedin_invite_queue's status read. On LinkedIn only messages carry files, not connection requests or InMails, and LinkedIn takes fewer file types than email; a file the channel can't send is refused with the reason. The same file can be attached to several messages. The attached file's name and every file now on that message, shaped {'attached': True, 'filename', 'attachments': [{'id', 'filename', 'mime_type', 'size'}]}.

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": {
      "attachment_id": "<attachment_id>"
    },
    "name": "attach_to_outreach"
  }
}

Input Schema

NameRequiredDescriptionDefault
on_behalf_ofNoA teammate's email, or an agency client's from list_agency_clients, to run this call in that account: their agents, settings, connected accounts, and credits. Omit it to act on your own account.
attachment_idYesa file id from list_attachments.
recipient_emailNothe queued email's recipient.
target_identifierNothe URL/slug of a queued LinkedIn message still resolving.
target_provider_idNothe queued LinkedIn message's target_provider_id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / on_behalf_of / description
      Previous value: -"An agency client's email, from list_agency_clients, to run this call in that client's account: their agents, settings, connected accounts, and credits. Omit it to act on your own account."New value: +"A teammate's email, or an agency client's from list_agency_clients, to run this call in that account: their agents, settings, connected accounts, and credits. Omit it to act on your own account."
  2. Changed4 schema fields changed
    • addedInput schema / properties / recipient_email / default
      Added value: +""
    • addedInput schema / properties / target_identifier
      Added value: +{
      +  "default": "",
      +  "description": "the URL/slug of a queued LinkedIn message still resolving.",
      +  "type": "string"
      +}
    • addedInput schema / properties / target_provider_id
      Added value: +{
      +  "default": "",
      +  "description": "the queued LinkedIn message's target_provider_id.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "recipient_email",
      -  "attachment_id"
      -]New value: +[
      +  "attachment_id"
      +]
  3. Changed1 schema field changed
    • addedInput schema / properties / on_behalf_of
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "An agency client's email, from list_agency_clients, to run this call in that client's account: their agents, settings, connected accounts, and credits. Omit it to act on your own account."
      +}
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations are sparse (only non-readonly/non-destructive), and the description fills the gap: LinkedIn accepts files only on messages, not connection requests or InMails, LinkedIn supports fewer file types, an incompatible file is refused with a reason, and the same file can go to multiple messages. It also documents the return shape inline.

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?

Front-loaded with the action and the strict usage constraint, then the handle rules; every sentence carries information. The handle paragraph is dense but not padded.

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?

With five params, no enums, no output schema, the description supplies the channel constraints, the id provenance, the handle-selection rule, and an inline return shape — enough for an agent to call it correctly and safely.

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 goes further by explaining the per-channel selection among recipient_email, target_provider_id, and target_identifier, and where those handles come from (manage_linkedin_invite_queue status read). It stops short of stating the params are mutually exclusive/exactly-one, which is the one detail left implicit.

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 gives a specific verb and resource ('Attach a file from the user's library to a queued outreach email or LinkedIn message') and implicitly distinguishes itself from detach_from_outreach and list_attachments by naming the latter as the source of attachment_id.

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?

It states an explicit when-not ('never on your own initiative'), an explicit precondition (user explicitly asks to attach a specific file), where the id comes from (list_attachments), and which handle selects which kind of queued message, including the resolving-profile fallback.

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