# MCP stack inventory: <company or client> (<environment>)

Copy to `martech-context/mcp-inventory.md` once the tool owners approve. One `###` block per server, environment and client, with the client in the heading: a server used in two clients gets two blocks and two sets of tests. Record roles, never names or emails, and never a token, key or secret. Placeholders use `<...>`, so `python3 -I scripts/mcp_inventory_check.py <file>` lists anything left unfilled. Keep the labels exactly as written; the check reads them.

- Prepared: <YYYY-MM-DD> by <role or agent run>
- Review by: <YYYY-MM-DD> (30 days after Prepared, or sooner on a re-test trigger)
- Jobs: <job: question, system of record, known answer>; <next job>
- Clients: <Claude Code, Claude Desktop or claude.ai, ChatGPT workspace, Cursor, VS Code, Codex, with plan or workspace>
- Scanner: <date and summary line of the scan before and after changes | not run, because ...>
- Status: draft until each tool owner approves

## Summary

- Connected and tested: <n> (one per server and client)
- Read-only by vendor switch: <n>; by source permission: <n>; by IAM or role: <n>; client only: <n>
- Failed or blocked: <servers and why, or none>
- Open risks: <servers and the risk, or none>

## Servers

### <Vendor> (<account, portal, property, project or workspace ID from stack.md>, <environment>, <client>)

- Status: <connected | blocked | pending | removed>
- Job: <the job and its known answer>
- Route: <official remote | official local | export or warehouse | bridge | community, publisher review dated YYYY-MM-DD>; reason: <why this rung of the ladder>
- Endpoint or package: <URL, or package with its pinned version or commit>
- Clients and config: <scope, server name as vendor-account-env-mode, config file or connector settings page; for a CRM, lifecycle or support tool, the decisions.md date approving this client for customer data>
- Identity: <user or service identity, by role>; role at the source: <role>
- Reachable accounts: <every account, property, project or workspace the identity reaches, with the count>
- Granted scopes or permissions: <as shown by the auth-status tool or the consent screen, not what was requested>
- Read-only layer: <vendor switch | source permission | IAM or role | client only, user told YYYY-MM-DD>: <exact setting>; proof: <tool list compared, or the denied test>
- Write tools and how they are blocked: <tool names, or none listed>; <absent, Blocked category, deny rule, enabled_tools allowlist, role>
- Untrusted-content and send-out tools: <U tools that read outsider text, S tools that send data out, and how the profile is split>
- Limits and meters: <page sizes, row caps, rate limits, credits, output caps>
- Tests:
  - T1 identity: <PASS | WARN because ... | FAIL> <YYYY-MM-DD>, <call and what it returned>
  - T2 tool surface: <PASS | FAIL> <YYYY-MM-DD>, <tool count and snapshot file in mcp-tools/>
  - T3 known answer: <PASS | FAIL> <YYYY-MM-DD>, <metric or field, period, expected, observed, where compared>
  - T4 denied operation: <PASS | FAIL | UNPROVEN because ...> <YYYY-MM-DD>, <out-of-scope read, the sandbox write and its result, the role in production and in the sandbox, any layer not proved>
  - T5 completeness: <PASS | WARN because ... | UNPROVEN because ...> <YYYY-MM-DD>, <request, and the pages or cap the answer stated>
  - T6 revocation: <who revokes, how, and the date of the disconnect and reconnect>
- Owner: <role>
- Revoke by: <exact steps, and the company-wide switch if the vendor has one>
- Next review: <YYYY-MM-DD>
- Agent access line for stack.md: <server, client, route, read-only layer, last test date>

## Not connected, by decision

- <tool or entry>: <reason, and the route used instead>

## Admin drafts

- <change>: <admin role>, <drafted | sent YYYY-MM-DD | applied YYYY-MM-DD>

## Proposed updates to martech-context

- stack.md: <Agent access lines to add or replace>
- decisions.md: <one dated entry per approved connection>
- mcp-tools/: <tool snapshot files for the drift check>
- README.md: <a line under Optional files present naming mcp-inventory.md and mcp-tools/>
