Skip to main content
Glama

Publish artifact

artifact_publish

Publish text as a versioned artifact. A workspace item needs why (workspaceId, or a workspace folder named in folder, homes it there) and takes no visibility, teams or publicAsset (make it readable by anyone afterwards with artifact_share_policy); no expected revision is needed. folder files it: a folder id, or a slug (in workspaceId, else in team, else your personal folders). Typed teams lists are authorized before standalone creation. The bounded receipt includes complete immutable content access. rawUrl is the link to hand a person for the file itself; url is its page. Stored content counts toward the owner's storage; data that grows by adding records belongs in a table.

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": {
      "content": "<content>",
      "type": "<type>"
    },
    "name": "artifact_publish"
  }
}

Input Schema

NameRequiredDescriptionDefault
whyNoRequired for workspace items: one sentence on what the person is trying to accomplish, in their terms, not a description of this edit. Every workspace write takes one; sessions and summaries record themselves from it. At most 300 characters.
teamNoWith a folder slug: the team (slug or id) the folder belongs to.
typeYes
aliasNo
teamsNoTeams (slug or id) to share it with once it exists. Standalone only.
titleNo
folderNoThe folder to file it in: a folder id (a workspace folder puts it in that workspace), or a slug: in workspaceId when given, else in team, else one of your personal folders.
contentYes
visibilityNoStandalone sharing only; omit with a workspace, including private.
publicAssetNoStore it in public storage with a direct URL (publicUrl). Not private, not in a workspace, not a table.
workspaceIdNoThe workspace to create it in, by its id or its slug (a workspace folder named in folder implies it). A workspace item needs why and takes no visibility, teams or publicAsset.
inputReferencesNoWhat it was made from: ids or URLs.
parentArtifactIdNoThe artifact this one was derived from.

Output Schema

NameRequiredDescriptionDefault
contentYes
artifactYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / properties / audience
      Removed value: -{
      -  "description": "Workspace audience: internal (the default for internal members) or shared (external members see it too; the only choice for external editors).",
      -  "enum": [
      -    "internal",
      -    "shared"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / artifact / properties / audience
      Removed value: -{
      -  "enum": [
      -    "internal",
      -    "shared"
      -  ],
      -  "type": "string"
      -}
  2. Changed1 schema field changed
    • removedInput schema / properties / creatorContext
      Removed value: -{
      -  "description": "How it was made: the prompt, tool or run.",
      -  "maxLength": 16000,
      -  "type": "string"
      -}
  3. Changed1 schema field changed
    • removedInput schema / properties / handoff
      Removed value: -{
      -  "description": "Publish markdown as the workspace's handoff note for whoever comes next (needs a workspace).",
      -  "type": "boolean"
      -}
  4. Changed5 schema fields changed
    • addedOutput schema / properties / artifact / properties / alias
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / artifact / properties / folder
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "id": {
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "slug": {
      +          "type": "string"
      +        },
      +        "teamSlug": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "slug"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / artifact / properties / rawUrl
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / artifact / properties / title
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / artifact / required
      Previous value: -[
      -  "id",
      -  "url",
      -  "type",
      -  "currentVersionId"
      -]New value: +[
      +  "id",
      +  "url",
      +  "rawUrl",
      +  "type",
      +  "currentVersionId",
      +  "alias",
      +  "title",
      +  "folder"
      +]
  5. Changed5 schema fields changed
    • changedInput schema / properties / workspaceId / description
      Previous value: -"The workspace to create it in (a workspace folder named in folder implies it). A workspace item needs why and takes no visibility, teams or publicAsset."New value: +"The workspace to create it in, by its id or its slug (a workspace folder named in folder implies it). A workspace item needs why and takes no visibility, teams or publicAsset."
    • removedInput schema / properties / workspaceId / format
      Removed value: -"uuid"
    • addedInput schema / properties / workspaceId / maxLength
      Added value: +64
    • addedInput schema / properties / workspaceId / minLength
      Added value: +1
    • removedInput schema / properties / workspaceId / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
  6. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare mutating, non-idempotent, open-world behavior, and the text adds real context on top: content is immutable and versioned, storage bills to the owner, no expected revision is required, and return values include complete content access plus rawUrl/url. It stops short of describing failure or conflict behavior, and the authorization clause ("Typed teams lists are authorized before standalone creation") is too terse to fully parse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information-dense and front-loaded, but the telegraphic grammar ("A workspace item needs why ... and takes no visibility") forces re-reading, and clauses are stacked inside parentheses. Nothing is wasted in content, but the packaging costs comprehension on a first pass.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Strong coverage for a 13-parameter write tool with an output schema: it covers the mode split, folder resolution, and the return URLs. It leaves alias, title, inputReferences and parentArtifactId unmentioned, though the schema documents two of those adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning the 69% schema coverage does not: the folder slug resolution order, the workspaceId/folder implication, why's requirement, and the exclusion of visibility/teams/publicAsset for workspace items. It also distinguishes rawUrl (file link) from url (page), which is the kind of disambiguation the schema alone cannot supply.

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 precise verb+resource pair: "Publish text as a versioned artifact." It then actively separates itself from siblings, routing visibility changes to artifact_share_policy and record-growth data to a table rather than publishing a version.

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 concrete when/when-not rules per mode: a workspace item requires a why and refuses visibility/teams/publicAsset; standalone supports those but typed teams lists are authorized before creation; folder slugs resolve in workspaceId, then team, then personal folders. It also names the follow-up tool for making content publicly readable.

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.