Premiss
Server Details
Create Python strategies and backtest crypto, stocks and ETFs in Claude. Premiss account required.
- Status
- Healthy
- Uptime
- 100.0% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 13 tools
Most tools target a clearly distinct resource+action (create/get/update strategy, start_backtest, search_markets vs describe_market). The only mild overlaps are get_run_data vs get_run_report (records vs status/report) and get_strategy vs get_strategy_guide (user code vs API documentation), but the descriptions distinguish these well.
All 13 tools use snake_case with a predictable verb_noun pattern (create_strategy, get_strategy, update_strategy, list_research, save_research_note, start_backtest, search_markets, describe_market, get_run_data). No convention mixing or ambiguity introduced by naming.
13 tools is well-scoped for a strategy authoring, research, and backtesting platform. Each tool maps to a distinct capability (strategy CRUD, market discovery, run inspection, notes, capabilities/profile) with no fat.
The strategy lifecycle covers create/get/update/list but lacks delete, and research notes cover save/list but have no get/update/delete, so agents hit dead ends for cleanup. Core research and run workflows (search/describe markets, start_backtest, get_run_report/data, guide) are otherwise well covered.
Available Tools
13 toolscreate_strategySave a strategyAIdempotentInspect
Save a new private strategy using custom Python files and complete rules text, on any Premiss-supported market and timeframe. Accepts either files (strategy.py plus helper modules) and rules, or a convenience template. Uses the same package format as the app. Returns code and revision; saving does not run a backtest.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| files | No | ||
| rules | No | ||
| symbol | Yes | ||
| interval | Yes | ||
| template | No | ||
| request_key | Yes | Idempotency UUID identifying one requested write and its unchanged arguments. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| files | No | |
| rules | Yes | |
| venue | No | |
| symbol | Yes | |
| app_url | Yes | |
| version | Yes | |
| interval | Yes | |
| revision | Yes | |
| template | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: the save is private, it returns code and revision, and notably 'saving does not run a backtest', which prevents the agent from expecting backtest output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and scope, then the input modes, then the side-effect clarification. No filler and no repetition of schema or annotation content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the complex parts an agent needs: dual input paths, the package-format compatibility, and the fact that no backtest is triggered. Output schema exists so return values needn't be detailed, though the description adds that anyway. Missing only minor points such as whether files and template are mutually exclusive or whether name must be unique.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14%, so the description has to carry the load. It clarifies the files-vs-template alternative and the shape of files ('strategy.py plus helper modules'), but leaves symbol, interval, name, and the four required rules fields (watches/buys/sells/safety) unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Save a new private strategy') plus scope ('any Premiss-supported market and timeframe'), and the word 'new' implicitly separates it from the sibling update_strategy. An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing between the two input modes ('Accepts either files ... and rules, or a convenience template'), which is the main usage decision for this tool. It stops short of an explicit when-not or a direct comparison against update_strategy/start_backtest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_marketCheck market coverageBRead-onlyIdempotentInspect
Return supported timeframes, available history and data limitations for a market id.
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| notes | Yes | |
| active | Yes | |
| market | Yes | |
| symbol | Yes | |
| currency | Yes | |
| exchange | Yes | |
| intervals | Yes | |
| assetClass | Yes | |
| availableTo | Yes | |
| availability | Yes | |
| availableFrom | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that data limitations are surfaced, which is genuine behavioral context, but says nothing about rate limits, auth, error behavior on unknown ids, or whether missing data is returned as null vs omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first and no filler; every clause maps to a distinct piece of returned information. It is efficient, though terse enough that it forgoes routing guidance it could have carried in the same sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 no elaboration, and annotations carry the safety profile, which lowers the bar. Still missing is the one thing an agent needs operationally: where the market id comes from (search_markets) and how to interpret a failure for an unsupported market.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage, so the schema does no work here. The description's phrase 'for a market id' is the only signal that the string is an identifier rather than a free-text name, and it gives no format, length, or provenance (e.g., obtained from search_markets), leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Return') and a precise payload (supported timeframes, available history, data limitations) scoped to a market id. It is clearly distinguishable from search_markets in intent, but it never names or contrasts a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is a pre-flight metadata check before a backtest, but the description states no when-to-use condition, no prerequisite, and no alternative. It neither says 'call this before start_backtest' nor warns against using it in place of search_markets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesPremiss capabilitiesARead-onlyInspect
Read this connection's available tools and supported research coverage. Does not read account data, save research, or run a simulation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| available | Yes | |
| release_stage | Yes | |
| research_scope | Yes | |
| schema_version | Yes | |
| available_tools | Yes | |
| unavailable_operations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds a scope clarification ('does not read account data') that meaningfully narrows the tool to connection metadata, but the remaining negatives largely restate what the annotations already imply. No auth, rate-limit, or output-format context is added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, and the positive statement of what is returned is front-loaded before the boundary disclaimers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 described, and annotations carry the safety profile. For a zero-parameter read-only discovery tool the description is nearly sufficient, though a positive cue about when to invoke it (e.g., before calling other Premiss tools) would close the last gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to clarify about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and a specific resource (this connection's available tools and supported research coverage). It distinguishes the tool from data-producing siblings through the explicit disclaimers, though it does not name an alternative sibling by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The negative clauses ('does not read account data, save research, or run a simulation') route the agent away from get_profile, save_research_note, and start_backtest, but they never state positively when to call this tool first (e.g., as a discovery step). Usage is implied rather than explicit, and no alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profilePremiss connected workspaceARead-onlyIdempotentInspect
Read the stable identity and workspace selected for this connection. Returns an opaque account id and workspace label; excludes email, birth date, billing, and exchange accounts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| app_url | Yes | |
| workspace | Yes | |
| permissions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description goes beyond them by disclosing the data-minimization boundary (excludes email, birth date, billing, exchange accounts), which usefully stops an agent from fishing here for user PII.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first gives the purpose and selection scope, the second gives the returned shape and the exclusions. Front-loaded, zero filler, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-field detail need not live in the description, and annotations cover behavior; a zero-param read tool needs little more. The exclusions sentence adds the one thing the structured fields don't convey, leaving only minor mapping detail (account id vs. workspace label) to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate — the baseline of 4 applies. The description correctly implies the connection itself selects the identity, with no caller-supplied arguments needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb ('Read') and resource ('stable identity and workspace selected for this connection'), and adds scope qualifiers ('stable', 'for this connection') that pin down exactly which identity is returned. No sibling tool competes for this purpose, so an agent can route to it unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent infers it should call this when it needs to know which account/workspace the connection is bound to. There is no explicit when-to-use statement, no prerequisites, and no alternatives named (none exist among the siblings, so the cost is low).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_run_dataRead backtest code, trades or equityARead-onlyIdempotentInspect
Read the immutable tested Python package, or page through all recorded trades or equity points for an owned run. next_cursor identifies the next page; page size is not a history cap. Paper data requires separate paper:read permission. Saved code is user-authored content.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| cursor | No | ||
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| files | No | |
| equity | No | |
| run_id | Yes | |
| trades | No | |
| revision | Yes | |
| next_cursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the description is not the sole source. It still adds real context: pagination mechanics ('next_cursor identifies the next page; page size is not a history cap'), the separate paper:read permission requirement, and the provenance caveat that saved code is user-authored content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the primary action before paging and permission details. Nothing is padding, though 'immutable tested Python package' is slightly jargon-heavy for a code payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations carry the safety profile; the description covers auth scope, pagination, and content trust. It stops short of defining 'owned run' or failure behavior, which leaves only minor gaps for a 4-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it only partly does. It explains kind (code/trades/equity), that the cursor value is the next-page token, and that limit bounds page size rather than total history, but run_id - a required parameter - receives no explanation at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource set - read code, page through trades or equity points - and scopes it to 'an owned run', which separates it from get_run_report and get_strategy. An agent can tell from the text alone which of the three data kinds this call serves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the kind enum and the phrase 'for an owned run', but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as get_run_report for summaries. The paper:read permission hint is a prerequisite, not a selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_run_reportRead historical or paper evidenceARead-onlyIdempotentInspect
Read the status and bounded performance report for one run in the connected workspace. Returns the tested market, interval, revision, and recorded rules when verifiable. Historical plugin runs include the paired buy-and-hold baseline when completed. Paper reads require paper:read and do not start, stop, qualify, or modify a bot. Legacy runs without supported assumptions are labeled. Does not return raw market feeds.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| error | No | |
| venue | Yes | |
| end_ts | Yes | |
| run_id | Yes | |
| status | Yes | |
| symbol | Yes | |
| app_url | Yes | |
| last_ts | Yes | |
| metrics | Yes | |
| baseline | Yes | |
| interval | Yes | |
| revision | Yes | |
| start_ts | Yes | |
| assumptions | Yes | |
| limitations | Yes | |
| strategy_id | Yes | |
| tested_rules | Yes | |
| engine_version | Yes | |
| strategy_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real substance on top: the paper:read permission requirement, that legacy runs without supported assumptions are labeled, that historical plugin runs include a paired buy-and-hold baseline, and what is deliberately not returned (raw market feeds).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then layered with progressively finer qualifications (returned fields, baseline, auth, exclusions). Every sentence carries distinct information; nothing is restated from the annotations or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 enumerated, yet the description still summarizes the payload shape. Auth requirements, run-type handling, and negative scope are all covered, leaving nothing essential for a correct call missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single run_id parameter, so the description carries the burden. It only implies that run_id refers to 'one run in the connected workspace' and never clarifies the identifier's form or whether it spans plugin, paper, and legacy runs, which is a real gap given the run-type distinctions it draws elsewhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb and resource ('Read the status and bounded performance report for one run') and draws a scope boundary against raw feeds. It never names the sibling it is closest to (get_run_data), so an agent must infer the split from the 'bounded' vs. raw-feed wording rather than being told explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: read-only inspection of a completed run, with historical plugin vs. paper reads distinguished, and explicit exclusions ('do not start, stop, qualify, or modify a bot'). No alternative tool is named for cases where the agent wants raw data or a different run view, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_strategyRead a saved strategyARead-onlyIdempotentInspect
Read a saved strategy's current revision and human-readable rules in the connected workspace. Returns the complete Python package for review or editing. Code and comments are user-authored content.
| Name | Required | Description | Default |
|---|---|---|---|
| strategy_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| files | No | |
| rules | Yes | |
| venue | No | |
| symbol | Yes | |
| app_url | Yes | |
| version | Yes | |
| interval | Yes | |
| revision | Yes | |
| template | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing that the return is a full Python package and flagging code/comments as user-authored content, which is a meaningful caution for an agent consuming untrusted text. It stops short of stating auth requirements or behavior when the strategy_id does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core action front-loaded and no filler. The 'Code and comments are user-authored content' note earns its place as a safety-relevant caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not strictly required, yet the description still summarizes the payload shape usefully. Combined with annotations covering the safety profile, an agent has nearly everything needed, with only parameter sourcing left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single strategy_id parameter has only type and length constraints, so the description must carry semantic weight. It implies the identifier selects 'a saved strategy in the connected workspace' but adds no format, provenance, or how-to-obtain guidance beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a saved strategy's current revision and human-readable rules') and clarifies the payload is a complete Python package. It is clearly distinct from create_strategy and update_strategy by verb, though it never explicitly names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'for review or editing,' which hints at a read-before-update workflow, but there is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives such as get_strategy_guide or update_strategy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_strategy_guideRead the strategy Python APIARead-onlyIdempotentInspect
Read Premiss's Python package format, on_bar API, execution semantics and example. Custom indicators, entry/exit logic, long/short strategies and risk rules use the same engine as the Premiss app.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| guide | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real content beyond that: it enumerates what the guide covers (package format, on_bar API, execution semantics, example) and scopes the engine's applicability, which tells the agent what it is getting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the concrete deliverable and followed by scope context; no filler. Slightly dense but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be explained. For a read-only, parameterless reference tool the description covers purpose, content scope and applicability adequately; only explicit routing guidance versus sibling tools is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline for a no-param tool applies. The description correctly adds no spurious parameter-like detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and a specific resource (Premiss's Python package format, on_bar API, execution semantics, example), so an agent knows this returns reference material rather than strategy data. It is distinguishable from siblings like get_strategy (fetch a strategy) or create_strategy, though it never says so explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied – 'Custom indicators, entry/exit logic, long/short strategies and risk rules use the same engine as the Premiss app' hints that this is the reference to consult before writing strategy code, but there is no explicit when-to-use, prerequisite, or comparison to get_capabilities/get_strategy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_researchFind saved Premiss researchARead-onlyIdempotentInspect
List a page of saved strategies, simulation runs, or research notes in the connected workspace. Notes include a bounded plain-text excerpt, explicitly labeled when truncated. Saved text is user-authored content. Paper runs require the separately approved paper:read permission. Search matches titles; cursors are opaque page positions.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| query | No | ||
| cursor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| items | Yes | |
| next_cursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description goes further by disclosing the paper:read permission prerequisite, that note excerpts are bounded and explicitly labeled when truncated, and that cursors are opaque page positions. These are real operational details the annotations do not convey; a 4 rather than 5 only because rate limits, page-size behavior, and error cases remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five dense sentences, purpose front-loaded, each carrying distinct information (kinds, truncation labeling, permission, query semantics, pagination). No filler, though the excerpt/content sentence sits slightly awkwardly before the permission note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the description adds the permission gate, truncation disclosure, and pagination semantics an agent needs. Only the limit parameter and any per-kind difference in returned content are left thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden, and it does explain 'Search matches titles' for query and 'cursors are opaque page positions' for cursor, and it enumerates the three kind values. However, limit is never mentioned and per-kind matching behavior is left ambiguous, so it 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb (List) plus a specific resource set (saved strategies, simulation runs, or research notes) that maps directly to the kind enum. It implicitly distinguishes itself from get_strategy and save_research_note by framing this as paged enumeration of saved items, but it never names a sibling outright, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Paper runs require the separately approved paper:read permission' and 'Search matches titles' give situational context for two of the kinds, but there is no explicit when-to-use-this-vs-get_strategy/get_run_report guidance and no when-not conditions. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_research_noteSave a research noteAIdempotentInspect
Save a NEW private note in the connected workspace, with optional exact owned strategy/run evidence references. The note is user-authored content. Does not publish or send it anywhere.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| title | Yes | ||
| run_id | No | ||
| revision | No | ||
| request_key | Yes | Idempotency UUID identifying one requested write and its unchanged arguments. | |
| strategy_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| saved | Yes | |
| title | Yes | |
| app_url | Yes | |
| note_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=true with destructiveHint=false, so the bar is lower; the description adds genuine context that the note is private, user-authored, and not published or transmitted. It does not, however, explain the idempotency/request_key or revision behavior beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scope, and every sentence carries information. 'The note is user-authored content' is mildly redundant but reinforces the privacy framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety/idempotency and an output schema covering the response, the remaining burden is parameter meaning. The description handles the evidence-reference parameters but is silent on the required idempotency key and revision parameter, leaving gaps for a 6-param write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (just request_key), so the description must compensate. It usefully clarifies that strategy_id/run_id are optional 'exact owned' evidence references, but leaves the required request_key and the revision parameter unexplained, and adds nothing about title/note beyond the schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (save a research note), states the scope (NEW, private, in the connected workspace) and the optional evidence-linking capability. It is clearly distinguishable from sibling tools like list_research or update_strategy without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage (capturing user-authored research) and gives one exclusion via 'Does not publish or send it anywhere,' but never names an alternative tool or states when to prefer saving a note versus, say, updating a strategy. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_marketsFind supported marketsCRead-onlyIdempotentInspect
Search the same crypto, stock and ETF directory as Premiss. Does not return prices or candles.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| asset_class | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| markets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety behavior is covered. The description adds one genuinely useful trait, that the result set excludes prices/candles, but nothing about matching semantics, ranking, or empty-result handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb and scope, with no padding. The Premiss reference consumes space without adding usable information, but the result is still tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 restated, and annotations carry the safety profile. However, three undocumented parameters and zero guidance on when to prefer this over describe_market leave real gaps for a search entry-point tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description explains none of the three parameters, including the meaning of an empty 'query' default or how asset_class interacts with a text query. With low coverage the description is expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource (crypto/stock/ETF market directory), so the agent knows it looks up instruments rather than data. The reference to 'the same directory as Premiss' is opaque and does not help differentiate it from siblings like describe_market.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'Does not return prices or candles' implicitly scopes it away from data-retrieval tools, but no sibling is named and no condition for choosing this over describe_market or get_capabilities is given. Usage must be entirely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_backtestStart a historical backtestAIdempotentInspect
Queue a backtest of any saved strategy in the connected workspace and a matched buy-and-hold baseline. Accepts custom code and existing app strategies. Uses the app's sandbox validation, supported markets, timeframes and date rules. Requires the exact saved revision. Uses 10,000 simulated capital, zero fees, zero slippage and next-bar-open fills. Read the report assumptions for historical runs. No plugin-only daily test or history caps. Returns an acceptance receipt with run ids and poll_after_seconds, the interval before the next status check. Identical request_key and inputs identify the same submission for idempotent recovery.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| revision | Yes | ||
| start_date | Yes | ||
| request_key | Yes | Idempotency UUID identifying one requested write and its unchanged arguments. | |
| strategy_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| end_ts | Yes | |
| run_id | Yes | |
| status | Yes | |
| app_url | Yes | |
| revision | Yes | |
| start_ts | Yes | |
| total_bars | Yes | |
| request_key | Yes | |
| strategy_id | Yes | |
| tested_rules | No | |
| baseline_run_id | Yes | |
| poll_after_seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotentHint, readOnlyHint=false) it discloses execution semantics an agent could not infer: app sandbox validation, supported market/timeframe/date rules, 10,000 simulated capital, zero fees, zero slippage, next-bar-open fills, and the idempotent-recovery mechanism (identical request_key and inputs). It also explains what comes back and how to proceed (run ids plus poll_after_seconds).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and baseline behavior are front-loaded, and the simulation assumptions are packed efficiently into one sentence. The final sentence on the acceptance receipt and poll interval is somewhat long and slightly overlaps the output schema, but most sentences carry distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with an output schema, the description covers the execution model, constraints, idempotency and next-step polling well. Remaining gaps – optionality of end_date, failure/validation-error behavior, and the exact meaning of strategy_id – are minor given the output schema documents the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (just request_key), so the description must carry most parameter meaning. It usefully clarifies that revision must be the exact saved revision and that request_key plus identical inputs drive idempotency, but strategy_id, start_date and the optionality/behavior of end_date are left to the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Queue a backtest of any saved strategy ... and a matched buy-and-hold baseline.' It scopes the operation precisely (saved or existing app strategies, custom code) and its output (acceptance receipt with run ids), letting an agent distinguish it from retrieval siblings like get_run_report or get_run_data without inspecting either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: any saved strategy in the connected workspace, custom code or existing app strategies, with the exact saved revision required. It also flags a boundary versus an alternative surface ('No plugin-only daily test or history caps'), but it never names a sibling tool or states an explicit when-not/fallback condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_strategyEdit a strategyADestructiveIdempotentInspect
Replace the complete Python package and rules of an existing strategy using its exact current saved revision. The submitted package replaces all existing files. Supports all Premiss markets and timeframes. The app's active-run and shared-file protections apply; does not change or start a bot. Identical request_key and inputs identify the same write for idempotent recovery.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | ||
| rules | Yes | ||
| symbol | Yes | ||
| interval | Yes | ||
| revision | Yes | ||
| request_key | Yes | Idempotency UUID identifying one requested write and its unchanged arguments. | |
| strategy_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| files | No | |
| rules | Yes | |
| venue | No | |
| symbol | Yes | |
| app_url | Yes | |
| version | Yes | |
| interval | Yes | |
| revision | Yes | |
| template | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/idempotent/closed-world, and the description adds real value on top: it states the blast radius ('the submitted package replaces all existing files'), the protections in play ('active-run and shared-file protections apply'), the idempotency mechanism ('identical request_key and inputs identify the same write'), and a scope boundary ('does not change or start a bot').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with the core action front-loaded and no filler; every sentence carries information. Slightly compact for a seven-parameter nested-schema tool, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the mutation's destructive scope, protections, idempotency, and bot-boundary. Gaps remain around the rules payload and failure/permission behavior, but it is sufficient to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 14%, so the description must carry weight; it explains 'revision' as the exact current saved revision and 'files' as a full replacement, and 'Supports all Premiss markets and timeframes' loosely covers symbol/interval. But the rules object (watches/buys/sells/safety), strategy_id, and request_key receive no added semantics, leaving key parameters under-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Replace the complete Python package and rules of an existing strategy'), and the word 'existing' plus 'exact current saved revision' cleanly separates it from the create_strategy sibling without needing its schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition 'using its exact current saved revision' implies this is for editing an already-saved strategy and hints at optimistic-concurrency usage, and 'does not change or start a bot' bounds the scope. However, no sibling is named and there is no explicit when-to-use-this-vs-create_strategy or when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
get_run_data1 field changed- changed
Input schema / requiredPrevious value: -[ - "run_id", - "kind", - "limit" -]New value: +[ + "run_id", + "kind" +]
- Changed
list_research1 field changed- changed
Input schema / requiredPrevious value: -[ - "kind", - "limit" -]New value: +[ + "kind" +]
- Changed
search_markets1 field changed- removed
Input schema / requiredRemoved value: -[ - "query", - "limit" -]
1 tool update
- Changed
get_capabilities8 fields changed- added
Output schema / properties / research_scope / properties / default_entry_sizingAdded value: +{ + "const": "available_unreserved_capital", + "type": "string" +} - added
Output schema / properties / research_scope / properties / event_backtest_classesAdded value: +{ + "items": { + "enum": [ + "crypto", + "stock", + "etf" + ], + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / research_scope / properties / event_handlersAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / research_scope / properties / event_paper_runsAdded value: +{ + "const": true, + "type": "boolean" +} - added
Output schema / properties / research_scope / properties / market_classesAdded value: +{ + "items": { + "enum": [ + "crypto", + "stock", + "etf" + ], + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / research_scope / properties / markets_are_examplesAdded value: +{ + "const": true, + "type": "boolean" +} - added
Output schema / properties / research_scope / properties / portfolio_rebalancingAdded value: +{ + "const": "long_only_staged_targets", + "type": "string" +} - added
Output schema / properties / research_scope / properties / strategy_modelAdded value: +{ + "enum": [ + "single_market_closed_bars", + "single_market_and_declared_event_strategies" + ], + "type": "string" +}
1 tool update
- Changed
get_run_report1 field changed- changed
Output schema / properties / assumptions / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "fee_bps": { - "const": 10, - "type": "number" - }, - "initial_capital": { - "const": 10000, - "type": "number" - }, - "slippage_bps": { - "const": 1, - "type": "number" - }, - "version": { - "const": 1, - "type": "number" - } - }, - "required": [ - "version", - "initial_capital", - "fee_bps", - "slippage_bps" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "fee_bps": { + "const": 10, + "type": "number" + }, + "initial_capital": { + "const": 10000, + "type": "number" + }, + "slippage_bps": { + "const": 1, + "type": "number" + }, + "version": { + "const": 1, + "type": "number" + } + }, + "required": [ + "version", + "initial_capital", + "fee_bps", + "slippage_bps" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "fee_bps": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "initial_capital": { + "const": 10000, + "type": "number" + }, + "slippage_bps": { + "maximum": 1000, + "minimum": 0, + "type": "number" + }, + "version": { + "const": 2, + "type": "number" + } + }, + "required": [ + "version", + "initial_capital", + "fee_bps", + "slippage_bps" + ], + "type": "object" + } + ] + }, + { + "type": "null" + } +]
13 tool updates
- First observed
create_strategy - First observed
describe_market - First observed
get_capabilities - First observed
get_profile - First observed
get_run_data - First observed
get_run_report - First observed
get_strategy - First observed
get_strategy_guide - First observed
list_research - First observed
save_research_note - First observed
search_markets - First observed
start_backtest - First observed
update_strategy
Related MCP Connectors
- CPZAIOAuthcom.cpz-lab.mcp
Build, backtest, and deploy quantitative trading strategies from your AI agent.
Automate trading on your own Alpaca account - build, backtest and run strategies via your AI.
Claude, ChatGPT, Grok or Perplexity: draw on live charts, backtest and trade on your own broker
Build, backtest and paper-run Hyperliquid strategies from your AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to run backtests, fetch market data, list strategies, and analyze trading algorithms via natural language.1,113GPL 3.0
- AlicenseNot gradedqualityFmaintenanceEnables creation, optimization, and management of PineScript trading strategies with Claude Desktop integration for AI-assisted development.11 npm105MIT

panther-mcpofficial
AlicenseAqualityDmaintenanceEnables AI assistants to backtest trading strategies described in plain English, providing access to market data, technical indicators, and comprehensive performance reports.131MIT
TradeStaq MCPofficial
AlicenseBqualityBmaintenanceProvides 31 AI-powered crypto trading tools for Claude, Cursor, and any MCP client, enabling strategy creation, backtesting, bot deployment, copy trading, and portfolio management across multiple exchanges.3438 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.