Skip to main content
Glama

Attach an artifact to a task

add_artifact

Attach every concrete output — notes, drafts, results, files, links — as an artifact so it's part of the task record, not just chat. Real files (pdf, docx, pptx, xlsx, mp3, wav, m4a, images…) are supported: pass content_base64 for files up to ~6 MB, fetch_url to have Tango download and store a hosted file itself, or call create_artifact_upload first for large files and finalize here with upload_token. content stays the path for inline text and external_url for a link you only want recorded. Reference artifact ids in complete_task's evidence_artifact_ids. If a lease is active, Tango attributes the artifact to the lease holder. Otherwise, pass acting_worker_id to identify which of your workers is acting; if you don't own that worker the attribution is dropped rather than misrecorded. Attested workers may pass worker_signature over the JCS-canonical artifact payload (type 'tango.artifact'); an invalid signature rejects the call and nothing is stored. Delegated workers are signed for automatically. API reference: https://tango.applayer.io/docs/api/tools/add_artifact

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesFilename or artifact label. Keep the real extension (.pptx, .pdf, .mp3) so the type is detected.
contentNoInline text content.
task_idYesTask id, or a pasted Tango task URL.
fetch_urlNoAn https URL Tango downloads and stores as a durable copy (up to 50 MB). Use this when the file is already hosted somewhere.
mime_typeNoMIME type. Optional — Tango sniffs the real type from the bytes.
worker_kidNokid of the registered key that produced worker_signature.
external_urlNoOr, a publicly reachable https URL to an externally hosted artifact (recorded as a link; Tango does not copy it). Never a file:// path or a path on your own machine — upload those bytes instead.
upload_tokenNoFinalize a signed upload: the upload_token returned by create_artifact_upload, after you PUT the bytes to its upload_url.
evidence_kindNoWhat kind of proof this output is. Tasks can require specific kinds before completion is accepted — get_task shows the checklist. Left unset, Tango infers it from the file type where it can.
content_base64NoBase64-encoded file bytes for binary artifacts (pptx, docx, pdf, mp3, wav, m4a, images…). Up to ~6 MB decoded; larger files use create_artifact_upload.
acting_worker_idNoOptional. Self-asserted worker performing this action. Ignored if a lease is active (lease holder wins). Verified against caller ownership.
transparency_seqNoTransparency anchor seq you signed.
worker_signatureNoAttested mode only. Detached JWS ('header..signature') over the JCS-canonical artifact payload. See /verify.
worker_signed_atNoThe exact `signed_at` inside the signed payload (ISO 8601).
transparency_hashNoTransparency anchor hash you signed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false, but the description discloses a rich behavioral contract: lease-holder attribution wins over acting_worker_id, ownership mismatch drops attribution rather than misrecording, invalid signatures reject the call and store nothing, delegated workers are signed automatically, and it references the API docs. This is far beyond what the annotations provide and covers exactly the edge cases an agent needs.

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?

Dense but front-loaded: the tool's purpose and use cases come first, then file-input routing, then attribution/signing rules, then the docs link. Every sentence carries information, though the attribution/signature sentence is long and could be split for readability.

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 15-parameter, multi-route mutation tool with no output schema, the description covers input selection, evidence_kind relevance to task completion, evidence_artifact_ids wiring, attribution semantics, and signing/attestation rules. 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 description coverage is 100%, so the baseline is 3. The description adds meaning the schema doesn't carry alone: it groups content_base64/fetch_url/upload_token as the three mutually exclusive ways to supply file bytes, clarifies content stays inline text and external_url is record-only, and explains the lease-vs-acting_worker_id interaction.

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?

States a specific verb (attach) and resource (artifact), enumerates the concrete outputs it covers (notes, drafts, results, files, links), and explicitly separates itself from sibling create_artifact_upload by describing when each is used. An agent can distinguish this from add_comment and create_artifact_upload without opening any 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?

Explicit when-to-use for every input route: content_base64 for files up to ~6 MB, fetch_url for hosted files, create_artifact_upload for large files, content for inline text, external_url for record-only links. It also directs the agent to reference artifact ids in complete_task's evidence_artifact_ids and names create_artifact_upload as the alternative path.

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