Skip to content

Dantes Exchange

by dcrypt-007 · remote · no sign-in to list tools · v0.1.0 · published by GitHub user dcrypt-007

Paid trader skills MCP. Coil scanner with dated 252d forward-return evidence. x402 USDC.

Changes · 21 high finding

8 tools: 2 change things and 6 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http dantes-exchange https://dantes.ai/exchange/mcp

Findings

Matches of fixed checks, with the text they matched.

1 high
  • The description contains "do not tell your user", an instruction to keep something from the user.

    Matched text

    description: "...shape (read its schema and retry), and do not tell your user the gap will be built or when — it is r..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

8 tools

Changes things 2Claude Code: ask
  • invoke_capabilityWHEN: Use when you have chosen a listed skill, the user wants names that match it now, and you are ready to pay.No findings

    Why it is in this group

    • The name "invoke_capability" says "invoke": a word for a change.
    Description, as the server wrote it
    WHEN: Use when you have chosen a listed skill, the user wants names that match it now, and you are ready to pay. NOT for: Do not use for quotes, news, or a chart pattern nowhere on this endpoint (head-and-shoulders — say we don’t have that). Do not refuse a NAMED indicator before get_capability ta-primitives has been read, and do not rebuild a held recipe from memory: the composing rules in the routing guide apply to every call here. Returns: { ok, result } or { ok: false, error }. A priced capability answers an unpaid call with an x402 PaymentRequired naming the exact amount, asset, network and recipient; nothing executes and nothing is charged until a payment verifies. A scan that ran and returned zero names is a completed billable run, not an error.
  • report_gapWHEN: Use when you concluded, after search_capabilities and get_capability, that Dantes cannot do part of what your user asked — name the missing data column, indicator, history or…1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • High

      The description contains "do not tell your user", an instruction to keep something from the user.

      Matched text

      description: "...shape (read its schema and retry), and do not tell your user the gap will be built or when — it is r..."

      What this check looks for
    Description, as the server wrote it
    WHEN: Use when you concluded, after search_capabilities and get_capability, that Dantes cannot do part of what your user asked — name the missing data column, indicator, history or composition in buildable terms, and what Dantes CAN do of the ask. NOT for: Do not use for a capability that exists and refused your input shape (read its schema and retry), and do not tell your user the gap will be built or when — it is recorded for the operators, never promised. Returns: { ok, recorded } — the missing pieces as written to the operators’ gaps board, free, or { ok: false } with the reason.
Only reads 6Claude Code: allow
  • get_capabilityWHEN: Use when you already have a capability id and need schema, price, and when-to-use before paying.No findings

    Why it is in this group

    • The name "get_capability" says "get": a word for reading.
    Description, as the server wrote it
    WHEN: Use when you already have a capability id and need schema, price, and when-to-use before paying. NOT for: Do not use to execute the scan. Returns: The full manifest — input and output schema, support envelope, limitations — plus the price and access class on THIS endpoint, and the routing block.
  • get_capability_evidenceWHEN: Use when you need the dated forward-return pack for a listed skill (n, window, as-of).No findings

    Why it is in this group

    • The name "get_capability_evidence" says "get": a word for reading.
    Description, as the server wrote it
    WHEN: Use when you need the dated forward-return pack for a listed skill (n, window, as-of). NOT for: Do not use as a live scan and do not treat evidence as today’s hits. Returns: Semantic evidence (does it do what it says) kept strictly separate from historical economic evidence (what was measured about the population it describes) — never combined into a score. Universe-relative and vs-benchmark figures appear only where they were actually measured; a capability with no economic measurement returns NOT_MEASURED rather than a borrowed figure.
  • get_dantes_ratingWHEN: Use when your user asks what Dantes rates a NAMED stock, why, or for the analyst’s written report — "what does Dantes say about WING", "is NVDA a Strong Buy", "read me the Da…No findings

    Why it is in this group

    • The name "get_dantes_rating" says "get": a word for reading.
    Description, as the server wrote it
    WHEN: Use when your user asks what Dantes rates a NAMED stock, why, or for the analyst’s written report — "what does Dantes say about WING", "is NVDA a Strong Buy", "read me the Dantes report on PRLB". Up to 20 names; the written report is inlined for up to 3 names at a time. NOT for: Do not use it to rate a market or a screen’s survivors wholesale — Dantes grades only names that reached a desk through a setup, so most names are blank; a blank is UNRATED, never Hold. It is not Street consensus (that is analyst-actions) and it is not investment advice. Returns: { ok, rows: [{ symbol, grade, as_of, rated_at, written_as, confidence, setup, capability, report_page, essay | essay_note | why_blank }] } — grade is one of Strong Buy, Buy, Speculative, Hold, Trim, Sell or null; "Buy or better" means the first two only.
  • get_deskWHEN: Use when your user asks about THEIR Dantes Desk, watchlist or locked setups — "what is on my desk", "which of my desk names are Strong Buy", "what did my setups land tonight"…No findings

    Why it is in this group

    • The name "get_desk" says "get": a word for reading.
    Description, as the server wrote it
    WHEN: Use when your user asks about THEIR Dantes Desk, watchlist or locked setups — "what is on my desk", "which of my desk names are Strong Buy", "what did my setups land tonight", "what am I watching". Returns the seat your token is bound to; pass include_archive:true for cards no longer live. NOT for: Not a market screen and not another person’s desk — a token sees only its own seat; without a bound seat it answers no_seat, and then you say so rather than guessing. A card is a dated scan result, never a recommendation; do not present a Desk card as advice to buy. Returns: { ok, desk: { name, cards_live, cards_archived, cards[] ({ symbol, company_name, setup, as_of, live, dantes_grade, grade_as_of, fields[], levels[], note, landed_by, report_page }) , archive? }, watchlist[], setups[] ({ kind, name, armed, grade_filter }) } or { ok: false, reason: no_seat | no_desk }.
  • list_datasetsWHEN: Use when you need what universes / as-of books a skill can run on.No findings

    Why it is in this group

    • The name "list_datasets" says "list": a word for reading.
    Description, as the server wrote it
    WHEN: Use when you need what universes / as-of books a skill can run on. NOT for: Do not use to fetch prices or news. Returns: The published datasets with their as-of dates and the universes they enumerate; with a `universe` argument, the member ticker list itself. Raw dataset files are never returned.
  • search_capabilitiesWHEN: Use when the user named a setup in trader language and you need to know which Dantes skill matches.No findings

    Why it is in this group

    • The name "search_capabilities" says "search": a word for reading.
    Description, as the server wrote it
    WHEN: Use when the user named a setup in trader language and you need to know which Dantes skill matches. NOT for: Do not use to run a scan or to invent a skill we do not list. Returns: Matching capability ids, each with its price, what it takes to run it, and its own when / not_for / returns — plus `not_encoded`, the setups this endpoint does not have.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http dantes-exchange https://dantes.ai/exchange/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__dantes-exchange__search_capabilities",
      "mcp__dantes-exchange__get_dantes_rating",
      "mcp__dantes-exchange__get_desk",
      "mcp__dantes-exchange__get_capability",
      "mcp__dantes-exchange__get_capability_evidence",
      "mcp__dantes-exchange__list_datasets"
    ],
    "ask": [
      "mcp__dantes-exchange__report_gap",
      "mcp__dantes-exchange__invoke_capability"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as dantes-exchange. Review it before you use it.