Skip to main content
Glama

BotSpot: AI Trading, Backtests and Bots

Create a strategy file

create_file
Destructive

Creates a file in a new immutable revision for any strategy owned by the authenticated user. For the current attached workspace, omit strategyId and revisionId. When create_strategy attaches the workspace through conversationUpdate, these defaults also apply to new first-build files. If creation returned no conversationUpdate, copy the exact returned strategyId/revisionId pair. Provide exactly one of content or attachment. For user-requested exact upload import, use attachment: {messageId, attachmentId} from attachments(action="list"); the server preserves original UTF-8 bytes and returns size/hash evidence. Read the new file back with get_file. Do not invent unavailable upload contents or import files without user intent. Use only for files that do not already exist; do not use this to update main.py or requirements.txt after create_strategy. Use replace_file for replacing an existing file and patch_file for small exact edits. For plan-driven first-build work, make the visible implementation item in_progress with update_plan_item before using file tools so the user sees the current plan step while file work runs. Use paths like lib/helpers.py or data/symbols.csv for folders. Default to the active strategy unless the user explicitly asks for another owned strategy.

Input Schema

NameRequiredDescriptionDefault
pathYes
contentNo
attachmentNoExact original upload to import instead of model-transcribed content. Use only when the user requested this import.
revisionIdYesBase revision ID to snapshot from
strategyIdYes
descriptionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

With only destructiveHint=true in annotations, the description carries real weight: it explains immutable-revision snapshotting, the exactly-one-of content/attachment rule, the fact that the server preserves original UTF-8 bytes and returns size/hash evidence, and that the caller must not invent upload contents. What it does not do is state what the destructive hint means operationally (e.g. that a new revision is snapshotted from revisionId and prior revision state is frozen), which an agent might want.

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?

Core behavior is front-loaded, but the passage is long and carries a paragraph about marking a plan item in_progress via update_plan_item that is workflow advice rather than tool behavior, plus partially redundant cautions ('Do not invent unavailable upload contents...'). Several sentences could be trimmed or deferred to the plan tool's own definition.

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 a six-parameter mutation tool with no output schema, it covers routing, defaults, return evidence, and read-back via get_file. It omits the 5MB content cap (a real constraint for generation) and the meaning of the 'description' property, which are the remaining completeness gaps.

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 only 33%, but the description compensates substantially: it gives the strategyId/revisionId default rule (omit for the active workspace, copy the exact returned pair when no conversationUpdate), the content-vs-attachment exclusivity, the attachment source via attachments(action="list"), and concrete path shapes like lib/helpers.py. The 6th parameter, 'description' (max 2000 chars), is never mentioned, leaving a small 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 and resource with scope: 'Creates a file in a new immutable revision for any strategy owned by the authenticated user.' It explicitly distinguishes itself from the closest siblings ('Use replace_file for replacing an existing file and patch_file for small exact edits') and from get_file as the read path.

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?

Explicit when-to-use (new files only, plan-driven first-build work), when-not-to-use ('do not use this to update main.py or requirements.txt after create_strategy'), and named alternatives (replace_file, patch_file). It also names the exact conditions for the attachment import path and the user-intent prerequisite.

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.