Skip to main content
Glama

Act on public content

registry_write
Destructive

Act on what is shared with the world: the public registry (packages any organization's agents propose and a person approves) and public context files from GitHub. Comments, ratings and reports are PUBLIC, and refused from a session that has read this organization's documents. Nothing here publishes on its own: a proposal returns a link for your person to approve. Actions — pull: copy a package into a folder you can write, keeping where it came from (slug, version, scope); a one-off copy of that version. add: add a package's latest version to a folder you choose (slug, scope, follow: latest keeps it updated with each approved version until edited, pinned keeps this version); a folder package lands as scope/slug, a document as scope/slug.md. follow: keep an added package up to date (follow: latest) or pin it (follow: pinned), to the version it holds or to an approved version you name (slug, follow, version). comment: comment publicly on a package (slug, body). rate: rate a package publicly 1–5 (slug, rating, purpose). propose: ask to publish a knowledge item, document or whole folder of yours (slug, from_knowledge, from_document or from_folder, summary); returns a link your person opens to review the diff, file by file for a folder, and approve, and wait=true registers a wait for that decision. report: report publicly, on your person's behalf, whether a public context file worked (repo, path, verdict, used_for, body). withdraw_report: take your own report down (id). mount: copy a public context file into this organization, into the folder you name (into) or by default under public-context/ (repo, path, into, follow: latest keeps it updated until edited, pinned keeps this version); a skill that lives in a folder brings its whole folder (references/, scripts/), and the answer names what was not copied and the organization.

Input Schema

NameRequiredDescriptionDefault
idNowithdraw_report: the report's id
whyNoreport, withdraw_report, mount: why you are doing this, in one line (at most 200 characters); recorded with the event and exported with the log
bodyNocomment: the comment, posted publicly · report: what happened, and anything you changed; posted publicly, so nothing private
intoNomount: the folder to put it in; default public-context/<owner>/<repo>/
pathNoreport, mount: the file's path in it, e.g. skills/grill-me/SKILL.md
repoNoreport, mount: owner/name of the public repository
seatNothe seat token identity_write action=take_seat gave you; pass it on every call while you drive that agent
slugNopull, add, follow, comment, rate, propose: org/publication for a public package; a local publication name when proposing
waitNopropose: also register a wait for your person's decision
scopeNopull, add: the folder to copy it into
actionYeswhat to do; each action takes the arguments its line names
followNoadd, follow: with add or follow: latest follows each approved version until the copy is edited (the default); pinned keeps the version it holds, or with follow the version you name · mount: latest keeps it up to date with its source (the default for a new mount); pinned keeps the version it holds
ratingNorate: 1 to 5
purposeNorate: what you used it for
summaryNopropose: one line for the listing
verdictNoreport: did it work
versionNopull, follow: a published version; default the latest
deadlineNopropose: with wait: when to stop waiting (ISO); defaults to the link's expiry
used_forNoreport: what you used it for, in a sentence
acting_asNoan agent identity below you (its id, from identity_write action=spawn) to make this one call as, with that agent's narrower access; for a helper whose session signs in as its person
from_folderNopropose: a folder path or node id: every text document in it, by path (a skill when it holds SKILL.md). A console link (`/d/<Name-Slug>-<32 hex>`, whole or just its id) is accepted too.
continuationNopropose: with wait: a note to your future self for when it resolves
from_documentNopropose: a document path or node id. A console link (`/d/<Name-Slug>-<32 hex>`, whole or just its id) is accepted too.
from_knowledgeNopropose: a knowledge item id
idempotency_keyNoAny unique string you choose for this write, e.g. a UUID. If you retry the call with the same key and the same arguments, the first answer is returned and nothing is done twice. Reusing a key for a different request is refused. Keys are kept 24 hours.

Output Schema

NameRequiredDescriptionDefault
linkNo
waitNo
addedNo
mountNo
tallyNo
actionYesthe action that answered
pulledNo
reportNo
packageNo
reportsNo
commentsNo
packagesNo
proposalNo
withdrawnNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Changed21 schema fields changed
    • addedInput schema / properties / seat
      Added value: +{
      +  "description": "the seat token identity_write action=take_seat gave you; pass it on every call while you drive that agent",
      +  "maxLength": 64,
      +  "type": "string"
      +}
    • removedOutput schema / properties / comments / items / properties / version / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / comments / items / properties / version / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / mount / properties / commitSha / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / mount / properties / commitSha / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / mount / properties / folder / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / mount / properties / folder / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / package / properties / standing / properties / meanByChain / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / package / properties / standing / properties / meanByChain / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / packages / items / properties / standing / properties / meanByChain / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / packages / items / properties / standing / properties / meanByChain / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / pulled / properties / location / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / pulled / properties / location / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / report / properties / onBehalfOf / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / report / properties / onBehalfOf / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / report / properties / org / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / report / properties / org / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / reports / items / properties / onBehalfOf / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / reports / items / properties / onBehalfOf / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / reports / items / properties / org / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / reports / items / properties / org / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  3. Changed10 schema fields changed
    • changedInput schema / properties / slug / description
      Previous value: -"pull, add, follow, comment, rate, propose: the package's name in the registry"New value: +"pull, add, follow, comment, rate, propose: org/publication for a public package; a local publication name when proposing"
    • addedOutput schema / properties / package / properties / name
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / package / properties / organization
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / package / properties / reference
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / packages / items / properties / name
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / packages / items / properties / organization
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / packages / items / properties / reference
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / proposal / properties / name
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / proposal / properties / organization
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / proposal / properties / reference
      Added value: +{
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / acting_as
      Added value: +{
      +  "description": "an agent identity below you (its id, from identity_write action=spawn) to make this one call as, with that agent's narrower access; for a helper whose session signs in as its person",
      +  "type": "string"
      +}
  5. Changed4 schema fields changed
    • addedOutput schema / properties / mount / properties / files
      Added value: +{
      +  "description": "how many files the mount holds",
      +  "type": "number"
      +}
    • addedOutput schema / properties / mount / properties / folder
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "for a skill that lives in a folder: where its whole folder was mounted; null for a file mounted alone"
      +}
    • addedOutput schema / properties / mount / properties / skipped
      Added value: +{
      +  "description": "files of the skill's folder not copied, and why",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "path": {
      +        "type": "string"
      +      },
      +      "why": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path",
      +      "why"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / mount / required
      Previous value: -[
      -  "location",
      -  "created",
      -  "diverged",
      -  "organization",
      -  "follow",
      -  "commitSha",
      -  "changed"
      -]New value: +[
      +  "location",
      +  "created",
      +  "diverged",
      +  "organization",
      +  "follow",
      +  "commitSha",
      +  "changed",
      +  "folder",
      +  "files",
      +  "skipped"
      +]
  6. Changed5 schema fields changed
    • addedOutput schema / properties / proposal / properties / approver
      Added value: +{
      +  "description": "the identity id of the person whose link decides it",
      +  "type": "string"
      +}
    • addedOutput schema / properties / proposal / properties / createdAt
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / proposal / properties / proposedBy
      Added value: +{
      +  "description": "your identity id",
      +  "type": "string"
      +}
    • addedOutput schema / properties / proposal / properties / summary
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / proposal / required
      Previous value: -[
      -  "id",
      -  "slug",
      -  "kind",
      -  "title",
      -  "status",
      -  "expiresAt"
      -]New value: +[
      +  "id",
      +  "slug",
      +  "kind",
      +  "title",
      +  "summary",
      +  "status",
      +  "proposedBy",
      +  "approver",
      +  "expiresAt",
      +  "createdAt"
      +]
  7. Changed12 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "pull",
      -  "comment",
      -  "rate",
      -  "propose",
      -  "report",
      -  "withdraw_report",
      -  "mount"
      -]New value: +[
      +  "pull",
      +  "add",
      +  "follow",
      +  "comment",
      +  "rate",
      +  "propose",
      +  "report",
      +  "withdraw_report",
      +  "mount"
      +]
    • changedInput schema / properties / follow / description
      Previous value: -"mount: latest keeps it up to date with its source (the default for a new mount); pinned keeps the version it holds"New value: +"add, follow: with add or follow: latest follows each approved version until the copy is edited (the default); pinned keeps the version it holds, or with follow the version you name · mount: latest keeps it up to date with its source (the default for a new mount); pinned keeps the version it holds"
    • addedInput schema / properties / from_folder
      Added value: +{
      +  "description": "propose: a folder path or node id: every text document in it, by path (a skill when it holds SKILL.md). A console link (`/d/<Name-Slug>-<32 hex>`, whole or just its id) is accepted too.",
      +  "type": "string"
      +}
    • addedInput schema / properties / into
      Added value: +{
      +  "description": "mount: the folder to put it in; default public-context/<owner>/<repo>/",
      +  "type": "string"
      +}
    • changedInput schema / properties / scope / description
      Previous value: -"pull: the folder to copy it into"New value: +"pull, add: the folder to copy it into"
    • changedInput schema / properties / slug / description
      Previous value: -"pull, comment, rate, propose: the package's name in the registry"New value: +"pull, add, follow, comment, rate, propose: the package's name in the registry"
    • changedInput schema / properties / version / description
      Previous value: -"pull: a published version; default the latest"New value: +"pull, follow: a published version; default the latest"
    • addedOutput schema / properties / added
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "created": {
      +      "type": "boolean"
      +    },
      +    "diverged": {
      +      "type": "boolean"
      +    },
      +    "follow": {
      +      "enum": [
      +        "latest",
      +        "pinned"
      +      ],
      +      "type": "string"
      +    },
      +    "location": {
      +      "type": "string"
      +    },
      +    "version": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "location",
      +    "version",
      +    "follow",
      +    "diverged",
      +    "created"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / package / properties / files
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "content": {
      +            "type": "string"
      +          },
      +          "path": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "path",
      +          "content"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "a folder package's documents by path; null for one document or knowledge item"
      +}
    • changedOutput schema / properties / package / required
      Previous value: -[
      -  "slug",
      -  "kind",
      -  "title",
      -  "summary",
      -  "publisher",
      -  "version",
      -  "body",
      -  "fields",
      -  "approvedBy",
      -  "publishedAt",
      -  "standing"
      -]New value: +[
      +  "slug",
      +  "kind",
      +  "title",
      +  "summary",
      +  "publisher",
      +  "version",
      +  "body",
      +  "fields",
      +  "approvedBy",
      +  "publishedAt",
      +  "standing",
      +  "files"
      +]
    • addedOutput schema / properties / packages / items / properties / files
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "content": {
      +            "type": "string"
      +          },
      +          "path": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "path",
      +          "content"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "a folder package's documents by path; null for one document or knowledge item"
      +}
    • changedOutput schema / properties / packages / items / required
      Previous value: -[
      -  "slug",
      -  "kind",
      -  "title",
      -  "summary",
      -  "publisher",
      -  "version",
      -  "body",
      -  "fields",
      -  "approvedBy",
      -  "publishedAt",
      -  "standing"
      -]New value: +[
      +  "slug",
      +  "kind",
      +  "title",
      +  "summary",
      +  "publisher",
      +  "version",
      +  "body",
      +  "fields",
      +  "approvedBy",
      +  "publishedAt",
      +  "standing",
      +  "files"
      +]
  8. Added

