Skip to main content
Glama

penny_start_setup

Idempotent

Setup in phases; omit phase to start, resume from meta.onboarding.phase. skipForGood opts out. Stage an encrypted import, show showUser, then save or discard as the user says. While an import is open, finish can't complete setup.

Input Schema

NameRequiredDescriptionDefault
stopNoTour stop, with phase tour.
phaseNoPhase to run; omit to start.
clientNoActual host: claude-desktop, claude-web, claude-code, codex, chatgpt, gemini, perplexity, grok (web only), grok-bot or other; tailors paste guidance.
countsNoCumulative answers/featuresCreated. Ledger imports ignore imported; only committed receipts count.
draftIdNoReturned draft ID.
dropItemIdsNosave: dropped ids (values of items).
importDraftNoStrict JSON {notes,profiles}; returned schema. 10 notes, 4 replacements, 64 KiB UTF-8.
keepItemIdsNosave: left-out ids the user kept.
skipForGoodNoUser requested permanent setup opt-out.
importActionNoAll but status need draftId and expectedRevision; stage also importDraft. status re-sends the list.
prevAcceptedNoDid the user accept the previous tour stop's offer?
expectedRevisionNoReturned revision.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / client / description
      Previous value: -"Actual host: claude-desktop, claude-web, claude-code, codex, chatgpt, gemini, perplexity or other; tailors paste guidance."New value: +"Actual host: claude-desktop, claude-web, claude-code, codex, chatgpt, gemini, perplexity, grok (web only), grok-bot or other; tailors paste guidance."
  2. Changed1 schema field changed
    • changedInput schema / properties / client / description
      Previous value: -"Actual host: claude-desktop, claude-code, codex, chatgpt or other; tailors paste guidance."New value: +"Actual host: claude-desktop, claude-web, claude-code, codex, chatgpt, gemini, perplexity or other; tailors paste guidance."
  3. Changed7 schema fields changed
    • changedInput schema / properties / draftId / description
      Previous value: -"Returned collection ID; stage only."New value: +"Returned draft ID."
    • addedInput schema / properties / dropItemIds
      Added value: +{
      +  "description": "save: dropped ids (values of items).",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / expectedRevision / description
      Previous value: -"Returned revision; stage only."New value: +"Returned revision."
    • changedInput schema / properties / importAction / description
      Previous value: -"Stage needs importDraft, draftId, expectedRevision. Status has no content. No model approval."New value: +"All but status need draftId and expectedRevision; stage also importDraft. status re-sends the list."
    • changedInput schema / properties / importAction / enum
      Previous value: -[
      -  "stage",
      -  "status"
      -]New value: +[
      +  "stage",
      +  "status",
      +  "save",
      +  "discard"
      +]
    • changedInput schema / properties / importDraft / description
      Previous value: -"Strict JSON {notes,profiles}; returned schema. 10 notes, 4 replacements, 64 KiB UTF-8. No approval/source/selection."New value: +"Strict JSON {notes,profiles}; returned schema. 10 notes, 4 replacements, 64 KiB UTF-8."
    • addedInput schema / properties / keepItemIds
      Added value: +{
      +  "description": "save: left-out ids the user kept.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  4. Changed4 schema fields changed
    • changedInput schema / properties / client / description
      Previous value: -"Actual host: claude-desktop, claude-code, codex, chatgpt or other. Also tailors paste guidance."New value: +"Actual host: claude-desktop, claude-code, codex, chatgpt or other; tailors paste guidance."
    • changedInput schema / properties / counts / description
      Previous value: -"Cumulative answers/featuresCreated. imported is ignored for ledger imports; only committed receipts count."New value: +"Cumulative answers/featuresCreated. Ledger imports ignore imported; only committed receipts count."
    • changedInput schema / properties / prevAccepted / description
      Previous value: -"Whether the user took the previous tour stop's offer."New value: +"Did the user accept the previous tour stop's offer?"
    • changedInput schema / properties / skipForGood / description
      Previous value: -"The user said to skip setup for good."New value: +"User requested permanent setup opt-out."
  5. Changed10 schema fields changed
    • changedInput schema / properties / client / description
      Previous value: -"Optional client hint: 'claude-desktop' | 'chatgpt' | 'claude-web' | other. Tailors the snippet's where-to-paste guidance."New value: +"Actual host: claude-desktop, claude-code, codex, chatgpt or other. Also tailors paste guidance."
    • addedInput schema / properties / counts
      Added value: +{
      +  "description": "Cumulative answers/featuresCreated. imported is ignored for ledger imports; only committed receipts count.",
      +  "properties": {
      +    "answers": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "featuresCreated": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "imported": {
      +      "minimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / draftId
      Added value: +{
      +  "description": "Returned collection ID; stage only.",
      +  "type": "string"
      +}
    • addedInput schema / properties / expectedRevision
      Added value: +{
      +  "description": "Returned revision; stage only.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / importAction
      Added value: +{
      +  "description": "Stage needs importDraft, draftId, expectedRevision. Status has no content. No model approval.",
      +  "enum": [
      +    "stage",
      +    "status"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / importDraft
      Added value: +{
      +  "description": "Strict JSON {notes,profiles}; returned schema. 10 notes, 4 replacements, 64 KiB UTF-8. No approval/source/selection.",
      +  "type": "string"
      +}
    • addedInput schema / properties / phase
      Added value: +{
      +  "description": "Phase to run; omit to start.",
      +  "enum": [
      +    "start",
      +    "import",
      +    "gaps",
      +    "tour",
      +    "finish"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / prevAccepted
      Added value: +{
      +  "description": "Whether the user took the previous tour stop's offer.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / skipForGood
      Added value: +{
      +  "description": "The user said to skip setup for good.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / stop
      Added value: +{
      +  "description": "Tour stop, with phase tour.",
      +  "maximum": 4,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  6. First observed

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare non-read-only, idempotent, non-destructive, closed-world, so the description adds value via the sequencing constraint ("while an import is open, finish can't complete setup") and the encrypted-import staging flow, which are genuine behavioral facts. It still leaves unclear what persisting side effects phases like finish, gaps or skipForGood produce, and 'discard' silently dropping a staged import sits in mild tension with destructiveHint=false.

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?

Four short sentences with little filler and the invocation rule front-loaded, which is efficient. However the telegraphic style ("skipForGood opts out", "show showUser") packs jargon without explaining it, so brevity comes at the cost of parseability.

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

Completeness2/5

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

For a 12-parameter, five-phase state machine with nested objects and no output schema, the description is thin: it does not explain what the gaps or tour phases do, what stop/prevAccepted drive, how counts/ledger imports behave, or what each phase returns. Given the completeness burden this complex a tool places on the description, material gaps remain.

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?

Schema coverage is 100%, including enums for phase and importAction and inline notes on expectedRevision and importDraft limits, which sets the baseline at 3. The description largely restates schema facts (omit phase to start, skipForGood opts out) and adds no new meaning for draftId, counts, stop, prevAccepted, or the keep/drop item ID pairs.

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

Purpose3/5

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

The description frames a phased onboarding state machine ("Setup in phases", "omit phase to start, resume from meta.onboarding.phase") so an agent can infer it drives setup progression, but it never states plainly what the tool does at the top level (start onboarding, run a phase, or manage an import draft). Terms like "showUser" and "meta.onboarding.phase" are undefined and the verb/resource pairing is vague.

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

Usage Guidelines3/5

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

It gives real invocation guidance: omit phase to start, resume from meta.onboarding.phase, skipForGood opts out, and the import sequence stage -> show -> save/discard. It offers no differentiation from the siblings (penny_session_start, penny_write, penny_read), so an agent has no cue about when to pick this over starting a session.

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