Agent Gateway · Model Context Protocol

Ask Kitalpha for its data from inside your AI assistant.

One URL. Any MCP client. Seven read-only tools over data Kitalpha already publishes — and every answer comes back in a signed envelope that states its licence terms and proves, with a published key, that it left Kitalpha unaltered.

The endpoint

https://api.dwkitalpha.com/mcp

  • Transport: MCP Streamable HTTP — a JSON-RPC 2.0 message per POST, JSON back.
  • Protocol revisions: 2026-07-28 (stateless, per-request _meta) and the 2025-03-26 / 2025-06-18 / 2025-11-25 initialize-handshake revisions, on the same URL. No session ids are minted.
  • Access: anonymous, free, read-only. Per-address budget of 120 requests a minute.
  • Origin: requests with no Origin header (every hosted assistant), from dwkitalpha.com, or from localhost tooling are accepted; any other browser origin is refused.

Quickstart

The menu labels below are as they stood in August 2026; the one thing that does not change is the URL.

Claude

claude.ai: Settings → Connectors → Add custom connector. Name it Kitalpha, paste https://api.dwkitalpha.com/mcp, leave authentication empty, add. Enable it in a chat's tools menu.

Claude Code:

claude mcp add --transport http kitalpha https://api.dwkitalpha.com/mcp

ChatGPT

Settings → Connectors → (under Advanced, turn on Developer mode) → Create. Name Kitalpha, MCP server URL https://api.dwkitalpha.com/mcp, authentication None. Then enable it from the chat's tools menu.

Anything else (curl, your own client)

curl -s https://api.dwkitalpha.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"me","version":"1"}}}'
curl -s https://api.dwkitalpha.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -H 'mcp-protocol-version: 2025-06-18' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_gatewatch_universe","arguments":{}}}'

Every JSON-RPC result is the tool's envelope in structuredContent, and the same JSON as text in content[0].text.

The tools (read live from the gateway just now)

