Skip to main content
Glama

List my themes

list_themes
Read-onlyIdempotent

YOUR themes (the API key's user): named groups of tickers. A theme is a named group of tickers with attribution. kind rule: the user's own words (rule_text), compiled once per save or edit into a ranked list. Tracked tickers (at most tracked_cap, at most 10: a theme never opens more than 10 Gambits) open a follow: each is followed as an ordinary Gambit, so it gets Gambit's take. They are chosen when the theme is saved, edited or activated, in this order: tickers the user added by hand or named in the rule (added_by user), then tickers with the most recent event in the last 7 days (an opportunity card or a news item on it), ties by rank. A member's tracked_by says why it is tracked. The rest, up to watched_cap, are watched: listed with their reason, no Gambit. Tiers do not move between those moments. kind manual: tickers the user adds by hand, tracked up to tracked_cap and watched past it. A Gambit the theme opened becomes the user's own, and no theme stops it, once the user follows that ticker with create_gambit or changes its monitoring. Every member records how it got in (added_by rule, news or user) and why (reason); every change is an event. rule_version counts the compiles of the rule; member_list_version counts the changes of the member list. A draft theme follows nothing; an active one follows its tracked members. Themes never trade. Each row: id (pass it as theme_id), name, kind (rule | manual), status (draft | active | paused | archived), rule_text (the user's own words; null for a manual theme), rule_version, member_list_version, tracked_cap, watched_cap, tracked_count, watched_count, compiled (when the rule was last compiled: compiled_at, model, prompt_version, signal — anchored or trend, how the theme is ranked — how many tickers were pre-screened and ranked, exclusions, and the symbols dropped because they did not resolve; null when never compiled), source_mandate_id (the saved Gambit a theme was converted from), created_at and updated_at. Archived themes are left out unless include_archived is true. Errors: 503 themes_disabled while themes are switched off. (Requires api:read.)

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_themes"
  }
}

Input Schema

NameRequiredDescriptionDefault
include_archivedNotrue also lists archived themes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent safety profile, but the description adds real value beyond them: the 503 themes_disabled failure mode, the api:read requirement, and the archived-exclusion default. It also discloses that the tool never trades and that archived themes are omitted by default, which the annotations do not say.

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?

A single dense wall of text that spends most of its length on theme domain modeling (tracked vs watched, cap rules, tie-breaking order, compile semantics) rather than on how to invoke this read-only list call. The essential facts — that it lists themes, that archived are hidden by default, that it may 503 — are buried mid-paragraph instead of front-loaded.

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?

With no output schema, the description carries the full return-value burden and does so exhaustively: every row field is enumerated with meaning (id/theme_id, kind, status, rule_version, compiled sub-fields), plus the error case and auth scope. An agent could format and interpret the response without opening any schema.

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 100% and only one optional parameter exists, so the baseline would be 3. The description earns above baseline by stating the actual default behavior behind the flag (archived themes are excluded unless include_archived is true), which is more than the schema's bare "true also lists archived themes".

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 opener identifies the resource ("YOUR themes (the API key's user): named groups of tickers") and the field enumeration ("Each row: id, name, kind...") implies a list result, but the verb is never stated outright — the agent must infer "list" from the title. It also never distinguishes itself from the sibling get_theme, which fetches a single theme.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no routing to alternatives such as get_theme for a single theme or preview_theme before saving. The only conditional guidance given is behavioral ("Archived themes are left out unless include_archived is true"), which is filtering, not tool selection.

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