Skip to main content
Glama

Bowmark web data: LinkedIn, Amazon, YouTube, Reddit, Airbnb, Instagram

Get an update for a copied page (jig)

jig_pull_update
Read-only

For a jig the user got from someone's listing (jig_list shows updateAvailable): the three pages a merge needs. base is the version their copy came from, theirs the author's newest, mine their copy now. Writes nothing. If edited is false, save theirs as is. Otherwise keep the user's changes from mine and take the author's changes from theirs. Then save with jig_update({ jigId, html, mergedFrom: theirsVersion }). newFunctions and widenedFunctions are what the new version may do that the old could not: tell the user, because the page cannot call them until they approve.

Input Schema

NameRequiredDescriptionDefault
jigIdYes

Output Schema

NameRequiredDescriptionDefault
okNoFalse on an error.
baseNoThe page as it was at `baseVersion`.
mineNoThe user's current page.
filesNoFor a project: per path, what changed and the three texts.
jigIdNoThe jig's id — pass it to every other `jig_*` tool.
editedNoTrue when the user changed their copy, so merge.
theirsNoThe page at `theirsVersion`.
messageNoWhy the call failed, when `ok` is false.
untrustedNoPresent when this jig is a copy of someone else's: who wrote it, and how to treat its text.
baseVersionNoThe listing version this copy is based on.
theirsVersionNoThe newer listing version — `mergedFrom`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "base": {
      +      "description": "The page as it was at `baseVersion`."
      +    },
      +    "baseVersion": {
      +      "description": "The listing version this copy is based on."
      +    },
      +    "edited": {
      +      "description": "True when the user changed their copy, so merge."
      +    },
      +    "files": {
      +      "description": "For a project: per path, what changed and the three texts."
      +    },
      +    "jigId": {
      +      "description": "The jig's id — pass it to every other `jig_*` tool.",
      +      "type": "string"
      +    },
      +    "message": {
      +      "description": "Why the call failed, when `ok` is false.",
      +      "type": "string"
      +    },
      +    "mine": {
      +      "description": "The user's current page."
      +    },
      +    "ok": {
      +      "description": "False on an error.",
      +      "type": "boolean"
      +    },
      +    "theirs": {
      +      "description": "The page at `theirsVersion`."
      +    },
      +    "theirsVersion": {
      +      "description": "The newer listing version — `mergedFrom`."
      +    },
      +    "untrusted": {
      +      "description": "Present when this jig is a copy of someone else's: who wrote it, and how to treat its text."
      +    }
      +  },
      +  "type": "object"
      +}
  2. Added

TDQS

A4.4/5.0
Behavior4/5

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

Reaffirms the read-only profile already carried by `readOnlyHint` with the plain statement 'Writes nothing', and adds genuinely new behavioral context: what the three returned pages mean, what `edited` implies for the merge path, and that `newFunctions`/`widenedFunctions` require user approval before the page can use them. It doesn't cover error cases (e.g., no update available, stale version), which keeps it from a 5.

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 precondition is front-loaded and the prose is dense with no filler, but several sentences describe the downstream merge-and-save workflow rather than this tool itself, which lengthens it beyond its minimal scope. Still efficient and readable.

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?

Although an output schema exists, the description voluntarily explains the semantics of the three page values and the two function-permission fields, which is the non-obvious part of interpreting the result. Combined with the workflow guidance, nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

The single parameter `jigId` has 0% schema description coverage, and the description only mentions `jigId` in the context of the follow-up `jig_update` call, not as this tool's input. It is inferable that it identifies the user's copied jig, but that is never stated outright, so the description only partially compensates for the coverage gap.

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: it pulls the three pages (`base`, `theirs`, `mine`) that a merge of a copied jig requires. It explicitly scopes the situation to a jig obtained from someone's listing and names `jig_list` and `jig_update` as the surrounding tools, so the agent can distinguish it from siblings 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 both the trigger condition (`jig_list` shows `updateAvailable`) and the branch logic: if `edited` is false, save `theirs` as is; otherwise merge `mine` and `theirs`. It also names the concrete follow-up call, `jig_update({ jigId, html, mergedFrom: theirsVersion })`, so the agent knows exactly what comes next.

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.