Skip to main content
Glama
PhononX

Carbon Voice

by PhononX

get_message_share_link

Read-only

Look up an existing message share link by its ID to get its URL, access settings, and validity status before using it.

Instructions

Look up an existing message share link by its ID, including the message behind it. USE WHEN: You have a share link ID and want its URL, access settings, or whether it is still valid — check revoked_at and end_access_at before relying on it. USE INSTEAD: create_message_share_link to make a new link; this only reads existing ones. get_message if you have the message ID and do not care about the share. FIRST: share_link_id comes from create_message_share_link (field id) — call it first if you don't have one. EXAMPLE: {"share_link_id":"share-abc"} RETURNS: Same shape as create_message_share_link: {id, link, share_type, access_type, revoked_at?, end_access_at?, shared_message: {...}, ...}. NARROW: pass response_fields ["id","link","revoked_at","end_access_at"] unless you need more — the full payload is much larger. ERROR NOT_FOUND: No share link with that ID, or it is no longer accessible. — Create a new one with create_message_share_link; do not retry the same ID.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
share_link_idYesShare link ID, from `create_message_share_link` (its `id`).
response_fieldsNoDot-path allowlist to shrink the response, e.g. ["results.id","total"]. Omit for the full payload.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.10.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: instructs to check revoked_at and end_access_at for validity, notes that the return shape matches create_message_share_link, mentions the full payload is large and suggests response_fields to narrow it, and explains the NOT_FOUND error condition. This goes beyond annotations without contradicting them.

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?

The description is longer than average but highly structured with clear headers (USE WHEN, USE INSTEAD, FIRST, EXAMPLE, RETURNS, NARROW, ERROR). Every section earns its place and adds actionable detail. Slight redundancy (e.g., share_link_id source mentioned both in schema and description) but not wasteful.

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?

For a read-only lookup with two parameters and no output schema, the description covers the use case, the error case, the return shape, and performance optimization. It gives an example and explicitly handles the NOT_FOUND scenario. Nothing an agent needs to call it correctly is missing.

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% for both parameters. The description reinforces the source of share_link_id (from create) and gives a concrete example, plus a NARROW section that explains when and why to use response_fields. This adds practical usage nuance beyond the schema's descriptions.

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 specific verb+resource: 'Look up an existing message share link by its ID, including the message behind it.' It clearly distinguishes this from siblings: it reads existing links (vs create_message_share_link) and returns the message payload (vs get_message). No ambiguity.

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?

Explicit USE WHEN (have a share link ID and want its URL/access settings/validity), USE INSTEAD (create for new, get_message if you have the message ID), and FIRST guidance (share_link_id comes from create_message_share_link). This fully routes the agent to the correct tool and prerequisites.

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