You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make Odometer's agent integration an inspectable product experience: humans can install, configure, verify, understand, and remove it, while agents can reliably discover when and how to use Odometer's analytics.
This is a P0 release gate for the first MCP delivery in #47. A configuration file or running process alone must never be presented as proof that the integration works.
MCP integrations are commonly added with no trustworthy answer to basic questions:
Is the server installed?
Did the correct client configuration load?
Can the client launch and initialize it?
Are the expected tools exposed?
Is Odometer's data current and queryable?
Has a real agent successfully used it?
What should the agent be told, and how should it choose the right tool?
If it failed, what exactly failed and how can the user safely fix it?
Odometer should make each state visible and testable instead of collapsing them into a single "connected" badge.
Integration Center
Add a human-facing integration surface with a card for each supported client (initially Codex, Claude Code, and generic MCP).
Each card must distinguish these states:
Not installed — no compatible client executable is discoverable
Installed — executable and version are verified
Configured — a valid Odometer entry exists at the expected user/project scope
Launchable — the client-equivalent server command starts successfully
Connected — MCP initialization/handshake succeeds
Tools exposed — tools/list returns the expected names and schemas
Data ready — a real odometer_status canary returns a current usable snapshot
Actively used — a successful call from the real client has been observed
Only the canary-backed states may produce a green Working result.
Human actions
Provide:
Install or repair
Choose user or project scope
Preview the exact configuration change before applying it
Apply a reversible configuration change while preserving unrelated settings
Test now
Copy the equivalent manual command
Open the relevant configuration location
Copy tailored agent instructions
Explain when a client restart or fresh task is required
Start a fresh-task verification flow
Remove the integration or restore a timestamped backup
Show the last successful connection, canary, real use, and bounded error
Automatic setup must not place secrets in process arguments or logs.
Agent front door
Expose a compact, low-cost odometer_status tool as the reliable first call when freshness or capabilities are unknown. It should return:
server and schema version
snapshot age and generation time
scan and durable-ledger readiness
available harnesses and date coverage
session count
pricing, credit, and quota coverage
missing or fallback-priced models
supported dimensions and filters
recommended next calls
warnings and known limitations
In particular, status/results must distinguish observed token/credit data, estimated API cost, and authoritative subscription/quota data. Never imply that subscription usage is available when no authoritative source exists.
Tool discoverability and guidance
Every MCP tool description should include:
Use when
Do not use when
Interpretation
Example requests
Results should suggest the next useful call where appropriate. Do not rely only on MCP server-level instructions because client support and instruction handling vary.
Generate copyable instruction blocks for:
generic MCP clients
Codex
Claude Code
an optional Odometer skill/plugin package
The generated instructions should tell an agent to:
use Odometer for session tokens, credits, estimated API cost, subagent activity, tool-use patterns, and optimization opportunities
call odometer_status when freshness or capability is uncertain
search before fetching details when it does not have a session ID
treat cohort comparisons and optimization findings as observational
surface fallback pricing, incomplete coverage, and unavailable subscription quota explicitly
Include example user prompts and their expected tool-call sequence so humans can test a fresh task without guessing.
Privacy-safe activity inspection
Record enough local integration telemetry to prove and troubleshoot real use:
client name and version
tool name
timestamp and duration
success/failure
bounded error code
returned row count and byte count
snapshot/schema version
fallback-pricing and coverage flags
Do not record prompts, tool arguments, session IDs, local paths, result contents, credentials, or other sensitive payload data.
The UI should show recent activity and eventually identify configured-but-unused or consistently inefficient call patterns.
Stable diagnostics
Use the same diagnostic codes and remediation text across MCP, CLI, and UI:
Make setup changes minimal, previewable, reversible, and scoped.
Preserve unrelated client configuration.
Keep MCP resources read-only and avoid returning raw session JSONL or prompt content.
Do not implement a separate analytics path in the Integration Center.
Acceptance criteria
A user can connect supported Codex and Claude Code installations without manually editing configuration.
Installed, configured, launchable, connected, tool-catalog, data-ready, and actively-used states are reported separately.
Test now performs initialization, tools/list, and a real odometer_status canary.
Restart/fresh-task requirements are detected, explained, and verifiable.
An uninstructed compatible agent can select the right tools from their descriptions.
The copied Codex and Claude instruction blocks produce the documented tool sequence in fresh-task tests.
Recent activity proves that a real client made a successful call without retaining sensitive payloads.
Setup/removal is reversible and preserves unrelated configuration.
Failures are covered for missing binaries, invalid scope, bad working directory, stale client sessions, protocol/catalog version mismatch, unavailable data, and incomplete pricing.
UI, MCP, and CLI diagnostics use the same stable codes and remediation contract.
Documentation includes setup, verification, example prompts, expected results, privacy boundaries, limitations, and removal.
Outcome
Make Odometer's agent integration an inspectable product experience: humans can install, configure, verify, understand, and remove it, while agents can reliably discover when and how to use Odometer's analytics.
This is a P0 release gate for the first MCP delivery in #47. A configuration file or running process alone must never be presented as proof that the integration works.
Relationships
Problem
MCP integrations are commonly added with no trustworthy answer to basic questions:
Odometer should make each state visible and testable instead of collapsing them into a single "connected" badge.
Integration Center
Add a human-facing integration surface with a card for each supported client (initially Codex, Claude Code, and generic MCP).
Each card must distinguish these states:
tools/listreturns the expected names and schemasodometer_statuscanary returns a current usable snapshotOnly the canary-backed states may produce a green Working result.
Human actions
Provide:
Automatic setup must not place secrets in process arguments or logs.
Agent front door
Expose a compact, low-cost
odometer_statustool as the reliable first call when freshness or capabilities are unknown. It should return:In particular, status/results must distinguish observed token/credit data, estimated API cost, and authoritative subscription/quota data. Never imply that subscription usage is available when no authoritative source exists.
Tool discoverability and guidance
Every MCP tool description should include:
Results should suggest the next useful call where appropriate. Do not rely only on MCP server-level instructions because client support and instruction handling vary.
Generate copyable instruction blocks for:
The generated instructions should tell an agent to:
odometer_statuswhen freshness or capability is uncertainInclude example user prompts and their expected tool-call sequence so humans can test a fresh task without guessing.
Privacy-safe activity inspection
Record enough local integration telemetry to prove and troubleshoot real use:
Do not record prompts, tool arguments, session IDs, local paths, result contents, credentials, or other sensitive payload data.
The UI should show recent activity and eventually identify configured-but-unused or consistently inefficient call patterns.
Stable diagnostics
Use the same diagnostic codes and remediation text across MCP, CLI, and UI:
integration_not_configuredserver_launch_failedprotocol_version_mismatchtool_catalog_mismatchledger_not_readyscan_in_progresssession_not_foundpricing_incompletequery_too_broadsnapshot_expiredEach diagnostic must state:
Architecture constraints
Acceptance criteria
tools/list, and a realodometer_statuscanary.Out of scope