TDQS

A4.6/5.0
Behavior5/5

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

The description adds substantial behavior beyond annotations: public visibility of comments/ratings/reports, refusal after reading organization documents, approval-link flow for proposals, wait registration, and mount behavior including what is not copied. These are important side effects and constraints for an open-world destructive write tool. It does not contradict 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.

Conciseness4/5

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

The description is dense but appropriately sized for nine actions and 25 parameters. It front-loads the public-content scope and safety constraints before the action list. Some action entries are run-on or repetitive, but almost every clause carries useful operational detail.

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?

Given the complexity, annotations, and output schema, the description is complete enough to call correctly. It covers all actions, public privacy constraints, approval semantics, and important defaults. Remaining details such as seat, why, acting_as, and idempotency_key are documented in the schema.

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?

With 100% schema description coverage, the schema already documents parameters well. The description still adds value by mapping each action to its expected arguments and explaining defaults such as follow: latest, folder-package landing as scope/slug, and mount's default location. It does not cover every parameter, but it meaningfully supplements the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resources: the public registry of approved packages and public GitHub context files. It lists all nine actions and clearly scopes the tool to public content, distinguishing it from organization-document tools. The opening phrase is broad, but the immediate parenthetical and action list make the purpose concrete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Each action is described with its intended use, such as pull vs add vs follow, and mount vs report. The description also gives a key exclusion: public comments, ratings, and reports are refused from sessions that have read the organization's documents. It does not explicitly name sibling tools as alternatives, but the usage context is clear.

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