{
  "count": 100,
  "drift": [
    {
      "id": 36448,
      "server": "io.github.barneywohl/bay-run",
      "tool": "run_bakeoff",
      "kind": "removed",
      "severity": "info",
      "old_desc": "ONE-CALL BAKE-OFF: give Bay Run 3-10 string/string labeled examples and no\n    model knowledge. It infers classification, semantic retrieval, reranking, or\n    structured extraction; selects a bounded curated candidate set; runs the existing\n    eval harness; and returns the receipted winner, per-model metrics, public URL, and\n    the exact next serving call. Free, with a per-principal daily bake-off cap. Free during launch: no card, no signup, no email. Mint a durable key with POST https://run.huggingbay.xyz/v1/keys/free",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36447,
      "server": "io.github.barneywohl/bay-run",
      "tool": "verify_result",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Verify a Bay Run execution and receipt without re-running the task. Returns\n    stored execution authenticity, charge and hard ceiling, input/output hashes,\n    receipt-bound route/fallback facts, restriction compliance, and receipt status.\n    Legacy receipts return unavailable claims as null with explicit limitations. Receipt\n    integrity does not claim that a model answer is true or that model weights executed\n    inside a cryptographically attested environment. Free during launch: no card, no signup, no email. Mint a durable key with POST https://run.huggingbay.xyz/v1/keys/free",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36446,
      "server": "io.github.barneywohl/bay-run",
      "tool": "run_task",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Execute an existing task quote, or quote-and-run from a complete task spec.\n    A hard max_price_usd and idempotency key are mandatory. Failed or unusable output\n    is not recorded as chargeable. For x402 use POST /x402/tasks/run; this MCP action\n    exposes the same contract for demo-authorized calls. Free during launch: no card, no signup, no email. Mint a durable key with POST https://run.huggingbay.xyz/v1/keys/free",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36445,
      "server": "io.github.barneywohl/bay-run",
      "tool": "get_task_quote",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get a FREE, expiring decision for a specialized task. Provide examples when\n    quality or latency is a hard requirement: Bay Run will not invent a quality claim.\n    The quote identifies the selected route and alternatives, measured-vs-unmeasured\n    evidence, absolute maximum price, data policy, expiration, and whether it can run\n    immediately. Provider payments never influence ranking. Free during launch: no card, no signup, no email. Mint a durable key with POST https://run.huggingbay.xyz/v1/keys/free",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36444,
      "server": "io.github.barneywohl/bay-run",
      "tool": "abandon_job_callback",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Abandon a principal-owned blocked or exhausted callback receipt when delivery is\n    unsafe or no longer useful. Abandoning never deletes through the runtime role and releases\n    callback capacity immediately.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36443,
      "server": "io.github.barneywohl/bay-run",
      "tool": "retry_job_callback",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Retry a principal-owned blocked or exhausted callback receipt. If signing or the\n    terminal snapshot is still unavailable, abandon_job_callback releases its retained capacity.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36442,
      "server": "io.github.barneywohl/bay-run",
      "tool": "get_job_result",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Retrieve the bounded result of a principal-scoped terminal job. Each batch item has an\n    independent succeeded/failed outcome with a machine-readable error. While queued/running,\n    returns job_result_not_ready; results follow the advertised bounded retention policy.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36441,
      "server": "io.github.barneywohl/bay-run",
      "tool": "cancel_job",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Cancel a job ONLY while it is still queued. Claim and cancellation are atomic, so once a\n    worker has changed the state to running this returns job_not_cancellable and never interrupts\n    in-flight model work. Repeating cancellation of an already-cancelled job is idempotent.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36440,
      "server": "io.github.barneywohl/bay-run",
      "tool": "get_job",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get principal-scoped job STATUS without returning stored inputs or results. States are\n    queued, running, completed, failed, or cancelled; completed_items reports bounded progress.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36439,
      "server": "io.github.barneywohl/bay-run",
      "tool": "submit_job",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Submit a DURABLE bounded batch for asynchronous execution. The same principal +\n    idempotency_key + body returns the same job while its bounded record is retained; reusing the\n    retained key with a different body returns idempotency_conflict. Strict request/result-byte\n    and per-principal/global job+item quotas apply. Only the published free-operation allowlist is accepted;\n    paid x402/Str",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36438,
      "server": "io.github.barneywohl/bay-run",
      "tool": "rag_search",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Turnkey RETRIEVE for RAG, FAST — hand it a query and your documents and get back\n    the most relevant passages, ranked, with scores + original indices. The one-call\n    retrieval layer for agent RAG: embeds the query and passages with a small warm\n    embedder (cosine top-N), then sharpens the shortlist with a warm cross-encoder\n    reranker. Pass `documents` as a list of passages, or a single lo",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36437,
      "server": "io.github.barneywohl/bay-run",
      "tool": "summarize",
      "kind": "removed",
      "severity": "info",
      "old_desc": "EXTRACTIVE summarization, FAST and CPU-cheap — pull the most central (and, if\n    you pass a `query`, most relevant) sentences straight out of a document, in their\n    original order. No generative model, no hallucination: every returned sentence is\n    verbatim from the input. Great for condensing scraped pages, long tool outputs,\n    transcripts, or search snippets before you feed them to an LLM",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36436,
      "server": "io.github.barneywohl/bay-run",
      "tool": "parse_document",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Parse DOCX, HTML, Markdown, CSV, or TSV into deterministic RAG-ready text. The\n    source is MIME- and size-gated; DOCX ZIP expansion/XML, HTML complexity, CSV rows,\n    characters, parse time, and concurrency are independently bounded. Returns combined\n    `text`, source/text/chunk SHA-256 metadata, deterministic chunk locators, and\n    `rag_documents` that fit rag_search's per-document/count/tot",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36435,
      "server": "io.github.barneywohl/bay-run",
      "tool": "parse_pdf",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Extract embedded text from a PDF with native PDFium, FAST and model-free. Pass a\n    public URL or small base64 PDF; every fetch, redirect, byte, page, character, timeout,\n    and concurrency dimension is bounded. Returns page-aligned text, combined `text`, and\n    `rag_documents` ready to pass directly to rag_search. Scanned/image-only PDFs return\n    `needs_ocr:true` instead of a misleading empt",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36434,
      "server": "io.github.barneywohl/bay-run",
      "tool": "verify_provenance",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Authenticate a Bay Run result provenance receipt and optionally match its output,\n    source artifacts, document chunks, and citations. Verification is deterministic,\n    bounded, and side-effect-free. It returns only status booleans plus receipt/key IDs;\n    it NEVER echoes supplied output/materials and receipts NEVER contain raw prompts,\n    private memory, bearer tokens, credentials, request he",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36433,
      "server": "io.github.barneywohl/bay-run",
      "tool": "resolve_link",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Check whether a URL is ALIVE (fast HEAD/GET); if it's dead/unreachable AND it names a\n    model Hugging Bay has MIRRORED, return the mirrored copy's serve pointer — a fallback\n    UNIQUE to Bay Run (we hold the mirror). Great for repairing dead Hugging Face model links:\n    a 404'd 'huggingface.co/owner/model' comes back with a Bay Run serve URL for the same\n    model. Returns {alive, status, fina",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36432,
      "server": "io.github.barneywohl/bay-run",
      "tool": "validate_json",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Validate JSON instantly: if `data` is a STRING, confirm it PARSES; if a `schema` (JSON\n    Schema) is given, validate the value against it and return every violation. The layer\n    agents need to check tool arguments / LLM-generated JSON before acting on it. Returns\n    {valid, errors:[...], parsed}. No model, deterministic, sub-millisecond.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36431,
      "server": "io.github.barneywohl/bay-run",
      "tool": "calculate",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Evaluate arithmetic/math EXACTLY and instantly — the reliable calculator agents need\n    because LLMs silently botch multi-step arithmetic. SAFE: no code execution, a hardened\n    whitelist parser (not eval). Supports + - * / // % **, parentheses, and common math\n    functions/constants (sqrt, log, log10, exp, sin/cos/tan, floor, ceil, abs, factorial,\n    pi, e, tau). Returns {ok, result} or {ok:f",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36430,
      "server": "io.github.barneywohl/bay-run",
      "tool": "forget",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Delete DURABLE MEMORY. Pass `key` to remove one entry, or omit `key` to clear the ENTIRE\n    namespace for YOUR principal. Scoped to your bearer-token identity, so it can never touch\n    another agent's memory. Returns {deleted: N}.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36429,
      "server": "io.github.barneywohl/bay-run",
      "tool": "set_memory_ttl",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Set, refresh, or clear expiry on one live memory entry while preserving its stable\n    entry receipt. `ttl=null` clears expiry. Missing or already-expired entries return\n    found=false and are never resurrected; call remember to start a new lifecycle.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36428,
      "server": "io.github.barneywohl/bay-run",
      "tool": "export_memory",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Export a versioned, bounded JSON page of YOUR live durable memory. Omit namespace to\n    walk every namespace for the authenticated principal. Each item carries a stable entry\n    receipt and content digest; next_cursor continues the ordering walk while every page\n    rechecks TTL against the database clock.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36427,
      "server": "io.github.barneywohl/bay-run",
      "tool": "search_memory",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Search YOUR durable memory without crossing principal boundaries. Matching is a\n    deterministic, case-insensitive LITERAL substring over keys and stored JSON; %, _, and !\n    are ordinary characters, not wildcards. Results are newest-first and bounded by both rows\n    and bytes. Follow next_cursor to continue with the same filters; each page rechecks TTL.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36426,
      "server": "io.github.barneywohl/bay-run",
      "tool": "recall",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Read back DURABLE MEMORY you stored with `remember`. Pass `key` to get one value, or omit\n    `key` to LIST live keys in bounded, newest-first pages. Scoped to YOUR principal\n    (bearer-token identity) — you can only ever see your own memory. A list page returns\n    {count, items, has_more, next_cursor}. Every page rechecks TTL against the database\n    clock, so entries can expire and disappear w",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36425,
      "server": "io.github.barneywohl/bay-run",
      "tool": "remember",
      "kind": "removed",
      "severity": "info",
      "old_desc": "DURABLE cross-call MEMORY: store a small key->value so future runs of YOUR agent keep\n    context between calls (agents' #1 repeated pain — no built-in memory between tool calls).\n    Upserts (namespace, key) -> value, scoped to YOUR principal (derived from your bearer\n    token) so no other caller can read it. `value` is any JSON. Optional `ttl` (seconds) makes\n    it auto-expire. Recall it later",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36424,
      "server": "io.github.barneywohl/bay-run",
      "tool": "memory_context",
      "kind": "removed",
      "severity": "info",
      "old_desc": "FAST durable working CONTEXT in one call. With no arguments, load the newest values\n    from your default private context. Pass `updates` to atomically save decisions, plans,\n    tool results, or handoff state and receive the refreshed context in the SAME round trip;\n    pass `delete_keys` to prune it. The response is newest-first and byte-budgeted so an agent\n    can place it directly into a prom",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36423,
      "server": "io.github.barneywohl/bay-run",
      "tool": "request_specialist",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Ask Bay Run for a specialist for a task — and NEVER get a dead end. If a servable\n    specialist EXISTS, this chains discover -> (eval, if you pass labeled `examples`) -> and\n    returns a ready-to-call serve pointer (the proven winner, or the top mirrored suggestion).\n    If NO specialist exists yet, it RECORDS your demand (task + kind + a hash of examples) as a\n    pull signal to the operator an",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36422,
      "server": "io.github.barneywohl/bay-run",
      "tool": "speed_test",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Run Bay Run's fixed, bounded FAST-PATH benchmark. It executes embedding, reranking,\n    and classification through the curated small-model warm pool and returns per-stage model,\n    latency, cold-load status, plus total server wall time. The workload never accepts caller\n    input, so results are repeatable and abuse-bounded. Timings exclude client network/TLS;\n    compare providers from the same ",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36421,
      "server": "io.github.barneywohl/bay-run",
      "tool": "classify",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Classify text with a small CPU-served text-classification specialist — the guardrail /\n    safety / moderation / sentiment / intent / NLI layer agents need and that frontier routers\n    don't offer as tiny models. TWO modes:\n    (1) FIXED-LABEL: `model` = any HF AutoModelForSequenceClassification id (e.g.\n    'protectai/deberta-v3-base-prompt-injection-v2' for prompt-injection guardrail,\n    'unit",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36420,
      "server": "io.github.barneywohl/bay-run",
      "tool": "route",
      "kind": "removed",
      "severity": "info",
      "old_desc": "RUNTIME auto-router: send a job WITHOUT knowing which specialist to use, and Bay Run\n    picks the curated warm small specialist for the inferred task family when available. Unlike\n    find_specialist_for_task (which needs LABELED examples to PROVE a winner), this is a\n    zero-example pick for when you need a default without a bake-off. `task_hint` =\n    plain-language description (\"embed support",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36419,
      "server": "io.github.barneywohl/bay-run",
      "tool": "find_specialist_for_task",
      "kind": "removed",
      "severity": "info",
      "old_desc": "ONE call to find the best small specialist model for your task, proven on YOUR\n    examples. `task` = plain-language description (e.g. \"multilingual sentence embeddings\n    for FAQ search\", or \"extract product fields from scraped HTML\"). Set `kind` to steer\n    the bake-off family: embedding/rerank (retrieval), classification, or\n    generative/extraction (HTML->JSON).\n    `my_examples` shape foll",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36418,
      "server": "io.github.barneywohl/bay-run",
      "tool": "extract",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Turn messy HTML/text (e.g. a scraper/Firecrawl dump) into STRUCTURED JSON using a\n    small CPU-served generative specialist — the reliable \"extraction\" layer downstream\n    of scrapers, no GPU, cheap at volume. `model` must be a validated structured-output\n    specialist (`Qwen/Qwen2.5-0.5B-Instruct`, `Qwen/Qwen2.5-1.5B-Instruct`, or\n    `HuggingFaceTB/SmolLM2-360M-Instruct`); `content` = the raw",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36417,
      "server": "io.github.barneywohl/bay-run",
      "tool": "rerank",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Reorder candidate documents by true relevance to a query using an open\n    scalar-output cross-encoder/reranker, served on demand — the standard move to sharpen\n    RAG / search precision after a vector search returns a noisy top-k. `model` = an HF-\n    compatible scalar-output binary reranker/cross-encoder id (e.g. 'BAAI/bge-reranker-base');\n    vector and multilabel heads are unsupported. `query",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36416,
      "server": "io.github.barneywohl/bay-run",
      "tool": "embed",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Turn text into embedding vectors using ANY open embedding model. Configured common\n    specialists are pinned warm; long-tail models load on demand. No caller packaging or\n    deployment is required. `model` = any Hugging Face embedding /\n    sentence-transformers id (curated or long-tail, e.g. 'BAAI/bge-small-en-v1.5');\n    `input` = a string or list of strings. OpenAI-/v1/embeddings-compatible r",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36415,
      "server": "io.github.barneywohl/bay-run",
      "tool": "eval_models",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Prove which candidate model actually wins on YOUR data before committing — a\n    head-to-head bake-off, not a public leaderboard (MTEB rank does NOT predict\n    your-domain performance). `task` = 'embedding'|'rerank' (rank a labeled positive),\n    'classification' (score a classifier's top-1 label vs your gold labels), OR\n    'extraction'|'generation' (bake off generative extractors). `models` = c",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36414,
      "server": "io.github.barneywohl/bay-run",
      "tool": "discover_models",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Search the catalog for a small, cheap, open specialist model that does ONE\n    narrow job better/cheaper than a general LLM — embeddings, reranking, text\n    classification, NER/extraction, routing, guardrails, transcription, vision, audio.\n    Call this instead of guessing a model name (the catalog is huge; guesses hallucinate).\n    `query` = plain-language task; optional `kind`\n    (embedding|re",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36413,
      "server": "io.github.barneywohl/bay-run",
      "tool": "try_bay_run",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Run Bay Run's zero-credential activation proof. This tool accepts no arguments and\n    performs no caller-controlled compute: it always evaluates the fixed expression 6 * 7,\n    returns 42, and links to OAuth, MCP, A2A, document/PDF extraction, summarize, and RAG. Use it to verify that a\n    harness can discover and call Bay Run before obtaining a rate-limited demo bearer.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36412,
      "server": "io.github.WellApp-ai/well-mcp",
      "tool": "well_get_cash_flow_bridge",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get the workspace's cash-flow bridge — how the opening cash position became the closing one — the exact same steps the Well app's cash-flow waterfall chart shows. Use this instead of deriving flows from raw transaction reads.\n\nReturns `steps` in render order, each `{ label, value, kind }`. `kind` says how to read `value`:\n- \"start\" and \"total\" carry an ABSOLUTE cash position (the opening and closing anchors).\n- \"increase\" and \"decrease\" carry a gross flow MAGNITUDE, always positive. The direction lives in `kind`, not in the sign — never report a \"decrease\" as a negative number or add the magnitudes as though they were signed.\n- \"unexplained\" carries a SIGNED adjustment and is the one kind whose sign you must keep. It appears only when the four measured bars do not reconcile: it is the gap between them and the measured closing position, NOT cash that moved. Report it as an unexplained difference and say the bridge does not fully reconcile. Never fold it into the inflow or outflow figure, and never present it as spending, income, or a transfer.\n\nWalk the steps to reach the total: opening, plus every \"increase\", minus every \"decrease\", plus any \"unexplained\". When an \"unexplained\" ste",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36411,
      "server": "io.github.WellApp-ai/well-mcp",
      "tool": "well_get_cash_forecast",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get the workspace's cash-position forecast — trailing actual month-end balances plus a worst-case projection forward — the exact same series the Well app's \"Cash Position Forecast\" chart draws. Use this instead of projecting cash forward yourself from a cash figure and a burn rate.\n\nReturns `entries`, one per month, oldest first, each `{ month, actuals, projection }` where `month` is `YYYY-MM`:\n- `actuals` is the settled cash position at that month's end, and is null for future months.\n- `projection` is the worst-case value at that month's end, and is null for past months.\n\nSo the series has exactly one turn: actuals up to the present, projection after it. Do not fill the nulls in or treat a null as a zero.\n\n`anchor` names what the projection counts forward from: `{ month, amount, basis }`, where the first projection point is `amount` minus one month of trailing burn. Name the anchor whenever you present that point — without it a reader cannot tell a projection falling from a base that is weeks old from cash that is actually dropping, and the two produce the same number. `anchor` is absent when nothing is projected.\n\nRead `basis` before describing the anchor, because the two values",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36410,
      "server": "io.github.WellApp-ai/well-mcp",
      "tool": "well_get_burn",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get the workspace's average monthly burn — the trailing average of actual outflows, the exact same computation and number the Well app's avg-burn KPI tile shows. Use this instead of summing transactions yourself.\n\nReturns `amount` (a positive magnitude, not a signed figure) and `currency`, plus the window it was measured over: `trailing_months` is the window length, `months_in_window` and `months_with_data` say how much of it actually carried outflow.\n\n`per_month` is the outflow of each month in that window, oldest first — the numbers the average is the mean of. A month with no recorded outflow is present with `0`, not omitted, so the series and the average always agree; do not drop those months when you describe the trend. Use it to say whether burn is rising or falling. `amount` is the figure the app shows, so it is the one you lead with and the one you call the burn — never put a figure computed from the series in its place. If a dark month looks like a data gap rather than a real month of no spend, say it may be a gap; `amount` stays the headline either way.\n\n`change` is a percentage against `baseline`, not against anything in `per_month`. `baseline.period` names the months it ",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36409,
      "server": "io.github.WellApp-ai/well-mcp",
      "tool": "well_get_cost_structure",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get the workspace's cost structure: outflow for the latest closed month, broken down by category — the exact same computation and numbers the Well app's canvas cost-structure donut chart shows. Use this instead of summing/grouping transactions yourself.\n\nReturns `entries` (an array of `{ category, amount, pct }`, sorted by amount descending) and `currency` (the workspace base currency). `amount` is a magnitude (outflow), not signed. An entry also carries `category_key` when `rung` is \"category_key\", except on the rolled-up \"Other\" slice; that key is what `well_sum_transactions` accepts in `exempt_categories`, so use it to exclude a slice rather than matching its `category` label. On any other rung no entry carries a key, and there is nothing to exclude by — say so rather than passing a label.\n\n`period_start` and `period_end` are the inclusive `YYYY-MM-DD` bounds these amounts cover — always a single month. Read the period from those fields and state it whenever you present the numbers. Never derive it from today's date. Never present the figures as a quarter or a multi-month span. If both fields are absent, say the period is unknown rather than naming one.\n\n`rung` names which group",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36408,
      "server": "io.github.WellApp-ai/well-mcp",
      "tool": "well_get_cash_position",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get the workspace's current cash position: total cash on hand right now, converted to the workspace base currency, plus a per-account breakdown — the exact same computation and numbers the Well app's canvas KPI card shows. Use this instead of summing account balances yourself.\n\nReturns `amount`/`currency` (the converted total), `accounts` (per-account contributions: native amount/currency, converted amount, the FX rate applied), `as_of` (the FX-rate anchor date this snapshot is valid for), and `balance_history` when the workspace has one.\n\n`balance_history` is the trailing closed month-ends plus today, oldest first. Month-end is the only historical granularity that exists, so describe movement between months, never within one, and never as a daily series. A `null` amount is a month no connected account covered — not a zero balance. The field is absent when there is no reconstructed history, so make a trend claim only when it is present.\n\n`unavailable: true` means `amount` is a placeholder, not a real measurement (e.g. no accounts connected yet) — say so plainly rather than presenting it as a real €0 balance. `partial: true` means one or more accounts were excluded from an otherwise",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36407,
      "server": "io.github.WellApp-ai/well-mcp",
      "tool": "well_get_runway",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get the workspace's current cash runway — cash on hand, trailing-3-month average burn, and months of cash left — the exact same computation and numbers the Well app's canvas KPI cards show. Use this instead of computing runway yourself from raw account/transaction reads.\n\nReturns `cash` (amount + currency), `avg_burn` (amount + currency + trailing_months), `months`, and a `status` discriminator:\n- \"ok\" — a finite months figure.\n- \"capped\" — runway exceeds 36 months; report as \">36 months\", not the raw number.\n- \"infinite\" — cash is positive and the workspace isn't burning (net inflow); there is no meaningful \"months\" figure.\n- \"insufficient_data\" — not enough connected cash/transaction data to compute; tell the user to connect a bank/accounting connector (well_list_connectors) instead of guessing.\n\n`change` is a percentage against `baseline`. A baseline runway divides a month-end cash reading by a trailing burn window, so it takes two dates to describe: `baseline.period` is the cash month-end it was anchored at, and `baseline.burn_window` is the span of the burn it divided by, which normally ends an earlier month. Never present the baseline as the runway measured on one day. `trend",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36406,
      "server": "io.afterlaunch/agentic-growth-marketing",
      "tool": "set_scan_intensity",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Set how deeply AI visibility scans measure: 'l1' standard, 'l2' deep, 'l3' exhaustive. More passes per question per engine means a tighter confidence band. Scope 'config', Founder tier. Free to set; returns a quote for what the next scan will cost. Omit level to read the ladder and change nothing.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36405,
      "server": "ing.crank/crank",
      "tool": "get_support_dashboard",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Support desk metrics: open count, avg response/resolution time, breakdowns.\n\nRead-only. Returns totals, open/resolved/unassigned counts, resolution rate,\navg first-response + resolution seconds, by-status/category/priority maps,\nand a 14-day created-ticket trend. Mirrors the backoffice dashboard.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36404,
      "server": "ing.crank/crank",
      "tool": "assign_ticket",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Assign a support ticket to a staff user (username or id). Empty -> unassign.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36403,
      "server": "ing.crank/crank",
      "tool": "update_ticket_status",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Set a support ticket's status.\n\nstatus: open|in_progress|waiting_on_user|resolved|closed. Stamps resolved_at\non transition into resolved/closed and clears it on reopen.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36402,
      "server": "ing.crank/crank",
      "tool": "set_ticket_priority",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Set a support ticket's priority (ENG-69d5785b).\n\npriority: low|normal|high|urgent. Metadata-only -- no email, no status change.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36401,
      "server": "ing.crank/crank",
      "tool": "note_create",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Append an internal-only note to a support ticket (ENG-69d5785b).\n\nAgent-side context: records an internal SupportMessage (is_internal_note=True)\nthat is NEVER emailed to the requester, and leaves the ticket status\nunchanged. ticket_id: numeric id or human ticket number (e.g. CRK-AB2K9P).",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36400,
      "server": "ing.crank/crank",
      "tool": "reply_to_ticket",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Reply to a support ticket — emails the requester (SendGrid) + threads it.\n\nRecords the outbound message and advances status (open/waiting ->\nin_progress, or waiting_on_user when set_waiting). The message is persisted\neven if email delivery fails; the returned ``email_sent`` reflects the\ndelivery attempt.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36399,
      "server": "ing.crank/crank",
      "tool": "get_support_ticket",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Full support-ticket detail with the conversation thread. Read-only.\n\nticket_id: numeric id or human ticket number (e.g. CRK-AB2K9P).",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36398,
      "server": "ing.crank/crank",
      "tool": "list_support_tickets",
      "kind": "removed",
      "severity": "info",
      "old_desc": "List/filter Crank support tickets (newest first). Read-only.\n\nFilters (all optional): status (open|in_progress|waiting_on_user|resolved|\nclosed), priority (low|normal|high|urgent), category (billing|technical|\nfeature_request|general), search (matches ticket number/subject/requester\nemail+name/wallet). Returns {count, tickets[]}.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36397,
      "server": "ing.crank/crank",
      "tool": "set_integrator_share",
      "kind": "removed",
      "severity": "info",
      "old_desc": "ADMIN-GATED: approve an integrator and set its fee-share (0-20%).\n\nValidates ``share_bps`` against the per-leg ceiling (integrator_max_share_bps)\nAND the combined stacking guard (referral + clone + integrator <=\nmax_total_share_bps, so Crank keeps >=40% of every net fee). A breach is\nREJECTED, never silently clamped. Setting a share on a PENDING integrator also\napproves it. Requires a valid ``admin_secret`` (CRANK_ADMIN_SECRET).",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36396,
      "server": "ing.crank/crank",
      "tool": "crank_prompt_health",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Dev Process Health — recurring CC friction this week vs resolved.\n\nRead-only. Returns the latest weekly close-report review snapshot\n(ENG-dc453c0d): a ``Prompt health: N recurring issues, M resolved this week``\nheadline plus per-issue week-over-week trend (``trending_down_after_fix``)\nfor a dashboard widget. Surfaced in the Monday morning briefing under \"Dev\nProcess Health\". ``available=False`` until the first weekly review runs.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36395,
      "server": "ing.crank/crank",
      "tool": "crank_dependency_status",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Protocol dependency compatibility matrix — are we compatible right now?\n\nRead-only. Returns per-protocol RED/AMBER/GREEN status (drift, jupiter,\nkamino, marginfi, marinade, sanctum, raydium), our SDK pin vs latest, last\nhealth-probe result, on-chain program slot, next recommended action, and any\nauto-filed Engaij ticket — plus an overall headline. Maintained by the\nbackend dependency response engine; callable from the morning briefing,\ndispatch, or ad-hoc.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36394,
      "server": "ing.crank/crank",
      "tool": "list_turnkey_drift_backlog",
      "kind": "removed",
      "severity": "info",
      "old_desc": "The known pre-ENG-5d4d7f01 Turnkey drift backlog.\n\nWallets with a Turnkey sub-org whose enclave policy has never been\nconfirmed synced (``turnkey_policy_synced_at`` NULL) -- provisioned\nbefore the re-push fix landed. Read-only triage list; drive\nreconcile_turnkey_policy(wallet_address, repair=True) per wallet.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36393,
      "server": "ing.crank/crank",
      "tool": "reconcile_turnkey_policy",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Diff the LIVE Turnkey enclave policy against Django's expected policy.\n\nFetches the enclave's active signing policy and re-derives the same\nexpected policy set_wallet_policy would push, then diffs them.\n``applicable: false`` for a self-custody wallet (no Turnkey signer).\n``repair=False`` (default) only REPORTS drift -- operator-triggered repair\nis safer than auto-repair given the security implications of a policy\nre-push. ``repair=True`` re-pushes the expected policy and, on success,\nstamps the drift-tracking timestamp.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36392,
      "server": "ing.crank/crank",
      "tool": "go_live_status",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Live go-live posture + S1-S6 runbook stage readout (ENG-88a87e5d).\n\nThe single documented gated config surface (MB#20378 D2, follow-up to\nENG-b936ca31): renders the ENTIRE go-live flip state -- cluster, RPC host\n(bare hostname, never an api key or query string), paper-trading + soft-\nlaunch guards, both technology-service-fee rails (x402 + Jupiter swap fee),\nMoonPay environment, and multi-venue perps posture -- read fresh from\nconfig on every call (an admin can flip an env var and the very next call\nreflects it, no redeploy needed). ``stages`` is an ordered S1-S6 readout of\nthe go-live runbook derived purely from that posture, each\n``{stage, label, satisfied, blocking}`` -- the primary verification\ninstrument for every runbook stage (verify-runtime-behaviour-not-config).\n\nFREE read, never gated (never in x402 PAID_TOOLS): booleans/counts/hosts\nonly, no secret ever leaves this tool.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36391,
      "server": "dev.anatome/anatome",
      "tool": "log_weekly_checkin",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Record a weekly check-in. week_start/week_end are YYYY-MM-DD (weeks start Monday). `payload` is free-form: energy, sleep_quality, stress, soreness, adherence_pct, weight_kg, wins, blockers.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36390,
      "server": "dev.anatome/anatome",
      "tool": "get_weekly_checkins",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Recent weekly progress check-ins: bodyweight, energy, sleep, adherence, wins, blockers, and any coach reply.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36389,
      "server": "dev.anatome/anatome",
      "tool": "get_nutrition_weekly",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Per-week rollup of calories, macros, nutrients, water and days-logged, with average daily calories. Use for 'how was my last month?'. Requires X-App-User-Id.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36388,
      "server": "dev.anatome/anatome",
      "tool": "get_ppl_day",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Push/pull/legs shortcut — returns the canonical PPL day's exercise slots (the 'give me a push workout' wedge). day must be push, pull, or legs.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36387,
      "server": "dev.busymate/busymate-devtools",
      "tool": "list_store_categories",
      "kind": "removed",
      "severity": "info",
      "old_desc": "List the bmai App Store category taxonomy. By default only ACTIVE categories (visible to anyone); pass include_inactive:true (operator) to see all. Each row: id, slug, name, parent_id, icon, position, active.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36386,
      "server": "dev.busymate/busymate-devtools",
      "tool": "get_store_app",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Get ONE bmai App Store app by slug plus its versions, gallery media, pricing plans, locales, and recent published reviews. RLS-scoped: a published app is visible to anyone; a draft only to its developer/an operator. Returns { app (metadata + honest rollups + url + icon_url), versions[], media[] (with public CDN urls), pricing_plans[], locales[], reviews[] }.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36385,
      "server": "dev.busymate/busymate-devtools",
      "tool": "list_store_apps",
      "kind": "removed",
      "severity": "info",
      "old_desc": "List apps in the bmai App Store (busymate.ai/store). By default the PUBLISHED catalogue (visible to anyone); a developer also sees their OWN drafts and an operator sees ALL (RLS-scoped). Filters: status, category_id, pricing_model (free|one_time|subscription|usage), developer_id, min_rating, tags (rows containing ALL), q (name/tagline/description substring), mine (only apps you own). Sort: popular (install_count, default) | newest (published_at) | rating | name. limit (default 50, cap 200). Each row carries the honest rollups (install_count, rating_avg/count — never client-writable), curation (badges/featured/rank), and its store URL + icon URL.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36384,
      "server": "com.readyapis/api",
      "tool": "jobs_salary_signals",
      "kind": "added",
      "severity": "info",
      "old_desc": null,
      "new_desc": "Salary range + midpoint + band tier (junior/mid/senior/staff) for a skill or title. Useful for comp benchmarking and job-posting copy.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36383,
      "server": "com.readyapis/api",
      "tool": "jobs_companies_hiring",
      "kind": "added",
      "severity": "info",
      "old_desc": null,
      "new_desc": "Top companies hiring for a given skill or role. Returns company name + open-roles estimate + remote status + salary range when known.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36382,
      "server": "com.readyapis/api",
      "tool": "jobs_remote_trends",
      "kind": "added",
      "severity": "info",
      "old_desc": null,
      "new_desc": "Remote-work share by skill or title. Returns remote % alongside total job count and trend direction.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36381,
      "server": "com.readyapis/api",
      "tool": "jobs_role_skills",
      "kind": "added",
      "severity": "info",
      "old_desc": null,
      "new_desc": "Skills most commonly required for a given job title (e.g. 'staff engineer', 'product manager').",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36380,
      "server": "com.readyapis/api",
      "tool": "jobs_related_skills",
      "kind": "added",
      "severity": "info",
      "old_desc": null,
      "new_desc": "Top related skills frequently co-mentioned with a target skill. Useful for skill-graph traversal and job-description templating.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36379,
      "server": "com.readyapis/api",
      "tool": "jobs_skill_trends",
      "kind": "added",
      "severity": "info",
      "old_desc": null,
      "new_desc": "Job-count + trend direction + top related skills for a single skill (e.g. 'python', 'kubernetes'). Optional location filter.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36378,
      "server": "com.readyapis/api",
      "tool": "jobs_salary_signals",
      "kind": "mutated",
      "severity": "medium",
      "old_desc": "Salary range + midpoint + band tier (junior/mid/senior/staff) for a skill or title. Useful for comp benchmarking and job-posting copy.",
      "new_desc": "Return salary signal aggregates for a role title in the loaded trend set.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36377,
      "server": "com.readyapis/api",
      "tool": "jobs_companies_hiring",
      "kind": "mutated",
      "severity": "medium",
      "old_desc": "Top companies hiring for a given skill or role. Returns company name + open-roles estimate + remote status + salary range when known.",
      "new_desc": "Return curated company-level hiring signals for a location and optional role family.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36376,
      "server": "com.readyapis/api",
      "tool": "jobs_remote_trends",
      "kind": "mutated",
      "severity": "medium",
      "old_desc": "Remote-work share by skill or title. Returns remote % alongside total job count and trend direction.",
      "new_desc": "Return remote/hybrid/on-site trend buckets for a role title.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36375,
      "server": "com.readyapis/api",
      "tool": "jobs_role_skills",
      "kind": "mutated",
      "severity": "medium",
      "old_desc": "Skills most commonly required for a given job title (e.g. 'staff engineer', 'product manager').",
      "new_desc": "Return aggregated skill signals for a role title. Demo mode allows selected sample job titles.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36374,
      "server": "com.readyapis/api",
      "tool": "jobs_related_skills",
      "kind": "mutated",
      "severity": "medium",
      "old_desc": "Top related skills frequently co-mentioned with a target skill. Useful for skill-graph traversal and job-description templating.",
      "new_desc": "Return ranked related skills for a loaded skill trend.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36373,
      "server": "com.readyapis/api",
      "tool": "jobs_skill_trends",
      "kind": "mutated",
      "severity": "medium",
      "old_desc": "Job-count + trend direction + top related skills for a single skill (e.g. 'python', 'kubernetes'). Optional location filter.",
      "new_desc": "Return job and skill-demand trend rows. Demo mode allows selected sample skills.",
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36372,
      "server": "com.hireahelper/mcp",
      "tool": "get_quote_details",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Gets details and status for a specific quote by its quote key (GUID).",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36371,
      "server": "com.hireahelper/mcp",
      "tool": "browse_service_providers",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Browse moving-labor service providers serving a 5-digit US ZIP code on a given date. Resolve any city/state the user gives you to a single 5-digit ZIP yourself before calling; if the location is ambiguous, ask the user to confirm which ZIP. Returns a compact list including providers that cannot currently be booked (canBook=false with reasonsCantShow). Results are ordered per sortOrder: best price ",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36370,
      "server": "com.hireahelper/mcp",
      "tool": "get_job_reschedule_request",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Gets the latest reschedule status for a job (e.g. waiting for provider, successfully changed).",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36369,
      "server": "com.hireahelper/mcp",
      "tool": "get_order_details",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Retrieves complete details for one or more Moves, based on OrderID(s). Returns the raw order details.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36368,
      "server": "com.hireahelper/mcp",
      "tool": "transmit_lead",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Securely transmits a lead contact's information to the marketplace. Requires an email address or phone number. Returns the raw result.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36367,
      "server": "com.hireahelper/mcp",
      "tool": "get_distance_between_zips",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Gets the driving distance, straight-line ('crow flies') distance, and driving time between two United States ZIP codes. Useful for estimating a move from an origin ZIP to a destination ZIP.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36366,
      "server": "com.hireahelper/mcp",
      "tool": "get_service_provider_list",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Gets the list of service providers available for a move on a given date and loading ZIP code, factoring in availability. This is the primary way to discover which providers serve an area. Returns the raw provider list, ordered per sortOrder: best price -> PriceLowToHigh, most expensive -> PriceHighToLow, best quality/highest rated -> QualityRating, most reviews -> MostReviewed, soonest available -",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36365,
      "server": "com.hireahelper/mcp",
      "tool": "transmit_leads_bulk",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Securely transmits multiple lead contacts' information to the marketplace in bulk. Each item requires an email address or phone number. Returns the raw result.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36364,
      "server": "com.hireahelper/mcp",
      "tool": "create_job_reschedule_request",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Initiates a customer request to change the date/time of a job. If the job is Waiting For Helper it may be changed immediately. Returns the raw result.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36363,
      "server": "com.hireahelper/mcp",
      "tool": "get_job_reschedule_availability",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Gets the list of available dates and arrival windows for the provider on a job, for rescheduling.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36362,
      "server": "com.hireahelper/mcp",
      "tool": "get_distance_between_zips_bulk",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Calculates distances for many United States ZIP code pairs at once (bulk). Returns the raw result for every pair.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36361,
      "server": "com.hireahelper/mcp",
      "tool": "get_distance_between_coordinates",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Calculates the driving distance and time between two geographic coordinates (latitude/longitude pairs).",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36360,
      "server": "com.hireahelper/mcp",
      "tool": "find_contact_by_phone_or_email",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Looks up an existing customer contact by phone number or email and returns the contact record along with their quotes and orders within a recent lookback window. At least one of phoneNumber or emailAddress must be supplied. If no matching contact is found, a plain-text \"No matching contact found.\" message is returned instead of JSON; a JSON result with success=true and an empty jobs list means the contact exists but has no recent quote/order activity.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36359,
      "server": "com.hireahelper/mcp",
      "tool": "delete_job_reschedule_request",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Cancels (deletes) a pending reschedule request for a job. Returns the raw result.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36358,
      "server": "com.hireahelper/mcp",
      "tool": "check_availability_for_lead",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Checks the realtime availability (day and arrival windows) for a given LeadId on a given job date.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36357,
      "server": "com.hireahelper/mcp",
      "tool": "add_contact_note",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Adds a note to an existing contact in the partner's CRM and returns the new contact-event id. WRITE ACTION: this modifies partner CRM data. Requires the numeric contactId (e.g. from upsert_contact or find_contact_by_phone_or_email). If the contact does not exist, a plain-text not-found message is returned instead of throwing.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36356,
      "server": "com.hireahelper/mcp",
      "tool": "book_labor_only_order",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Creates and books a Labor-Only Order in the marketplace. THIS BOOKS A REAL MOVE. Same-day bookings are not allowed; next-day has restrictions. Returns the raw booking result.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36355,
      "server": "com.hireahelper/mcp",
      "tool": "upsert_contact",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Creates or updates a Lead contact in the partner's CRM and returns the contact's id. WRITE ACTION: this modifies partner CRM data. At least one of phoneNumber or emailAddress must be supplied. An optional note can be included; the service saves it with the contact on a best-effort basis, so the upsert still succeeds even if the note cannot be saved.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36354,
      "server": "com.framesail/framesail",
      "tool": "remove_segment_sfx",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Remove a sound effect from a segment. With one SFX attached, no name\n    needed; with several, pass sfx_name (the asset name shown by\n    get_segment_assets).",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36353,
      "server": "com.52choujiang/xhs-insights",
      "tool": "xhs_pgy_get_note_detail",
      "kind": "removed",
      "severity": "info",
      "old_desc": "根据 note_id 获取小红书蒲公英单篇笔记商业增强详情，包括正文、图片或视频摘要、作者、曝光量、阅读量、互动量和图文/视频报价。\n这是蒲公英商业口径数据，不等同普通公开笔记详情；成功调用扣减 20 积分，失败不扣费。",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36352,
      "server": "com.52choujiang/xhs-insights",
      "tool": "xhs_get_product_detail",
      "kind": "removed",
      "severity": "info",
      "old_desc": "根据小红书商品 sku_id 获取商品详情；已有该 ID 时直接使用，否则可从 xhs_search_products 获取；不支持商品链接、spu_id 或搜索词。",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36351,
      "server": "co.lovie/company-formation",
      "tool": "card_get_list_card_transactions",
      "kind": "removed",
      "severity": "info",
      "old_desc": "Sync provider transactions (best-effort), then return the card's rows.",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36350,
      "server": "co.lovie/company-formation",
      "tool": "account_get_list_accounts",
      "kind": "removed",
      "severity": "info",
      "old_desc": "GetListAccounts retrieves a list of accounts with filtering and pagination",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    },
    {
      "id": 36349,
      "server": "co.lovie/company-formation",
      "tool": "transaction_get_list_transactions",
      "kind": "removed",
      "severity": "info",
      "old_desc": "List transactions with filtering, sorting, and pagination Supports: filtering by account, counterparty, card, types, statuses, date range, amounts Supports: sorting by date, amount, created_at, status, type (ascending or descending)",
      "new_desc": null,
      "detected_at": "2026-09-27T06:17:17.888Z"
    }
  ]
}