InsiderTrack MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@InsiderTrack MCPShow me cluster buys in the last 30 days and how those signals performed."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
InsiderTrack MCP
An MCP server for InsiderTrack: let an AI assistant — Claude Desktop, claude.ai, Claude Code, or any MCP client — ask who in Congress is buying what, which corporate insiders are clustering, what a ticker scores and why, and whether those signals actually worked.
By M.G. Network and Technology Solutions.
v0.1.0 — running in production alongside InsiderTrack: nine read tools, two resources, two prompts, token-gated over the public URL. Connected to claude.ai as a custom connector. Design notes in DESIGN.md.
What it looks like
A question the site cannot answer on any one page — "Where are several insiders buying their own stock this month, and did anyone in Congress buy the same names? How good is that member's record?" — becomes three tool calls. Recorded against the live instance on 2026-09-20:
cluster_buys(days=30)
BABA 2 insiders $25.7M PMTS 5 insiders $12.0M
GME 4 insiders $21.7M SBLK 8 insiders $6.9M
UBER 2 insiders $15.3M NGL 2 insiders $5.8M …
congress_trades(ticker="UBER", direction="buy", since="2026-06-01")
Dan Newhouse (R-WA, House) $1,001 – $15,000 traded 2026-07-10
member_track_record(politician_id=…)
89 measured buys · 90-day win rate 43.8% · beat SPY 40.4% of the time
avg excess vs SPY −2.3 pts · weight in the composite score: 0.9So: one overlap, and the member behind it has a below-market record — the
score already discounts his trades. Claude writes that paragraph; the
server only hands it the facts, each stamped as_of and with the disclaimer.
Related MCP server: MCP Capitol Trades Server
How it works
InsiderTrack already computes everything — scores, member track records, cluster buys, 30/60/90-day outcomes — behind an HTTP API. This server is a small, separately deployed process that exposes a curated set of tools over that API, each described well enough that a model picks the right one, with guardrails so a chat cannot hurt the app:
read-only by construction (one optional write, off by default),
bearer-token auth and a per-client rate limit over HTTP,
capped result sizes, errors returned as data the model can recover from,
one audit line per call,
no database credentials, no volumes — the container can only reach the app.
Run it
Locally, as a subprocess for Claude Code (no network, no tokens):
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
claude mcp add insidertrack -e INSIDERTRACK_URL=http://localhost:8013 -- .venv/bin/insidertrack-mcpOver HTTP, inside the InsiderTrack Compose stack: add the service from
deploy/compose.snippet.yml to its
deploy/compose.yml, put an MCP_TOKENS=name:token line in its
deploy/.env, and add a /mcp handler to the Tailscale serve config
(Tailscale strips the prefix, so the server itself listens at /).
Then connect a client:
Client | How |
claude.ai / Claude Desktop | Settings → Connectors → Add custom connector → URL |
Claude Code |
|
Local, no network |
|
python -c "import secrets; print(secrets.token_urlsafe(32))" # make a tokenTools
Tool | Question it answers |
| "Who is Pelosi in this system? What's the exact ticker?" — ids and symbols for the other tools |
| "What did members of Congress do in NVDA since June?" — filter by ticker, member, buy/sell, owner, asset type, dates |
| "What does KMX score, and why?" — the 0–100 composite, sub-scores and written reasons |
| "What scores highest right now?" — the strongest tickers, no reasons |
| "Where are several insiders buying their own stock?" — market-wide Form 4 clusters |
| "How have Pelosi's buys actually done?" — 30/60/90-day returns vs SPY, buys and sales, the weight it earns |
| "Which members beat the market most often?" — ranked by 90-day beat-SPY rate |
| "Does 'Strong Watch' actually go up?" — hit-rates per label per scoring version |
| "What did the site's model call this morning, and how have its calls scored?" |
All read-only and idempotent (declared as such in the tool annotations),
each capped to a sensible number of rows, dollars pre-formatted, no internal
ids a model cannot use. One optional write, watchlist_add, exists only when
the operator sets MCP_ALLOW_WRITES=1 and gives the server their own
watchlist identity — it never holds an admin credential.
Resources and prompts
| The site's model's morning brief and today's calls, as text |
| How fresh each data source is, and recent errors — so an answer can say "House data is two days old" |
prompt | What changed this week: cluster buys, Congress purchases, top scores, how the model's calls resolved |
prompt | A one-page note on one ticker, in a fixed order, ending with what the data supports, what it doesn't, and what would change the picture |
Every result carries as_of and a disclaimer: InsiderTrack scores public
disclosures; it is a scorecard, not investment advice.
Development
.venv/bin/ruff check . && .venv/bin/ruff format --check .
.venv/bin/python -m pytest -q
docker build -f deploy/Dockerfile -t insidertrack-mcp .Tests run against recorded API responses in tests/fixtures/ — no
InsiderTrack instance needed. CI runs lint, tests and the Docker build on
every push; Dependabot keeps the pins current (patch and minor bumps merge
themselves once CI is green).
Operations
Nothing to back up — no database, no volumes; tokens live in InsiderTrack's
.env, which its nightly backup covers. How it comes back after a reboot,
how to update or rebuild it, rotate tokens, and what to check when it's
down: deploy/OPERATIONS.md.
Versions
The version lives in VERSION and is reported by the server on
initialise and at /health. See CHANGELOG.md.
License
PolyForm Noncommercial 1.0.0 — © 2026 M.G. Network and Technology Solutions.
Available Tools
9 toolscluster_buysARead-onlyIdempotent
Companies where several corporate insiders bought their own stock on the open market.
"Cluster buys" — two or more distinct officers, directors or 10% owners filing open-market purchases (Form 4 code P) within the window — are one of the stronger public signals. Market-wide, not limited to what Congress trades. Sorted by total dollars.
Args: days: Look-back window, 1-365 (default 30). min_buyers: Minimum distinct insiders buying, 1-10 (default 2). limit: Rows to return, 1-100 (default 25).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| min_buyers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral context: the exact definition of a cluster buy, the filing code involved, the market-wide scope, and that results are sorted by total dollars. This goes beyond the structured annotations without contradicting them.
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?
The description is well-organized: a one-sentence summary, a precise definition, market universe and sort order, then an Arg list. It is slightly wordier than necessary—'one of the stronger public signals' is more promotional than operational—but every sentence contributes useful context and the parameter section is clean.
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 read-only query tool with three optional parameters and an output schema, this description is complete. It defines the domain, explains the signal semantics, specifies the sort order, and documents all parameters with ranges and defaults. The output schema covers return values, so no further return-shape detail is needed.
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 for the undocumented parameters. It does so fully by explaining each parameter's purpose, allowed range, and default: days as look-back window, min_buyers as minimum distinct insiders, and limit as rows to return. This gives the agent everything needed to set meaningful values.
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 clearly identifies the tool's output: companies with cluster buys by corporate insiders. It gives a specific definition (two or more distinct officers, directors, or 10% owners filing Form 4 code P) and distinguishes itself from Congress-only trading by saying it is market-wide. It does not use an explicit verb like 'returns' or 'lists,' and it doesn't name a sibling tool, but the resource and scope are unambiguous.
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 description implies when to use this tool: when you want open-market insider cluster-buy signals across all companies. It also explicitly says it is 'not limited to what Congress trades,' which hints at a distinction from congress_trades. However, it does not explicitly state when to use this vs. a specific alternative, nor does it mention any exclusions or complementary tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
congress_tradesARead-onlyIdempotent
Stock trades disclosed by members of Congress (House and Senate PTRs).
Filter by ticker and/or politician id (from search), direction, who in
the household traded, asset type, and a date range on the trade date.
Newest first. Amounts are the dollar brackets the law requires, not exact
figures. direction already treats a put purchase as the bearish bet it is.
Args:
ticker: Exact symbol, e.g. NVDA.
politician_id: From search.
direction: buy or sell.
owner: self, spouse, child or joint.
asset_type: stock, option or other.
since: Earliest trade date, YYYY-MM-DD.
until: Latest trade date, YYYY-MM-DD.
limit: Rows to return, 1-100 (default 25).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| owner | No | ||
| since | No | ||
| until | No | ||
| ticker | No | ||
| direction | No | ||
| asset_type | No | ||
| politician_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses three behavioral traits: newest-first order, legally required dollar brackets rather than exact amounts, and the already-normalized direction semantics for put purchases. These are exactly the non-obvious behaviors an agent needs to interpret results correctly.
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?
The description is compact and front-loaded: purpose first, then key filter semantics, then a tidy Args block with one line per parameter. No wordy filler or redundant restatement of the 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?
All eight optional parameters receive adequate guidance, and the tool's output-related caveats (sort order, amount granularity, direction normalization) are covered. With annotations covering safety and an output schema present, nothing essential 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?
With 0% schema description coverage, the description fully compensates by documenting every parameter: ticker format, politician_id origin, direction values, owner values, asset_type values, date format, and limit range with default. This is more informative than the raw 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 'Stock trades disclosed by members of Congress (House and Senate PTRs)', clearly identifying the resource and data scope. It does not explicitly contrast itself with sibling tools like top_signals or member_track_record, so it stops short of full sibling differentiation.
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?
It gives explicit usage context by enumerating the available filters (ticker, politician_id, direction, owner, asset_type, date range) and noting that politician_id comes from `search`. It does not name alternative tools for signals or track records, but the filter list makes the tool's intended role clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leaderboardARead-onlyIdempotent
Members of Congress ranked by how often their stock buys beat SPY at 90 days.
Only members with at least min_trades measured buys are ranked, so a
lucky single trade does not top the list. weight_in_score is the
multiplier that record earns their trades in the composite score.
Args: min_trades: Minimum measured buys to qualify, 1-200 (default 10). limit: Rows to return, 1-50 (default 20).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| min_trades | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and closed-world behavior, so the description's job is lighter. It adds meaningful context about how the leaderboard is computed, including the min_trades qualification to avoid single-trade outliers and the composite-score multiplier, which goes beyond the annotation metadata.
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?
The purpose is front-loaded in the first sentence, followed by a compact rationale and a clearly formatted args list. Every sentence earns its place; there is no filler or repetition of schema fields.
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 two-parameter read-only query tool with an output schema present, the description covers ranking semantics, qualification threshold, score composition, and parameter constraints. Nothing essential is missing for correct selection and invocation.
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 fully carries parameter documentation. It explicitly defines min_trades with its purpose, valid range, and default, and limit with its purpose, range, and default. This is exemplary compensation for an empty 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 states a specific verb-resource relationship: members of Congress are ranked by how often their stock buys beat SPY at 90 days. This clearly distinguishes the tool from the sibling list by naming the exact ranking metric and population.
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 usage context is implied: an agent should invoke this when a ranked leaderboard of Congress members' trading performance is needed. However, there is no explicit guidance about when to prefer this tool over siblings such as top_signals or member_track_record, and no when-not-to-use exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
member_track_recordARead-onlyIdempotent
How a member of Congress's disclosed stock buys (and sales) actually performed.
Every buy is measured from the first close after disclosure at 30/60/90
days, against SPY over the same days. weight_in_score is what that
record earns the member's trades in the composite score (1.0 = neutral).
Sales are measured the same way (a good sale is one the stock then fell).
Args:
politician_id: From search.
recent_trades: Measured buys to list, 0-50 (default 10).
| Name | Required | Description | Default |
|---|---|---|---|
| politician_id | Yes | ||
| recent_trades | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true and idempotentHint true, so safety profile is covered. The description adds valuable behavioral context: measurement window (first close after disclosure, 30/60/90 days), comparison against SPY, meaning of weight_in_score, and treatment of sales. No contradiction.
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?
Description is compact and front-loaded with purpose, then methodology, then parameter guidance. Every sentence contributes; no filler.
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?
Given output schema exists and annotations cover read-only behavior, the description is sufficient. It covers purpose, measurement methodology, and parameter semantics. Minor gaps like error handling are not necessary because of 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?
Schema description coverage is 0%, so description carries full parameter documentation burden. It adds meaning beyond schema: politician_id sourced from search, recent_trades defined as measured buys with range 0-50 and default.
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?
Description states a specific verb+resource: it evaluates how a member's disclosed stock trades performed, with defined measurement methodology. It distinguishes from sibling tools like search and leaderboard by focusing on individual member trade performance.
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?
Description clearly implies usage: to get performance of a specific member's trades, and references 'search' as source of politician_id. It does not explicitly compare against alternatives or state when-not-to-use, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_deskARead-onlyIdempotent
The site's own AI model's morning brief and directional calls — and how they scored.
Each morning the model reads the day's disclosures and makes 3-5 calls (ticker, bullish/bearish, 30/60/90-day horizon, confidence, reasoning). Calls are scored at their horizon against SPY exactly like members' trades. Treat it as a scorecard of the model, not a forecast.
Args: history: Also return this many past calls, newest first, 0-100 (default 0).
| Name | Required | Description | Default |
|---|---|---|---|
| history | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and idempotent annotations, the description adds useful behavioral detail: the model reads daily disclosures, makes 3–5 calls with specific fields, and scores them against SPY like member trades. This enriches the agent's understanding of the data and its provenance.
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?
The description is efficient and well-organized: a clear opening statement, a concise explanation of the model's process, and a focused Args section. No redundant or filler 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?
Given the simple parameter surface (one optional arg), rich annotations, and the presence of an output schema, the description sufficiently covers the tool's purpose, behavior, and parameter semantics. Nothing critical is missing for correct invocation.
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 schema has zero description coverage, but the description fully documents the history parameter: range 0–100, default 0, and ordering (newest first). This is essential for correct invocation and completely compensates for the schema 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?
The description clearly identifies the tool as returning the site's AI model's morning brief and directional calls with scoring, and explicitly differentiates it from a forecast ('scorecard of the model, not a forecast'). This distinguishes it from sibling tools like top_signals or signal_outcomes.
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 description gives interpretive guidance ('treat it as a scorecard of the model, not a forecast') but does not explicitly state when to use this tool over siblings or provide exclusions. An agent must infer its comparative utility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-onlyIdempotent
Find members of Congress, tickers and Federal Reserve officials by name or symbol.
Use this first when you have a person's name or part of a ticker and need the politician id or exact symbol that the other tools take. Matching is case-insensitive and partial ("pelosi", "NVD").
Args: query: A name or ticker fragment, 1-80 characters.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent. The description adds useful behavioral detail beyond that: matching is case-insensitive and partial, and it returns identity data needed by other tools. It does not contradict annotations and covers the observable matching behavior.
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?
The description is two short paragraphs plus an Args block, with the main purpose front-loaded. Every sentence contributes either the primary action, the workflow position, matching behavior, or the parameter rule.
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 single-parameter lookup with an output schema and read-only/idempotent annotations, the description provides everything an agent needs: what to search, why to search, how matching works, and the query constraint. The output schema covers return structure.
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 full burden. It explains that query accepts a name or ticker fragment and imposes a 1-80 character range, giving an agent enough semantic detail to construct a valid call.
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 states a specific action ('Find') and a clear resource set: members of Congress, tickers, and Federal Reserve officials, searched by name or symbol. It differentiates itself from the sibling tools by framing it as the resolution step that produces the politician id or exact symbol the other tools consume.
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?
It gives an explicit trigger: use this first when you have a name or ticker fragment and need an ID/symbol. It does not name a specific alternative or list when not to use it, but the first-use instruction makes the intended workflow clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signal_outcomesARead-onlyIdempotent
Does a label actually go up? Hit-rates of every score bucket at 30/60/90 days.
InsiderTrack snapshots every ticker's score daily and fills in what the
price did 30, 60 and 90 days later. This is the scorecard: per label, how
many snapshots resolved, how many went up/down/flat, and the win rate.
Scoring regimes change over time; results are per version (default: the
current one). Small totals mean the regime is young — say so.
Args: score_version: Restrict to one scoring regime; default is the current one.
| Name | Required | Description | Default |
|---|---|---|---|
| score_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, and the description adds substantial behavioral context beyond that: results are per scoring regime version, default to the current version, and small `total`s signal a young regime that should be flagged. It also explains the data flow (daily snapshots paired with future price moves), which is genuinely useful for interpreting results.
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?
The description is front-loaded with a clear purpose, then provides a concise mechanism explanation, a caveat about young regimes, and a dedicated Args section. Every sentence adds information relevant to selecting or invoking the tool, with no filler or repetition of schema fields.
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?
Given the output schema exists and there is only one optional parameter, the description is complete: it explains conceptual purpose, data provenance, per-version behavior, default parameter handling, and an interpretive caveat. No critical information needed to call the tool correctly 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?
Schema description coverage is 0%, so the description carries the full explanatory burden for score_version. It does so by stating the parameter restricts results to one scoring regime and defaults to the current one. This is sufficient for a single optional parameter, though it could have added a bit more detail on how versions are identified.
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 clearly states a specific function: computing hit-rates for every score bucket at 30/60/90 days. It explains the underlying snapshot-and-price mechanism and frames the output as a scorecard of per-label resolved snapshots and win rates. This is distinct enough to separate from sibling tools like top_signals or ticker_signal, even without naming them.
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 opening question 'Does a label actually go up?' and the description of the scorecard give clear context for when to use this tool: when an agent needs outcome validation per score label over 30/60/90 day horizons. It does not explicitly name alternatives or exclusion cases, but the use case is clearly scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ticker_signalARead-onlyIdempotent
InsiderTrack's composite score for one ticker, with the reasons behind it.
Score is 0-100: smart money (13F holders) + Congress buying weighted by each
member's track record + corporate insiders (Form 4) + momentum, minus a risk
penalty. label is the human bucket (e.g. "Strong Watch", "High Risk");
signal is BULLISH / NEUTRAL / BEARISH. Only tickers traded by a tracked
member of Congress in the window have a score.
Args: ticker: Exact symbol, e.g. NVDA.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it readOnly and idempotent, and the description adds meaningful behavioral context: the 0-100 formula, label/signal semantics, and the condition that not all tickers are eligible. No contradiction with annotations.
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?
Every sentence earns its place: a one-line summary, the scoring rule and output buckets, an important eligibility boundary, and the argument definition. Front-loaded and free of filler.
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 read-only single-ticker lookup with an output schema already present, this description covers the meaning, composition, output labels, eligibility condition, and parameter format. Nothing essential 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?
Schema coverage is 0%, so the description must carry the parameter meaning. It does: 'ticker: Exact symbol, e.g. NVDA' adds precision that the bare schema string lacks. This is sufficient for a single simple parameter.
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 resource ('InsiderTrack's composite score for one ticker') and a clear verb implied ('get'/'return'). The 'for one ticker' scope and signaled outputs ('label', 'signal') set it apart from siblings like top_signals or leaderboard without needing to open them.
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?
Clear context: this tool answers single-ticker signal questions and explicitly notes that only tickers traded by a tracked member of Congress will have a score. It does not name sibling alternatives or state when not to use it, but the boundaries are clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_signalsARead-onlyIdempotent
The strongest composite scores right now, highest first (use ticker_signal for the reasons).
Args: limit: Rows to return, 1-25 (default 10). min_score: Only tickers scoring at least this (0-100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| min_score | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint and idempotentHint, so the description does not need to restate safety. It adds modest context: the results are a current snapshot, sorted highest first, and constrained by limit/min_score, but does not disclose deeper behavior such as data age or scoring source.
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?
The purpose is front-loaded in one sentence, followed by compact, scannable parameter lines. There is no filler or repetition of schema fields.
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 simple ranked-list tool with an output schema, the description is complete: the agent knows what it returns, how it is ordered, the parameter constraints, and the sibling to use for underlying reasons.
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?
With 0% schema description coverage, the Args section fully compensates: limit is described with range (1-25) and default (10), and min_score is described as a 0-100 threshold. This adds real meaning beyond the bare type/default fields in the 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 first sentence states a specific, scannable purpose: returning 'the strongest composite scores right now, highest first.' It also distinguishes itself from the sibling ticker_signal by directing reason-seeking users there.
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?
It explicitly says when not to use this tool and where to go instead: 'use ticker_signal for the reasons.' It does not discuss other siblings like search or leaderboard, but the most confusable alternative is handled.
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.
9 tool updates
v0.1.0- First observed
cluster_buys - First observed
congress_trades - First observed
leaderboard - First observed
member_track_record - First observed
model_desk - First observed
search - First observed
signal_outcomes - First observed
ticker_signal - First observed
top_signals
TDQS
Scored across 9 tools
Each tool has a distinct job: search is the ID/symbol resolver, congress_trades and cluster_buys expose trade activity, ticker_signal/top_signals split single-ticker detail from market-wide ranking, and member_track_record/leaderboard separate individual performance from rankings. Even the most similar pairs are explicitly list-vs-detail or individual-vs-ranking.
Names are uniformly lowercase snake_case and mostly noun phrases describing the returned data, which is readable and predictable. The lone exception is search, a verb, while the rest are nouns like congress_trades or signal_outcomes, so the convention is slightly mixed.
Nine tools is a well-scoped size for this domain: a lookup helper, trade queries, signal queries, performance analytics, and validation/scorecard tools each earn their place. It is small enough to navigate but large enough to cover the core workflows.
The surface covers the main workflow end to end: search resolves IDs, congress_trades and cluster_buys provide activity data, ticker_signal and top_signals deliver scores, and member_track_record/leaderboard/signal_outcomes/model_desk provide performance and validation. Minor gaps exist, such as no raw corporate Form 4 trade listing and no tool that actually uses Federal Reserve official IDs returned by search, but they are workaroundable rather than blocking.
Maintenance
Related MCP Connectors
Ask your AI about the markets: filings, insider & congress trades, fund flows, options, macro
US stock market data for AI agents: SEC filings, financials, insider trades, 13F, options, macro.
SEC EDGAR financials, insider trading, and economic data for AI agents. US GAAP + IFRS.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides actionable financial intelligence tools for AI agents including insider buying signals, earnings IV plays, market pulse, stock analysis, and options strategies via free public data sources.6MIT
- AlicenseAqualityDmaintenanceEnables users to query and analyze U.S. politician stock trades with real-time pricing data from Capitol Trades, with no API key required.6132 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying of U.S. congressional stock trade data, including price history, recent trades, buy signals, stock activity, and politician activity, through natural language tools.1MIT
- FlicenseNot gradedqualityAmaintenanceConnects Claude to live U.S. Congress stock trades and institutional 13F holdings from free public sources, enabling natural language queries about political insider trading and fund overlap.-