This is the canonical repository guide for every coding agent and harness working on tiingo-mcp. CLAUDE.md is a symlink to this file.
Following OpenAI Harness Engineering, this file is a concise map; use the focused references for durable detail.
- ARCHITECTURE.md — module boundaries, REST safety, upstream WebSocket lifecycle, and process ownership.
- API_SURFACE.md — exact tool-to-route/access/test matrix and excluded surfaces.
- QUALITY.md — local/CI gates, coverage, deterministic/live evidence, and documentation contracts.
- README.md — installation, MCP configuration, tools, entitlements, resources, and prompts.
- CHANGELOG.md — released and unreleased user-facing changes.
- Expose 38 tools while preserving the original 17 tool names, required inputs, omission behavior, and results; four approved optional
columnsadditions are the only legacy descriptor deltas. - Preserve three fixed resources, one resource template, five prompts, stdio transport, JSON text compatibility, structured content, and
TIINGO_API_KEYauthentication. - Tiingo WebSockets are upstream data connections exposed through four finite tools. Do not describe or implement an MCP WebSocket or Streamable HTTP transport.
- Keep the implementation Rust-only. Do not reintroduce Python packaging, virtual environments, or
uvxcompatibility. - Keep stdout protocol-only. Send diagnostics to stderr and never log credentials or authorization headers.
- Make surgical changes and preserve unrelated user work. Inspect
git statusbefore editing. - Do not run ignored, quota-consuming live tests without explicit authorization.
- Do not publish crates, create or push tags, create releases, or upload MCPB bundles without explicit authorization.
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --locked
cargo llvm-cov --all-targets --all-features --locked --fail-under-lines 93 --summary-only
cargo build --release --locked
cargo deny check all
cargo run --quiet -- --version
dist planThe normal suite binds local mock servers and is credential-free. Ignored live tests consume quota or bandwidth and require explicit authorization plus TIINGO_API_KEY.
To build an MCPB bundle from an existing target binary directory:
bash packaging/mcpb/package.sh <target-triple> <binary-directory>- Keep the version synchronized in
Cargo.toml, the roottiingo-mcpentry inCargo.lock, andpackaging/mcpb/manifest.json. - Add the matching
CHANGELOG.mdsection asX.Y.Z (Unreleased)while versioned release work accumulates. For this unversioned expansion, keep the top-levelUnreleasedsection until a version is authorized. - Before creating a release tag, replace the versioned
Unreleasedmarker with the release date. - Keep current-release URLs in
README.mdpointed at the latest published tag until its replacement exists. - Keep GitHub Release titles derived from the tag as bare
X.Y.Z, with no supported namespace, date, or timestamp. - Run the QUALITY.md release gate plus
dist planandcargo publish --dry-run --lockedbefore requesting release authorization.