ArtifactSend
Server Details
Share documents, decks, HTML pages and Claude artifacts as tracked links and data rooms, then see who opened them, how far they read and what they asked. Also reads links others share with you, under the sender's rules.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 23 tools
Most tools target distinct resource+action pairs across a clearly split sender/reader surface. The main overlap is send_artifact (which says it can update an existing link in place via `link`) versus update_artifact (push a new version to an existing link), which could cause misselection. Reporting tools (link_report, reader_activity, recent_activity, room_report, website_visits) are distinct but require careful reading to separate.
All names are snake_case, which is good, but conventions are mixed: many are verb_noun (get_artifact, update_link, list_links, make_data_room) while others are bare noun phrases (reader_activity, recent_activity, room_report, website_visits, shared_with_me). It is readable but the inconsistent verb/verbless pattern means an agent can't predict form from name.
23 tools is on the heavy side for the domain, sitting in the borderline 16-25 range. Most earn their place across the sender/reader lifecycle, but the surface is large enough that related tools risk being overlooked.
The sender lifecycle is well covered: create, update, get, file upload, link/person management, data rooms, scheduling and multiple analytics reports, plus a coherent reader-side flow. Minor gaps exist, e.g. schedules can be created/deleted/listed but not edited, and comments/questions appear read-only for the sender with no reply/answer tool.
Available Tools
23 toolsdelete_scheduleStop a digestCDestructiveInspect
Stop a scheduled digest.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the agent knows this is a destructive write. The description adds nothing beyond that: it does not say whether the deletion is permanent, whether sent digests or history survive, or whether confirmation/auth is required. For a destructive tool, that is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded and free of waste, but its brevity comes from under-specification rather than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, a destructive annotation, and an undocumented id parameter, the description should explain the effect of stopping (permanent? reversible?), the id's meaning, and how to locate it via list_schedules. None of that is present, so it is incomplete for a destructive mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage; the description never clarifies that 'id' is the schedule identifier (as opposed to a digest id or artifact id) nor its format. The description does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence 'Stop a scheduled digest' is essentially the title restated with a verb ('stop') and the resource ('scheduled digest'). It does convey the action, but adds no scope, no distinction from siblings like schedule_digest or list_schedules, and is one step above a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus schedule_digest (pause/resume vs. cancel?) or list_schedules to find the id. No prerequisites, no mention of what happens to already-sent digests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artifactGet a link's HTMLARead-onlyInspect
The current HTML of a link and the paths of its files, for editing; update_artifact sends the new version.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The link: its URL, slug, id or title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds workflow context beyond that – this is a fetch of the *current* state intended to be followed by an update – though it doesn't warn about stale snapshots or concurrent edits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the return content comes first and the sibling hand-off second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does name the two things returned (HTML and file paths), which is the essential shape. It stops short of describing the return container or ordering, a minor gap for a one-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter with 100% schema description coverage ('its URL, slug, id or title'), and the description adds nothing about accepted identifier forms. With the schema doing all the work, baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States precisely what is returned: the current HTML of a link plus the paths of its files. It also contrasts itself with update_artifact, so an agent can distinguish the read side from the write side of the pair without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for editing; update_artifact sends the new version' names the complementary tool and the workflow that selects it. It gives no explicit exclusions (e.g., when to use open_link instead), so it falls short of a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_for_personMake a link for one personAInspect
Make another link to the same artifact for one person, with their name on it. They get their own link, door and reading report; the content stays the same and updates together. Use one per investor or client.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The link: its URL, slug, id or title. | |
| name | Yes | Who it is for, e.g. "Dana Lee, Sequoia". | |
| No | Optional. Their email. | ||
| only_them | No | Only this email can open it (they prove it with Google or a code). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral context beyond the annotations: each recipient gets an individual link, access 'door' and reading report, while the underlying content stays shared and updates together. That explains the isolation and sync semantics of the operation. It does not cover permissions, rate limits, or what the caller receives back, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded and no filler. The term 'door' is unexplained jargon that slightly muddies otherwise clean phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter creation tool with no output schema, the description covers enough: what is created, who it is for, and how content stays shared. It does not say what the return value contains (e.g., the new link URL) or how the per-person link relates to link_report and list_links, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters — including email and only_them — are already documented in the schema. The description only echoes the 'name' idea and adds no format or interaction details beyond the structured fields, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — making another link to the same artifact for one person — and the 'another' wording implies a variant of an existing link. It does not explicitly name or contrast with siblings like link_report or update_link, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use one per investor or client" gives a clear context for when to reach for this tool (individual, named recipients). It stops short of naming alternatives or when-not-to-use cases, such as when a single shared link or a group link would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_reportReading reportARead-onlyInspect
Full reading report for one link: each reader (email, visits, active time, how far they read), time per section, most clicked elements, copied text, rage clicks, views per day.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The link: its URL, slug, id or title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description usefully discloses what the response contains (readers, section time, clicks, rage clicks, views per day), but says nothing about permissions, data freshness, or whether the report is time-bounded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the resource and scope first, followed by a dense field list. Nothing is redundant, though the trailing enumeration is a comma-run that could be grouped more legibly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the field enumeration is the only signal about return shape, and it covers the major metrics well. The remaining gap is that aggregation semantics and any time-range limits on the report are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and the schema documents it fully (URL, slug, id, or title), so the schema does the heavy lifting. The description reinforces the single-link scope but adds no new constraint on the identifier form or resolution behavior when a title is ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: a full reading report for exactly one link, with the fields it contains enumerated. It doesn't name or contrast with the closest siblings (reader_activity, website_visits, room_report), so the agent must infer whether per-link vs aggregate is the differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one link' implies when this tool applies (per-link analytics) but there is no explicit when-to-use, when-not, or named alternative. An agent comparing link_report to reader_activity or website_visits gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commentsReader commentsARead-onlyInspect
Comments readers pinned on a link (or all links), with the text they pinned it to, replies, and whether the thread is resolved. Oldest first.
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | Optional. Leave out for the 10 most recently opened links. | |
| open_only | No | Only unresolved threads. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: results are ordered oldest first, threads include replies, and resolution state is returned. No mention of result limits or pagination, which is the only notable omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads what is returned, the second front-loads ordering. Nothing is redundant or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by describing the return contents and sort order for a simple zero-required-parameter read tool. Only pagination/result-cap behavior is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the default of the 10 most recently opened links. The description's '(or all links)' merely restates that default without adding syntax, limits, or edge-case behavior — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (reader comments pinned on a link) and enumerates its payload — pinned text, replies, resolution state — so an agent knows exactly what it gets back. It does not differentiate from neighbors like reader_activity or list_questions, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: passing a link scopes to one link, omitting it covers all links, and open_only filters unresolved threads. There is no explicit statement of when to choose this over reader_activity or list_questions, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_linksList my linksBRead-onlyInspect
My links with views, readers and when each was last opened. Newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Filter by words in the title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description contributes ordering ('newest first') and the returned fields, but says nothing about pagination or what happens when results exceed the limit, which matters for a list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded: the resource scope and returned fields come first, ordering last. The telegraphic fragment style is dense rather than wasteful, though a full clause would read slightly cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey return values, and it does partially (views, readers, last-opened, sort order). However, for a list tool with a limit parameter, the absence of any paging/default-size behavior leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'query' is documented in the schema, but 'limit' has no description anywhere. The description never mentions limiting or paging, so it fails to compensate for the undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('My links') and, more usefully, what each entry contains (views, readers, last-opened time) plus ordering ('Newest first'), so an agent knows exactly what comes back. It is clear but does not distinguish itself from neighbors like link_report, recent_activity, or shared_with_me.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'My links' implicitly signals an ownership scope, which is a mild differentiation from shared_with_me, but there is no explicit when-to-use, when-not-to-use, or named alternative. The agent must infer selection criteria from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_questionsReader questionsARead-onlyInspect
Questions readers asked a link (or all links), with the answers they got. Newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | Optional. Leave out for all links. | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, closed-world, so the description's job is to add the rest — and it does, disclosing sort order ('Newest first') and that answers are included with each question. It stops short of describing pagination or what the default result set size is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly packed sentence that front-loads the resource, then scope, then ordering. Nothing redundant and nothing padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with annotations carrying the safety profile and no output schema, the description is nearly sufficient — but the undefined 'limit' behavior (default count, max) remains an open question an agent would need answered before calling it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'link' is documented (optional, omit for all links) and the description reinforces that with '(or all links).' The 'limit' parameter carries no description in the schema and no explanation in the description — no default, no maximum — so the coverage gap is only half compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete resource ('questions readers asked a link') and what comes with it ('the answers they got'), plus the ordering. It is clear what the tool returns, but it never names why it differs from close siblings like list_comments or reader_activity, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'a link (or all links)' hints at the via-link context, and the schema note says 'Leave out for all links.' There is no explicit when-to-use guidance and no pointer to list_comments or reader_activity as alternatives for adjacent data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schedulesList digestsCRead-onlyInspect
My scheduled digests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. Beyond that, the description contributes only the "My" ownership scoping and says nothing about result shape, ordering, counts, or what a digest record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words with no waste, but this is under-specification rather than disciplined concision — there is no front-loaded statement of the action. A single additional clause ("lists the digests you've scheduled, newest first") would have cost little and added much.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema and no return-value documentation, the description must at least say what comes back; it does not. Given ~23 siblings and no output schema, an agent cannot tell what fields or how many results to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The empty schema and the description agree that no filtering or paging inputs are accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"My scheduled digests." is a noun phrase that essentially restates the title "List digests" and the name list_schedules without supplying a verb or explaining what listing produces. The only added signal is the possessive "My", which narrows scope to the caller's own digests rather than all digests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of related siblings such as schedule_digest (creation) or delete_schedule (removal), so an agent gets no routing help. The possessive implies "only your own items", but that is inferred, not stated as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_data_roomMake a data roomBInspect
Put several of my links into one data room: one link and one door for all of them, with folders. Returns the room link.
| Name | Required | Description | Default |
|---|---|---|---|
| nda | No | Optional agreement text readers accept before entering. | |
| name | Yes | ||
| links | Yes | Links to put in it: URLs, slugs, ids or titles. | |
| access | No | public: anyone with the link. email: reader types an email (fake and throwaway addresses are refused). verified: reader proves the email, with Google or a 6-digit email code. | |
| watermark | No | Watermark documents with each reader's email. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, open-world, non-destructive operation. The description adds that it returns the room link and groups multiple links, but it does not disclose default access behavior, idempotency, permissions, or what happens to the included links; the 'folders' claim is also unsupported by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and front-loads the core action. The metaphorical 'one link and one door' phrase and the unsupported 'with folders' detail slightly reduce precision but do not bloat the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so stating that it returns the room link is useful. However, for an open-world creation tool with five parameters and no annotations covering creation semantics, the description does not explain access defaults, NDA implications, or folder behavior, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents the access modes, NDA text, watermarking, and link formats. The description adds little parameter-specific meaning beyond referencing 'my links' and the return value; 'folders' does not map to any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: putting several links into one data room and returning the room link. It is distinguishable from siblings like list_links or open_link, though the metaphor "one link and one door" and the mention of folders (not present in the schema) add some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as link_for_person, send_artifact, or update_link. It also omits prerequisites, constraints, or when not to create a data room.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_linkOpen a shared linkAInspect
Opens a document or data room someone shared with the user through ArtifactSend (an artifactsend.com/d/... or /r/... link), as the signed-in user and under the sender's rules. The sender sees that it was opened. A room with an agreement returns the agreement first; agree: true records that the user accepted it.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The ArtifactSend link the user shared, e.g. https://artifactsend.com/d/ab12cd34 or /r/... for a data room. | |
| agree | No | true only after the user read and accepted the room's agreement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing a side effect ('The sender sees that it was opened'), which explains why readOnlyHint is false, and describes the conditional flow where a room with an agreement returns the agreement first. It also notes the write consequence of agree: true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences that are front-loaded with the core action and waste little. The parenthetical URL examples mildly duplicate the schema's link description, which is the only redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers the return behavior for agreement-gated rooms, the side effect visible to the sender, and the meaning of both parameters. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description still adds meaning by tying agree to the agreement-return sequence ('agree: true records that the user accepted it'). It doesn't restate the link format details beyond the schema, keeping the gain modest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Opens') and resource ('document or data room shared with the user') along with the link domain, which distinguishes it from siblings like read_shared or get_artifact. An agent can tell exactly what object this operates on without reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context: use when the user has an artifactsend.com/d/... or /r/... link. It doesn't explicitly exclude or name sibling alternatives (read_shared, get_artifact), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reader_activityOne reader's visitsARead-onlyInspect
Every visit by one reader of a link: when, how long, sections in the order they read them, clicks and copies.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The link: its URL, slug, id or title. | |
| reader | Yes | Reader email, or "Anonymous". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, non-destructive operation. The description adds useful behavioral detail about what is returned: when visits occurred, how long they lasted, the order of sections read, and clicks/copies. It does not mention pagination or privacy constraints, but it meaningfully supplements the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the scope front-loaded and no wasted language. Every listed item helps the agent understand what the tool returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two required parameters, read-only annotations, and no output schema, the description does a good job naming the returned fields. It remains silent on pagination or volume limits, which is a minor gap for a visit-history tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both required parameters are fully documented by the schema itself. The description reinforces that the result is scoped to one reader and one link, but adds no parameter syntax or format details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the resource and scope: every visit by one reader of a link, including timing, duration, reading order, clicks, and copies. It is more specific than the title alone, though it does not explicitly contrast itself with sibling tools such as recent_activity or website_visits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope implies when to use it—when you need activity for a specific reader on a specific link—but the description gives no explicit when-to-use guidance, exclusions, or alternatives such as recent_activity for broader activity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_activityRecent activityARead-onlyInspect
Who opened what across all my links in the last N hours (default 24). Use for "what happened today" questions.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, non-destructive and closed-world, so the safety profile is covered. The description adds useful scope ('all my links') and the 24-hour default, but says nothing about result volume, ordering, or truncation for large link sets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the scope and default come first, the usage cue second. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-param read tool with annotations covering safety, the description supplies scope, default, and a use case — enough to call it correctly. Return-shape expectations (whether it includes timestamps, reader identity, link names) remain unstated, though no output schema exists to fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% — the single 'hours' property has no description or type constraints — so the description carries the burden and does so by naming the parameter's meaning, its unit ('hours'), and its default of 24. It does not state bounds (e.g., maximum window) or whether fractional/non-integer values are honored.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: it returns who opened which links over a time window, with an explicit default of 24 hours. The scope phrase 'across all my links' implicitly separates it from per-reader or per-site siblings like reader_activity and website_visits, but no sibling is named directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete triggering question type ('what happened today'), which tells the agent when this is the right call. It stops short of naming alternatives or exclusions (e.g., when to prefer reader_activity for a single recipient), so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
room_reportData room reportBRead-onlyInspect
Who opened a data room, which documents each person read and for how long, and who accepted the agreement.
| Name | Required | Description | Default |
|---|---|---|---|
| room | Yes | The room URL, slug or name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is clear. The description adds useful content about what the report includes, but it does not describe output format, pagination, permissions, or other behavioral limits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that lists the report’s relevant contents without padding. It is appropriately sized, though it could be slightly more front-loaded with a verb like 'Generates a report showing...'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one fully documented parameter, the description conveys enough about the report’s contents to support selection. However, it omits usage guidance relative to similar activity-reporting siblings and does not explain return structure, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter 'room' is documented in the schema as a URL, slug, or name. The description does not add any further detail about the parameter, so the schema carries the weight here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the report’s contents: who opened the data room, which documents were read and for how long, and who accepted the agreement. It is specific about the resource and information returned, but it does not differentiate this tool from siblings like reader_activity or recent_activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as reader_activity, link_report, or recent_activity. It implies it is a data room activity report but does not state selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_digestSchedule a reading digestBInspect
Email me a reading digest on a schedule (Pacific time). Optionally only for some links.
| Name | Required | Description | Default |
|---|---|---|---|
| hour | No | Hour of day 0-23, Pacific time. Default 8. | |
| note | No | What to watch for, shown at the top of each digest. | |
| links | No | ||
| cadence | Yes | ||
| weekday | No | For weekly. Default mon. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-destructive mutation tool with open-world behavior. The description usefully adds that delivery is by email on a recurring schedule in Pacific time and can be limited to some links, but it does not clarify what happens if a schedule already exists, whether multiple schedules can be created, or what confirmation is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, front-loaded, and contains no filler. Every phrase adds relevant information about scheduling, email delivery, timezone, or optional link filtering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-destructive mutation tool with five parameters and no output schema, the description covers the core action and delivery mode. However, it omits operational context an agent may need, such as whether repeated calls create duplicates, how to inspect or remove schedules, or what the call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents several parameters, and the description adds meaning for the undocumented links parameter by saying it can limit the digest to some links. It also reinforces Pacific time, but it does not add much beyond the schema for cadence, hour, note, or weekday, leaving the moderate schema coverage gap only partly addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: schedule an emailed reading digest. It adds useful scope details such as Pacific time and optional link filtering, but does not explicitly distinguish this from sibling scheduling tools like list_schedules or delete_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no explicit guidance on when to use it versus alternatives such as list_schedules or delete_schedule. There are no prerequisites, exclusions, or duplicate-schedule caveats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_artifactShare as a tracked linkAInspect
Share or send a document, deck, HTML page or Claude artifact as a tracked link: the user then sees who opened it, how far they read, time per section and what they asked. For a Claude artifact, give its complete code: html for an HTML artifact, react for a React artifact. Or Markdown, a PDF/Word/PowerPoint/Excel file as document, or a public URL. Returns the link and its settings. Pass link to update an existing link in place (same URL, new content).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A public page to copy. | |
| html | No | Complete HTML document. | |
| link | No | Optional. Update this link instead of making a new one. | |
| allow | No | Only these emails or domains can open it, e.g. ["@sequoiacap.com", "dana@acme.com"]. | |
| files | No | Files the page loads by relative path (images, video, fonts), e.g. media/demo.mp4. Up to 10 MB each, 40 MB in all. | |
| react | No | A React artifact's complete code: one file with a default export. Tailwind classes and imports from react, lucide-react, recharts, lodash, d3, mathjs, papaparse, date-fns, three, chart.js and framer-motion work. Not shadcn/ui (@/components). | |
| title | No | ||
| access | No | public: anyone with the link. email: reader types an email (fake and throwaway addresses are refused). verified: reader proves the email, with Google or a 6-digit email code. | |
| folder | No | Put it in this folder on my Artifacts page, by name. Made if it does not exist. Leave out to keep it outside folders. | |
| notify | No | Email me when someone opens it the first time. Default true. | |
| document | No | A PDF, Word, PowerPoint or Excel file instead of HTML. Readers get pages, slides or sheets. | |
| markdown | No | ||
| ai_reading | No | What a reader's own AI (Claude, ChatGPT) may take. questions (default): only the parts that answer each question, so I see every question and no full copy leaves. full: the whole text, marked with the reader's email. off: no AI reading. | |
| expires_in_days | No | Close the link after this many days. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a non-read-only, open-world, non-destructive operation. The description adds useful behavioral context: the shared link tracks who opened it, read depth, time per section, and questions asked; updating via `link` preserves the same URL with new content; and the call returns the link and its settings. It does not discuss permission requirements, rate limits, or detailed side effects beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then adds only the distinctions needed for invocation. It is appropriately sized for a tool with 14 parameters, and every sentence contributes useful selection or behavior information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high schema coverage, nested objects, and absence of an output schema, the description is largely complete for selecting and invoking the tool. It explains content source options, update behavior, and that a link plus settings are returned. It does not mention some access-related parameters, but those are well covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 86%, so the schema already documents most parameters. The description still adds meaningful guidance by explaining the content-source mapping for Claude artifacts (`html` vs `react`) and that `link` triggers an in-place update. It does not cover parameters such as `access`, `ai_reading`, `allow`, or `expires_in_days`, but the schema handles those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: share/send a document, deck, HTML page, or Claude artifact as a tracked link. It also distinguishes the update behavior from creating a new share by explaining that passing `link` updates an existing link in place. The purpose is clear 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context by mapping content types to parameters (`html`, `react`, `document`, Markdown, URL) and explains when to pass `link` instead of creating a new link. However, it does not explicitly name competing siblings such as `update_link` or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_artifactUpdate a link's contentADestructiveInspect
Push a new version to an existing link. Same URL; readers see the new version at once. Also brings in a link that only opens on claude.ai (onClaudeOnly in list_links): send the artifact's complete HTML from this chat, and the link gets time per section, replays, comments and questions, with the same readers. Give the complete new HTML (or Markdown, or a URL) and, if the page loads files by relative path, those files. get_artifact returns the current version.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| html | No | ||
| link | Yes | The link: its URL, slug, id or title. | |
| files | No | ||
| react | No | A React artifact's complete code (default export). | |
| title | No | ||
| markdown | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true; the description adds meaningful context on top: readers see the new version immediately, the URL stays the same, and the payload must be a complete document rather than a fragment. It stops short of saying the prior version is unrecoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded and every sentence is relevant, but the claude.ai import sentence is overstuffed, cramming a trigger condition, an instruction and a feature list into one clause-heavy run. A split would make it scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters at 29% coverage, no output schema and a destructive annotation, the description should account for all inputs; it covers the content payloads well but says nothing about react or title, nor what the tool returns. Adequate, with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 29%, so the description carries real weight: it says to supply the complete new HTML (or Markdown, or a URL) and, for pages loading files by relative path, those files — mapping directly onto html/markdown/url/files. It leaves react and title unaddressed, but adds far more than the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a concrete verb+resource: push a new version to an existing link, same URL. It is distinguishable from send_artifact (creation) and get_artifact (read). However, it never contrasts itself with the similarly-named sibling update_link, so an agent must guess which updater handles metadata vs. content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Two usage contexts are spelled out: replacing content on an existing link, and importing a claude.ai-only link (the onClaudeOnly case) so it gains per-section time, replays and comments. The closing pointer to get_artifact establishes a read-then-update flow. No explicit exclusions or 'use update_link instead' routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_linkChange link settingsADestructiveInspect
Change who can open a link, its title, expiry or notifications, or turn it off.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The link: its URL, slug, id or title. | |
| allow | No | Only these emails or domains can open it, e.g. ["@sequoiacap.com", "dana@acme.com"]. | |
| title | No | ||
| access | No | public: anyone with the link. email: reader types an email (fake and throwaway addresses are refused). verified: reader proves the email, with Google or a 6-digit email code. | |
| folder | No | Put it in this folder on my Artifacts page, by name. Made if it does not exist. Leave out to keep it outside folders. | |
| notify | No | Email me when someone opens it the first time. Default true. | |
| disabled | No | ||
| ai_reading | No | What a reader's own AI (Claude, ChatGPT) may take. questions (default): only the parts that answer each question, so I see every question and no full copy leaves. full: the whole text, marked with the reader's email. off: no AI reading. | |
| expires_in_days | No | Close the link after this many days. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and readOnlyHint=false, so the safety profile is carried structurally. The description adds only the 'turn it off' nuance via the disabled concept and says nothing about reversibility, permission prerequisites, or what toggling disabled does to existing readers. Adequate but thin beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler that enumerates the changeable facets. Nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter destructive mutation with no output schema, the description covers breadth but omits reversibility, permission/auth requirements, and what happens to already-distributed links when settings change. The rich schema compensates for much of the parameter gap, but behavioral context is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 78% and the property descriptions are unusually rich (access enum meanings, ai_reading tradeoffs, allow examples, folder auto-creation), so the schema carries the semantics. The description adds no parameter-specific meaning beyond restating a subset of fields, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Change') and resource ('a link') plus the concrete facets it controls: access, title, expiry, notifications, disabling. An agent immediately knows what domain the tool operates in. It does not, however, distinguish itself from siblings like update_artifact or delete_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by listing the mutable settings, but there is no explicit 'use this when…' or routing to alternatives such as link_for_person or delete-type siblings. The agent must infer selection from the tool name and the field list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileAdd a file to a linkADestructiveInspect
Add or replace one file (image, video, font, CSS, JS, PDF) that a link loads by relative path, without changing the page. Up to 10 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The link: its URL, slug, id or title. | |
| path | Yes | e.g. media/demo.mp4 | |
| base64 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, so the bar is lower, yet the description still adds real context: the 10 MB ceiling, the fact that an existing file at that path is REPLACED, and that the link's page markup is not touched. It stops short of saying whether the old file is recoverable or what happens if two uploads race for the same path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the actor-scope ('one file ... by relative path') and the constraint ('Up to 10 MB') are both front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param, no-output-schema, annotated write tool, the description covers what is uploaded, where it lands, size limits and non-effect on the page. The only material hole is content encoding for 'base64' and the lack of any mention of the result of a successful upload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the two documented params (link, path) already carry their examples in the schema; the description adds only the relative-path framing. The undocumented 'base64' param is left unexplained — no hint whether raw base64, a data URI, or a URL is expected, and the 10 MB limit is not tied to it explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (add/replace) plus resource (a single file served by a link at a relative path), with concrete file classes enumerated. It never names or contrasts a sibling such as update_link or send_artifact, so an agent must infer the boundary between 'edit the link' and 'upload an asset to the link' on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'that a link loads by relative path, without changing the page' implies the scenario (attaching assets that the link's HTML references), but there is no explicit when-to-use versus update_link/send_artifact guidance and no prerequisites stated. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
website_visitsWebsite visits from readersARead-onlyInspect
Readers who clicked from your artifacts to your own website, and the pages they visited, in the last N hours (default 168).
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds scope (only outbound clicks from artifacts to your site, not all traffic) and the default lookback window, but says nothing about result size limits, ordering, or aggregation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the resource and the key scoping qualifier (clicked from your artifacts to your own website), with the time window trailing. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple read-only tool with one optional parameter and no output schema; the description conveys what data comes back (visitors and pages) and the time window. Only the return shape's granularity and any limits remain unstated, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the parameter — and it does, defining 'hours' as the lookback window with a stated default of 168. It stops short of giving an accepted range or units beyond hours.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (readers who clicked from artifacts to your own website) and the content returned (pages they visited). It is more concrete than siblings like reader_activity, though it never explicitly contrasts itself with those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied — referral analytics — but there is no explicit when-to-use or when-not, and the very close siblings reader_activity and recent_activity are not mentioned as alternatives. The agent must infer the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
23 tool updates
- First observed
ask_shared - First observed
delete_schedule - First observed
get_artifact - First observed
link_for_person - First observed
link_report - First observed
list_comments - First observed
list_links - First observed
list_questions - First observed
list_schedules - First observed
make_data_room - First observed
message_shared_sender - First observed
open_link - First observed
read_shared - First observed
reader_activity - First observed
recent_activity - First observed
room_report - First observed
schedule_digest - First observed
send_artifact - First observed
shared_with_me - First observed
update_artifact - First observed
update_link - First observed
upload_file - First observed
website_visits
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm55 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1618 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.