Skip to main content
Glama

crpt_add_cabinet

Idempotent

Add or update a named set of API credentials from chat; requires explicit confirmation because the key appears in the transcript. Use installer for terminal-free entry.

Instructions

Add or update a cabinet (a named set of API credentials), from chat.

⚠️ This puts the key into the chat transcript — requires i_understand_key_goes_to_chat=true. The terminal-free safe alternative is the installer (install.py / double-click), where the key never enters chat.

Args: credentials: dict with the required fields for this service ({fields}). For Ozon: {{"client_id": "...", "api_key": "..."}}; for WB: {{"token": "..."}}. name: optional label. If omitted, the cabinet is named after the real shop name fetched from the marketplace (falls back to "main"). i_understand_key_goes_to_chat: must be true to proceed. Saved to ~/.marketplace-mcp/cabinets.json (local, chmod 600), never echoed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
credentialsYes
i_understand_key_goes_to_chatNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.5/5.0
Behavior5/5

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

Even though annotations already flag a non-read-only, idempotent mutation, the description adds substantial context: the key enters the chat transcript, a consent flag is required, the data is persisted to ~/.marketplace-mcp/cabinets.json with chmod 600, and the value is never echoed back. This is rich, non-obvious behavioral disclosure.

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 safety warning is correctly front-loaded, and the structured Args block is easy to scan. It is somewhat verbose and includes a raw template placeholder '({fields})', but for a security-sensitive mutation the length is largely justified.

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?

An output schema exists so return values need not be spelled out, and the description still covers persistence location, permissions, non-echo behavior, and the consent requirement. Nothing an agent needs to invoke this tool correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the load, and it does: it documents all three parameters, gives concrete credential shapes per service (Ozon client_id/api_key, WB token), explains the name fallback behavior, and states the consent flag must be true.

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

Purpose4/5

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

The description states a specific verb and resource and even defines the domain term: 'Add or update a cabinet (a named set of API credentials), from chat.' This is far from tautological. However, it never explicitly distinguishes itself from sibling tools like crpt_set_key or crpt_use_cabinet, so an agent must infer the boundary.

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?

It gives a clear when-to-use ('from chat') and names an explicit alternative path (install.py / double-click) with the condition that selects it (the key never enters chat). It does not, however, position itself against the sibling cabinet/key tools, so the in-server routing guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.