ToolWhat it answers
list_calendar_events Scheduled economic releases in a date window, from the publishing agencies' own schedules. country "US" (default) covers BLS, BEA, Census, the Federal Reserve and Treasury releases with exact UTC instants, reference periods and the agency's release URL; any other ISO-3166 alpha-2 code returns that country's releases from licence-verified statistical agencies and central banks. No consensus estimates exist anywhere in this data. Impact tiers are withheld (FRED-derived history; FRED forbids AI use). Window ≤ 366 days.
get_gatewatch_universe The current Gate Watch board: for every tracked non-traded BDC, what it honored of its shareholders' most recent quarterly repurchase requests (requested, honored, percentage, state clean/gated), read from the fund's own SC TO-I/A filing on SEC EDGAR, plus the aggregate counts the free site shows, pending NAV strikes, filings read and refused, and the full-universe accounting (tracked, queued with reason, excluded with policy). Descriptive only.
get_gatewatch_fund One tracked fund by slug (slugs come from get_gatewatch_universe): its current state and the free-tier result history — for a non-traded BDC, each quarter's requested/honored figures with the filing they came from; for an interval fund, its announced repurchase offers and the results its shareholder reports later disclosed. Free tier only: the complete accession-linked record is Gate Watch Pro and is not reachable here. Descriptive only.
get_brief A published Kitalpha brief in full — by slug, or the latest published brief for an instrument when no slug is given — with its extractive evidence records (verbatim source spans and attribution), resolved footnotes, the groundedness verdict summary, and its Signed Brief receipt (ledger id, the receipt row and its verification URL). The response also lists every published brief's slug. v1 instrument: "fomc" (Federal Open Market Committee statements). General information only.
list_series The macro and rates series this gateway serves — the U.S. Treasury par yield curve (1-month to 30-year), Treasury bill rates, the real (TIPS) curve, Henry Hub natural gas when read EIA-direct, and the Treasury-derived 2s10s and 3m10y spreads — each with its originator, attribution line and licence. Also lists, with the reason, the series that exist on the website but are withheld here (FRED-sourced; FRED's terms forbid AI/LLM use).
get_series Observations for one series by id (ids from list_series), newest last, with the series' originator, attribution, licence and methodology and a one-sentence factual answer. from/to bound the window (YYYY-MM-DD); limit caps the count (default 120, max 2000, most recent kept). Series withheld by licence are refused with the reason.
verify_receipt Verify a provenance block from any Kitalpha gateway response against the published key registry: re-derives the signing input (RFC 8785 canonical JSON of the block without its signature), checks the Ed25519 signature under key_id, checks the key was valid at signed_at, and — when the payload is supplied — recomputes payload_hash. The verdict is itself returned in a signed envelope. Anyone can do the same offline with https://dwkitalpha.com/.well-known/kitalpha-provenance.json; this tool is a convenience, not a dependency.

Read-only by construction: nothing here writes, nothing here triggers the content engine, and nothing here reaches a data provider — every tool reads rows Kitalpha already stores. Gate Watch through this door is the free tier (the same record the public fund pages show); the complete accession-linked record is the Gate Watch Pro product and is not served here.

The signed envelope

Every response is { payload, provenance }. The payload is the answer. The provenance block carries the SHA-256 of the payload over RFC 8785 canonical JSON, the signing instant, the key id, one licence entry per dataset the answer drew on (its attribution line, resale flag and terms URL), the terms of the feed itself, and an Ed25519 signature over all of that. Alter the data, the timestamp or a licence line and the signature fails. The format is published as an open specification so anyone can implement or verify it: Kitalpha Provenance Envelope, version 1.

A live example — list_calendar_events, signed as this page rendered

{
  "payload": {
    "country": "US",
    "tz": "UTC",
    "from": "2026-08-25",
    "to": "2026-08-31",
    "count": 6,
    "events": [
      {
        "slug": "new-home-sales-july-2026",
        "title": "New Residential Sales, July 2026",
        "indicator": {
          "id": "NEWHOME",
          "slug": "new-home-sales",
          "label": "New Residential Sales",
          "short": "New Home Sales"
        },
        "agency": {
          "id": "census",
          "label": "U.S. Census Bureau",
          "short": "Census",
          "url": "https://www.census.gov"
        },
        "scheduled_utc": "2026-08-25T14:00:00+00:00",
        "local": {
          "date": "2026-08-25",
          "time": "14:00",
          "abbrev": "UTC",
          "tz": "UTC"
        },
        "time_unspecified": false,
        "reference_period": {
          "kind": "month",
          "code": "2026-07",
          "label": "July 2026",
          "qualifier": null
        },
        "state": "scheduled",
        "source_url": "https://www.census.gov/construction/nrs/index.html",
        "schedule_url": "https://www.census.gov/economic-indicators/calendar-listview.html",
        "consensus": null,
        "consensus_note": "No consensus estimate is shown. Kitalpha does not license survey forecasts of economic releases.",
        "page_url": "https://dwkitalpha.com/calendar/new-home-sales-july-2026"
      },
      {
        "slug": "gdp-q2-2026-second-estimate",
        "title": "Gross Domestic Product, Q2 2026 (Second Estimate)",
        "indicator": {
          "id": "GDP",
          "slug": "gdp",
          "label": "Gross Domestic Product",
          "short": "GDP"
        },
        "agency": {
          "id": "bea",
          "label": "U.S. Bureau of Economic Analysis",
          "short": "BEA",
          "url": "https://www.bea.gov"
        },
        "scheduled_utc": "2026-08-26T12:30:00+00:00",
        "local": {
          "date": "2026-08-26",
          "time": "12:30",
          "abbrev": "UTC",
          "tz": "UTC"
        },
        "time_unspecified": false,
        "reference_period": {
          "kind": "quarter",
          "code": "2026-Q2",
          "label": "Q2 2026",
          "qualifier": "Second Estimate"
        },
        "state": "scheduled",
        "source_url": "https://www.bea.gov/data/gdp/gross-domestic-product",
        "schedule_url": "https://www.bea.gov/news/schedule",
        "consensus": null,
        "consensus_note": "No consensus estimate is shown. Kitalpha does not license survey forecasts of economic releases.",
        "page_url": "https://dwkitalpha.com/calendar/gdp-q2-2026-second-estimate"
      },
      {
        "slug": "pce-july-2026",
        "title": "Personal Income and Outlays, July 2026",
        "indicator": {
          "id": "PCE",
          "slug": "pce",
          "label": "Personal Income and Outlays",
          "short": "PCE"
        },
        "agency": {
          "id": "bea",
          "label": "U.S. Bureau of Economic Analysis",
          "short": "BEA",
          "url": "https://www.bea.gov"
        },
        "scheduled_utc": "2026-08-26T12:30:00+00:00",
        "local": {
          "date": "2026-08-26",
          "time": "12:30",
          "abbrev": "UTC",
          "tz": "UTC"
        },
        "time_unspecified": false,
        "reference_period": {
          "kind": "month",
          "code": "2026-07",
          "label": "July 2026",
          "qualifier": null
        },
        "state": "scheduled",
        "source_url": "https://www.bea.gov/data/income-saving/personal-income",
        "schedule_url": "https://www.bea.gov/news/schedule",
        "consensus": null,
        "consensus_note": "No consensus estimate is shown. Kitalpha does not license survey forecasts of economic releases.",
        "page_url": "https://dwkitalpha.com/calendar/pce-july-2026"
      },
      {
        "slug": "durable-goods-july-2026",
        "title": "Advance Report on Durable Goods Manufacturers' Shipments, Inventories and Orders, July 2026",
        "indicator": {
          "id": "DURABLES",
          "slug": "durable-goods",
          "label": "Advance Report on Durable Goods Manufacturers' Shipments, Inventories and Orders",
          "short": "Durable Goods"
        },
        "agency": {
          "id": "census",
          "label": "U.S. Census Bureau",
          "short": "Census",
          "url": "https://www.census.gov"
        },
        "scheduled_utc": "2026-08-26T12:30:00+00:00",
        "local": {
          "date": "2026-08-26",
          "time": "12:30",
          "abbrev": "UTC",
          "tz": "UTC"
        },
        "time_unspecified": false,
        "reference_period": {
          "kind": "month",
          "code": "2026-07",
          "label": "July 2026",
          "qualifier": null
        },
        "state": "scheduled",
        "source_url": "https://www.census.gov/manufacturing/m3/index.html",
        "schedule_url": "https://www.census.gov/economic-indicators/calendar-listview.html",
        "consensus": null,
        "consensus_note": "No consensus estimate is shown. Kitalpha does not license survey forecasts of economic releases.",
        "page_url": "https://dwkitalpha.com/calendar/durable-goods-july-2026"
      },
      {
        "slug": "petroleum-status-week-ending-21-august-2026",
        "title": "Weekly Petroleum Status Report",
        "indicator": {
          "id": "PETROLEUM",
          "slug": "petroleum-status",
          "label": "Weekly Petroleum Status Report",
          "short": "Crude stocks"
        },
        "agency": {
          "id": "eia",
          "label": "U.S. Energy Information Administration",
          "short": "EIA",
          "url": "https://www.eia.gov"
        },
        "scheduled_utc": "2026-08-26T14:30:00+00:00",
        "local": {
          "date": "2026-08-26",
          "time": "14:30",
          "abbrev": "UTC",
          "tz": "UTC"
        },
        "time_unspecified": false,
        "reference_period": {
          "kind": "week",
          "code": "2026-08-21",
          "label": "week ending 21 August 2026",
          "qualifier": null
        },
        "state": "scheduled",
        "source_url": "https://www.eia.gov/petroleum/supply/weekly/",
        "schedule_url": "https://www.eia.gov/petroleum/supply/weekly/schedule.php",
        "consensus": null,
        "consensus_note": "No consensus estimate is shown. Kitalpha does not license survey forecasts of economic releases.",
        "page_url": "https://dwkitalpha.com/calendar/petroleum-status-week-ending-21-august-2026"
      },
      {
        "slug": "natural-gas-storage-week-ending-21-august-2026",
        "title": "Weekly Natural Gas Storage Report",
        "indicator": {
          "id": "NGSTORAGE",
          "slug": "natural-gas-storage",
          "label": "Weekly Natural Gas Storage Report",
          "short": "Gas storage"
        },
        "agency": {
          "id": "eia",
          "label": "U.S. Energy Information Administration",
          "short": "EIA",
          "url": "https://www.eia.gov"
        },
        "scheduled_utc": "2026-08-27T14:30:00+00:00",
        "local": {
          "date": "2026-08-27",
          "time": "14:30",
          "abbrev": "UTC",
          "tz": "UTC"
        },
        "time_unspecified": false,
        "reference_period": {
          "kind": "week",
          "code": "2026-08-21",
          "label": "week ending 21 August 2026",
          "qualifier": null
        },
        "state": "scheduled",
        "source_url": "https://ir.eia.gov/ngs/ngs.html",
        "schedule_url": "https://ir.eia.gov/ngs/schedule.html",
        "consensus": null,
        "consensus_note": "No consensus estimate is shown. Kitalpha does not license survey forecasts of economic releases.",
        "page_url": "https://dwkitalpha.com/calendar/natural-gas-storage-week-ending-21-august-2026"
      }
    ],
    "impaired_sources": [
      {
        "source": "treasury:auctions",
        "label": "Treasury auction schedule",
        "covers": "Treasury bill, note, bond and TIPS auctions",
        "note": "Treasury auction schedule temporarily unavailable. Both of Treasury's auction endpoints (TreasuryDirect and the Fiscal Data API) refuse the TLS handshake from our servers, so we cannot read the auction book at all — this is a transport failure on our side of the wire, not a quiet fortnight at Treasury. Auctions are therefore MISSING from the calendar below rather than simply not scheduled, and we would rather say so than let an empty week imply that the government has stopped selling debt. Everything else on this page is unaffected.",
        "since": "2026-08-24T08:40:29.16+00:00"
      }
    ],
    "excluded_fields": {
      "impact": "Withheld: impact tiers are computed on FRED-derived release-date history and FRED's terms forbid AI/LLM use of its data. Human readers can see them at https://dwkitalpha.com/calendar/methodology."
    },
    "consensus": null,
    "consensus_note": "No consensus estimate is shown for any release. Kitalpha does not license survey forecasts of economic releases.",
    "as_of": "2026-08-25T04:08:35.868Z",
    "calendar_url": "https://dwkitalpha.com/calendar"
  },
  "provenance": {
    "spec": "kitalpha-provenance/1",
    "spec_url": "https://dwkitalpha.com/agents/provenance-spec",
    "issuer": "Kitalpha Finance — D & W Investment and Consulting Group Pty Ltd (ACN 677 106 268, ABN 71 677 106 268)",
    "tool": "list_calendar_events",
    "canonicalization": "RFC8785",
    "hash_algorithm": "SHA-256",
    "payload_hash": "155a83e5112db9c2113b92513be4ef171c147e8504ee6e7c5ed26a8ed014897f",
    "signed_at": "2026-08-25T04:08:35.876Z",
    "key_id": "kitalpha-agent-2026-08",
    "signature_algorithm": "Ed25519",
    "public_key_url": "https://dwkitalpha.com/.well-known/kitalpha-provenance.json",
    "licences": [
      {
        "dataset": "calendar:us",
        "label": "U.S. economic release calendar (agency schedules)",
        "licence_family": "public_domain",
        "attribution_text": "Release schedules published by the U.S. Bureau of Labor Statistics, Bureau of Economic Analysis, Census Bureau, Federal Reserve Board and U.S. Treasury; presented by Kitalpha Finance",
        "resale_permitted": true,
        "terms_url": "https://www.usa.gov/government-copyright",
        "note": "Impact tiers are withheld from this feed: they rest on FRED-derived release-date history and FRED's terms forbid AI/LLM use of its data. No consensus estimates exist anywhere in this data (Kitalpha licenses no survey forecasts)."
      }
    ],
    "agent_terms": "Free use with attribution to Kitalpha Finance (https://dwkitalpha.com) and to the originating source named in each licence entry. The gateway feed itself may not be resold, sublicensed or redistributed as a data product. General information only; nothing in any payload is financial advice.",
    "signature": "0fcaa702f2f40f079d5c56b2888e2aac5f1f0a931ac8a59e5ad0d0a714759bddf2185078f03a401574396ae23ad79f884d876f32427d494f979b1c5d9c74ec05"
  }
}

Verify it yourself

With nothing from Kitalpha but the published registry:

// Node 20+ (or any WebCrypto runtime). Verifies an envelope with nothing but the published registry.
const canon = (v) => v === null || typeof v !== "object" ? JSON.stringify(v)
  : Array.isArray(v) ? `[${v.map(canon).join(",")}]`
  : `{${Object.keys(v).filter((k) => v[k] !== undefined).sort().map((k) => `${JSON.stringify(k)}:${canon(v[k])}`).join(",")}}`;
const bytes = (h) => Uint8Array.from(h.match(/../g), (x) => parseInt(x, 16));
const hex = (b) => [...new Uint8Array(b)].map((x) => x.toString(16).padStart(2, "0")).join("");

const registry = await (await fetch("https://dwkitalpha.com/.well-known/kitalpha-provenance.json")).json();
const { payload, provenance } = envelope;                      // the { payload, provenance } you received
const key = registry.keys.find((k) => k.key_id === provenance.key_id);
const { signature, ...unsigned } = provenance;
const pub = await crypto.subtle.importKey("raw", bytes(key.public_key_hex), { name: "Ed25519" }, false, ["verify"]);
const sigOk = await crypto.subtle.verify({ name: "Ed25519" }, pub, bytes(signature), new TextEncoder().encode(canon(unsigned)));
const hashOk = hex(await crypto.subtle.digest("SHA-256", new TextEncoder().encode(canon(payload)))) === provenance.payload_hash;
console.log({ sigOk, hashOk });                                // both true ⇒ unaltered, and from Kitalpha

Or ask the gateway: the verify_receipt tool runs exactly this check and returns the verdict — in a signed envelope of its own.

Published keys

Registry: https://dwkitalpha.com/.well-known/kitalpha-provenance.json. A retired key is never removed; everything it signed inside its interval still verifies.

Key idPurposeStatusPublic key (hex)
kitalpha-brief-2026-06 Signed Brief receipts minted by POST /api/brief and verified at https://dwkitalpha.com/ledger/{id} active · from 2026-06-19 49326fb2fc3e4361a67037bea7bc64aeb8819c38ea169c560089222e719a2c62
kitalpha-agent-2026-08 Agent gateway response envelopes (MCP endpoint https://api.dwkitalpha.com/mcp) and the verify_receipt tool active · from 2026-08-25 099cd21fce407b969ea95ce8f5020c0a7d1c40e842f2571a4cfcb040e0dd75d9

Licence terms

Free use with attribution to Kitalpha Finance (https://dwkitalpha.com) and to the originating source named in each licence entry. The gateway feed itself may not be resold, sublicensed or redistributed as a data product. General information only; nothing in any payload is financial advice.

The terms of the data travel with each answer, drawn from the same licence registries the website publishes under. The gate the gateway applies, stated in full:

  • U.S. economic calendar — agency schedules (BLS, BEA, Census, the Federal Reserve, Treasury) are U.S. government works and are served. The impact tiers are withheld: they rest on FRED-derived release-date history and FRED's terms forbid use of its data with AI systems. No consensus estimates exist in the data at all.
  • International calendar — a source is served only when its licence was verified by a human, resale is permitted, and there is no paid-tier permission hold. Sources with a pass-through clause are served with their terms. The withheld sources are listed, with the reason, in every answer.
  • Macro series — the Treasury par, bill and real curves, the Treasury-derived spreads, and Henry Hub when read from the EIA directly. Every FRED-sourced series is withheld (and listed, with the reason): FRED's terms forbid AI/LLM use.
  • Gate Watch — read from funds' own SEC EDGAR filings (U.S. government works). Quote figures as “according to Kitalpha Gate Watch data”. Free tier only.
  • Signed Briefs — Kitalpha's own editorial content: quote with attribution and a link; no resale. Each brief's ledger receipt is included so the brief itself can be verified.

What this is not

It is not financial advice and it is not a recommendation engine: the tools describe what filings, schedules and statements say, and the answers draw no conclusion about any fund, market or security. It is not a private feed — everything served here is already public on this site. And it is not a guarantee that a payload is true; it is a guarantee that the payload is what Kitalpha produced, when, and under which terms. The truth claims are the source citations inside each payload — a filing URL, an agency schedule, a central-bank statement.