Skip to main content
Glama

Publish a project live

r3_publish_live
Destructive

Publish an R3 project live: makes a RELEASE (a frozen copy) of the project as it is now and makes it the one its public live URL shows, for anyone. Only when the user asked for it. Changing the project does NOT change the live site; r3_publish_live does: on a project that is already live this is a publish update (a new release replaces the live one), and the answer names the release number and what changed since the previous live release. note (optional, up to 500 characters) is stored with the release. slug (optional, the first time a project goes live) is the project part of its public address (e.g. "my-game" for …//my-game: letters, numbers and dashes); without it R3 uses a free address (the project's name when free) and the answer says which. Once a project has been live its address never changes. Going live the FIRST time uses one of the live-project slots of the project owner's plan (an update uses none); going live needs a plan. When there is no plan or no room, nothing is published and the answer says how many live projects the plan allows, how many are used and where the user picks a plan. It publishes every change kept so far (yours and the user's: there is nothing to save first). r3_release_list shows the releases, r3_release_rollback makes an older one live again. Needs the publish:live right.

Input Schema

NameRequiredDescriptionDefault
noteNoOptional: what this release is, in a few words (up to 500 characters), e.g. "new cue and rules".
slugNoOptional, first go-live only: the project part of the public address, e.g. "my-game" (letters, numbers and dashes). Without it R3 uses a free address and says which. A project that has been live keeps its address: a different slug is refused.
projectIdYesThe project id (r3_project_list / r3_project_create).

Output Schema

NameRequiredDescriptionDefault
liveYes
noteYes
slugYes
answerYesThis answer in words: what was done, what R3 measured, decided or refused, and what to do next. The same text as the result's text block. Read it: the fields beside it are the data, this is the guidance.
changesYes
liveUrlYes
embedCodeYes
projectIdYes
environmentYes
firstGoLiveYes
addressChosenYes
releaseNumberYes
previousNumberYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / slug
      Added value: +{
      +  "description": "Optional, first go-live only: the project part of the public address, e.g. \"my-game\" (letters, numbers and dashes). Without it R3 uses a free address and says which. A project that has been live keeps its address: a different slug is refused.",
      +  "maxLength": 120,
      +  "type": "string"
      +}
    • addedOutput schema / properties / addressChosen
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "pinned",
      +        "requested",
      +        "suggested"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "projectId",
      -  "liveUrl",
      -  "slug",
      -  "live",
      -  "environment",
      -  "releaseNumber",
      -  "previousNumber",
      -  "firstGoLive",
      -  "note",
      -  "changes",
      -  "embedCode",
      -  "answer"
      -]New value: +[
      +  "projectId",
      +  "liveUrl",
      +  "slug",
      +  "live",
      +  "environment",
      +  "releaseNumber",
      +  "previousNumber",
      +  "firstGoLive",
      +  "addressChosen",
      +  "note",
      +  "changes",
      +  "embedCode",
      +  "answer"
      +]
  2. Changed2 schema fields changed
    • addedOutput schema / properties / embedCode
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "projectId",
      -  "liveUrl",
      -  "slug",
      -  "live",
      -  "environment",
      -  "releaseNumber",
      -  "previousNumber",
      -  "firstGoLive",
      -  "note",
      -  "changes",
      -  "answer"
      -]New value: +[
      +  "projectId",
      +  "liveUrl",
      +  "slug",
      +  "live",
      +  "environment",
      +  "releaseNumber",
      +  "previousNumber",
      +  "firstGoLive",
      +  "note",
      +  "changes",
      +  "embedCode",
      +  "answer"
      +]
  3. Changed2 schema fields changed
    • addedOutput schema / properties / answer
      Added value: +{
      +  "description": "This answer in words: what was done, what R3 measured, decided or refused, and what to do next. The same text as the result's text block. Read it: the fields beside it are the data, this is the guidance.",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "projectId",
      -  "liveUrl",
      -  "slug",
      -  "live",
      -  "environment",
      -  "releaseNumber",
      -  "previousNumber",
      -  "firstGoLive",
      -  "note",
      -  "changes"
      -]New value: +[
      +  "projectId",
      +  "liveUrl",
      +  "slug",
      +  "live",
      +  "environment",
      +  "releaseNumber",
      +  "previousNumber",
      +  "firstGoLive",
      +  "note",
      +  "changes",
      +  "answer"
      +]
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations flag destructive/openWorld/non-idempotent, and the description adds the real behavioral detail behind them: a new release replaces the live one, first publish consumes a plan slot while updates do not, failure to publish is atomic (nothing is published and the answer explains plan limits), and all kept changes are included. That is far beyond what the annotations convey.

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 core action and consequence, and the sibling routing and permission note close it out. It is dense but over-long, restating the address-permanence rule and the slug example in two places, and the plan-slot failure path is delivered as a single winding sentence.

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 destructive, plan-gated, open-world publish operation, the description covers authorization (publish:live right), slot/plan failure behavior, address permanence, update vs first-publish semantics, and even what the response reports — with an output schema present, nothing material 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%, so the schema already documents note, slug and projectId. The description nonetheless adds operational meaning: `note` is stored with the release, `slug` only applies on first go-live, a different slug is refused later, and the address is permanent once live. Some of this duplicates the schema text rather than extending it, keeping it just below a 5.

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 and resource ("Publish an R3 project live") and immediately defines the mechanism (a frozen RELEASE becoming what the public live URL shows). It distinguishes itself from r3_release_list, r3_release_rollback and implicitly r3_unpublish_live, so an agent can pick correctly without opening schemas.

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 gating: "Only when the user asked for it" sets the consent precondition, and it names the sibling tools for inspecting and reverting releases. It also clarifies a common misconception (changing the project does NOT change the live site), which is exactly the when-to-use context an agent needs.

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