Skip to main content
Glama

BotSpot: AI Trading, Backtests and Bots

Share accounts and strategies with people or a link

private_share_link
Destructive

Use list_access to read people (email, name, invited/active), restricted/anyone link access, the stable copyable link, what viewers see and Marketplace state. invite and remove_viewer manage view-only people; set_access changes restricted/anyone access; reset explicitly invalidates the old link; preview opens the normal account or strategy page with viewer data only. Reading/copying never rotates a link. There are no sharing passwords or payment requirements. Existing create/revoke remain compatible.

Set "action" to choose the operation. Only send the fields listed for that action.

Required fields: publicationId. Issues a high-entropy bearer link for one explicit publication. Reopening returns the same link; only an explicit rotation changes it. Anyone with the link can forward it; use private_share_link(action="revoke") to invalidate it. Links use the secret URL and stored access permissions, never an extra password. New links have no extra password. Expiry, revocation and named-recipient permissions still apply.

Required fields: publicationId. Immediately invalidates the bearer link for exactly one owner publication.

Required fields: publicationId. Owner-only sharing, using the same service as the website. People are viewers, never traders. Restricted access requires an invited sign-in; anyone access permits forwarding the secret link. Account viewers use a free sign-in, never checkout. Copying or reading access never changes a link. Only reset changes it and immediately invalidates the old link. No sharing password exists. An invite saves access without sending an email. Active means the email has a registered account; invited means it can register later. Responses include the people list, link access and stable URL, permitted performance/positions/filled trades, Marketplace listing state and the canonical viewer preview URL.

action="invite": Invite people to view

Required fields: publicationId, emails.

action="remove_viewer": Remove a viewer

Required fields: publicationId, email.

Required fields: publicationId, linkAccess.

Required fields: publicationId.

action="preview": Preview the normal page as a viewer

Required fields: publicationId.

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": {
      "action": "<action>"
    },
    "name": "private_share_link"
  }
}

Input Schema

NameRequiredDescriptionDefault
emailNoUsed with action="remove_viewer". Required for action="remove_viewer".
actionYesWhich operation to run: "create", "revoke", "list_access", "invite", "remove_viewer", "set_access", "reset", "preview". See the tool description for each one.
emailsNoUsed with action="invite". Required for action="invite".
rotateNoInvalidate the prior token and issue a new one. Used with action="create".
expiresAtNoOptional ISO-8601 expiration. Must be in the future. Used with action="create".
linkAccessNoUsed with action="set_access". Required for action="set_access".
publicationIdNoUsed with action="create", action="revoke", action="list_access", action="invite", action="remove_viewer", action="set_access", action="reset", action="preview". Required for action="create", action="revoke", action="list_access", action="invite", action="remove_viewer", action="set_access", action="reset", action="preview".
recipientEmailNoRestrict access to one authenticated existing BotSpot user. Used with action="create".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"Which operation to run: \"create\", \"revoke\". See the tool description for each one."New value: +"Which operation to run: \"create\", \"revoke\", \"list_access\", \"invite\", \"remove_viewer\", \"set_access\", \"reset\", \"preview\". See the tool description for each one."
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "create",
      -  "revoke"
      -]New value: +[
      +  "create",
      +  "revoke",
      +  "list_access",
      +  "invite",
      +  "remove_viewer",
      +  "set_access",
      +  "reset",
      +  "preview"
      +]
    • addedInput schema / properties / email
      Added value: +{
      +  "description": "Used with action=\"remove_viewer\". Required for action=\"remove_viewer\".",
      +  "format": "email",
      +  "maxLength": 320,
      +  "type": "string"
      +}
    • addedInput schema / properties / emails
      Added value: +{
      +  "description": "Used with action=\"invite\". Required for action=\"invite\".",
      +  "items": {
      +    "format": "email",
      +    "maxLength": 320,
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / linkAccess
      Added value: +{
      +  "description": "Used with action=\"set_access\". Required for action=\"set_access\".",
      +  "enum": [
      +    "restricted",
      +    "anyone"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / publicationId / description
      Previous value: -"Used with action=\"create\", action=\"revoke\". Required for action=\"create\", action=\"revoke\"."New value: +"Used with action=\"create\", action=\"revoke\", action=\"list_access\", action=\"invite\", action=\"remove_viewer\", action=\"set_access\", action=\"reset\", action=\"preview\". Required for action=\"create\", action=\"revoke\", action=\"list_access\", action=\"invite\", action=\"remove_viewer\", action=\"set_access\", action=\"reset\", action=\"preview\"."
  2. Changed2 schema fields changed
    • removedInput schema / properties / noPassword
      Removed value: -{
      -  "description": "true shares the link with no password instead of generating one. Used with action=\"create\".",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / password
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 128,
      -      "minLength": 8,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Optional password, 8 to 128 characters. Omit it to get a generated one on a new link. null removes the password. Used with action=\"create\"."
      -}
  3. First observed

TDQS

A3.6/5.0
Behavior4/5

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

With destructiveHint=true already flagging risk, the description still adds genuinely useful behavior: anyone holding the link can forward it, reading/copying never rotates it, invites are saved without sending email, viewers use a free sign-in (never checkout), and no sharing password exists. The one blemish is an internal inconsistency: list_access states 'Only reset changes it,' while the create action is described as 'Create or rotate' and the schema exposes a rotate flag that also invalidates the prior token.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

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

The per-action section layout is good and front-loaded with the list_access summary, but the text is heavily padded: the no-password claim appears at least three times, 'reading/copying never changes a link' twice, and 'immediately invalidates the old link' twice. Several sentences across actions could be stated once in a shared preamble.

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

Completeness4/5

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

For an eight-parameter, eight-action dispatch tool with no output schema, the definition covers access model, rotation semantics, recipient states, and even what list_access returns. Remaining gaps are the return shapes of the non-list actions and explicit coverage of the optional create parameters, which is minor but non-trivial for a destructive tool.

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% and the schema already labels each parameter with its action, so the description's per-action 'Required fields' lists mostly restate structured data. It adds some framing ('only send the fields listed for that action') but never names the optional create-time parameters (rotate, expiresAt, recipientEmail) whose behavior is only obliquely hinted at via 'explicit rotation', 'Expiry', and 'named-recipient permissions'.

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 names the resource (private account/strategy links and viewer access) and enumerates every action with a specific verb, so an agent knows what each dispatch value does. It falls short of a 5 because it never distinguishes this tool from the adjacent strategy_share_link or account siblings, and the trailing line 'Existing create/revoke remain compatible' references legacy behavior without explaining relation to those siblings.

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 explicit per-action routing ('use private_share_link(action="revoke") to invalidate it') plus an operational rule: 'Set "action" to choose the operation. Only send the fields listed for that action.' What's missing is an exclusion rule for when to prefer a sibling sharing tool over this one; guidance is strong internally but silent on external alternatives.

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.