Skip to main content
Glama

muninn_table_publish

DestructiveIdempotent

Publish a table's records as a live public data feed and page - use when the user says publish this table, share this table, put this board online, give me a URL for this data, or wants a chart or dashboard to read a table without an agent copying it. Returns an unguessable munn.is link that serves the named fields as JSON at /raw and as a rendered table at . The copy stays LIVE: adding or editing a record updates what the link serves. YOU MUST NAME THE FIELDS - there is no way to publish every field, a field added later stays out until you publish again naming it, and a field marked private is refused. Records are capped at 1000 and a large table finishes assembling over one or more muninn_table_refresh calls. Optionally pass name for a readable address under the user's handle (a new name needs the Paid plan; the token link is free), password to gate it, and expiresAt to make it stop. muninn_table_unpublish revokes it.

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": {
      "tableSlug": "<tableSlug>",
      "fields": "<fields>"
    },
    "name": "muninn_table_publish"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoOptional readable name, e.g. 'worklist' - becomes <handle>.munn.is/worklist. Letters, numbers and hyphens only. A new or changed name needs the Paid plan; publishing itself does not. Publishing still succeeds if the name is rejected.
fieldsYesThe exact field keys to publish, in the order the page shows them. Required, with no wildcard: this is the allowlist, and it is the whole safety of the feature. Private fields are refused by name.
passwordNoOptional password a reader must type before the page opens, and before /raw answers. Only pass one the user actually stated. It can never be read back - say it to the user now.
expiresAtNoOptional ISO 8601 moment the feed stops serving. Pass null to remove an existing expiry.
tableSlugYesWhich table to publish.

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 declare the safety profile (destructiveHint=true, openWorldHint=true, idempotentHint=true), but the description adds substantial context the annotations cannot convey: the link is unguessable, the copy is LIVE and tracks edits, private fields are refused by name, records are capped at 1000, large tables assemble over one or more muninn_table_refresh calls, a new/changed name needs the Paid plan, and the password can never be read back. These are exactly the operational facts an agent needs before invoking.

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 purpose, then triggers, then return shape, then the hard constraint, then optional params - a sensible information order with essentially no filler. It runs long as a single dense block, and the return-format and constraint sentences could be tightened, but every sentence carries weight.

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 mutation tool with no output schema, the description covers what it produces (unguessable link, /raw JSON, rendered table), lifecycle behavior (live updates, expiry, password gating, unpublish), limits (1000 records, async assembly), and failure modes (private fields refused, name rejected). 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 coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by hammering the safety-critical `fields` semantics ("YOU MUST NAME THE FIELDS - there is no way to publish every field, a field added later stays out until you publish again") and by clarifying that publishing still succeeds if a `name` is rejected and that a password cannot be retrieved. Some of this overlaps the schema text, keeping it short of 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+resource ("Publish a table's records as a live public data feed and page") and immediately distinguishes itself from siblings by naming muninn_table_unpublish as the revoke counterpart and by describing the URL/JSON output that no other sibling produces. An agent can route here versus muninn_artifact_publish without opening a 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?

Gives explicit natural-language triggers ("publish this table, share this table, put this board online, give me a URL for this data") plus the intent case (a chart/dashboard reading the table without an agent copying it). It also names the inverse tool, muninn_table_unpublish, and states a clear constraint (no wildcard, must name fields), which functions as a when-not condition.

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