# Reach Inventory: every connector your agents hold, with a job, an owner and a way out

> One row for every connector, MCP server, OAuth grant, API key and automation bridge your agents can use, each tied to a job and marked necessary, convenient or leftover. Scope granted is set against the scope the job needs, keys are named by where they live and never pasted, bridges list every app behind them, and leftover access is removed with a date and proof. Agents list and propose; removals, narrower scopes, rotations and new grants wait for your yes at your own terminal, tied to the sha256 of the inventory. Fifteen read-only checks run on the inventory.

- URL: https://paperchasewebb.ai/bots/marketplace/items/reach-inventory-every-connector-with-a-job-and-an-owner/
- Type: Prompt pack
- Category: Solo business
- By: PaperChaseWebb
- Works with: Claude Code, Codex, Grok Bot, Hermes (named in the listing); A skill file for Claude Code, Codex and Hermes, an AGENTS.md snippet and a Grok Bot rules block; the scripts were tested on Linux with Python 3.13, the agent files were not loaded inside each harness
- Price: $19 USD
- Difficulty: Intermediate
- Setup time: 1 hr
- Time to result: A first checked inventory and report in an afternoon
- Format: Markdown (.md) file, reach-inventory-every-connector-with-a-job-and-an-owner.md
- Version: 1.0, updated 2026-10-29
- License: Use on your own business and to audit access for your clients. Do not resell or republish the pack itself.

## What you end up with

A file that answers "what can each agent touch, and why?", a one-page report of what to remove or narrow, and changes that happen only after your yes.

## What you get

- 19 sections in one .md file
- The inventory folder: setup, agents and jobs, one row per piece of access, proposed changes, with blank templates
- Rules for need (necessary, convenient, leftover), scope granted against scope needed, bridges and the untrusted, private and outbound flags
- reach.py: an inventory hash, gate (exit codes 0, 11, 12), a one-page report, owner approval tied to a sha256, verify, and one use per yes
- reach_check.py: fifteen read-only checks, with a seeded test inventory (15 findings, then 0)
- A skill file for Claude Code, Codex and Hermes, an AGENTS.md snippet and a Grok Bot rules block
- Ten prompts, a failure table and a worked example
- A look at MCP inventory kits, connector checklists, OAuth app reviews and config scanners, with sources

## Who it is for

Owners who want one checked list of what their agents can reach, and agencies that want a reach audit the client can read and keep.

## Tools needed

- Grok Bot, Claude Code, Codex or Hermes: the agent that lists what it can reach from its own config and connected apps, writes one row per piece of access, proposes removals and narrower scopes, and asks reach.py gate before acting on its own access
- Python 3: runs reach.py (init, hash, gate, report, owner approval, verify, done) and the fifteen-check checker; standard library only, no network
- The owner of the business: ratifies the inventory and approves changes at their own terminal; approvals are refused inside agents and on piped input
- You need: Any of Grok Bot, Claude Code, Codex or Hermes
- You need: Python 3.9 or newer
- You need: Access to the connected apps pages of your main accounts
- You need: One owner who ratifies the inventory and approves changes at their own terminal

Cost to run: The pack is the only purchase. The scripts use no model tokens; the agent that lists its access uses your own plan.

## How it works

1. **Run the tests.** Copy the reach-inventory folder and run sh test_all.sh. Expected: 15 findings on the seeded inventory and 0 on the fixed one, 15 of 15 single faults caught alone, checker tests 29 passed, reach.py tests 29 passed, exit 2 on a missing folder.
2. **List the agents and their access.** Run reach.py init, list agents and jobs in agents.csv, then use prompts 1 to 5 to write one row per piece of access. Check each main account's connected apps page yourself. Expected: reach.csv with a job, scope granted and needed, runs_as, credential_ref and last_used on every row, and no secret values anywhere.
3. **Check and report.** Run reach_check.py and fix the findings. Propose removals and narrowings in changes.csv with prompt 6, then run reach.py report. Expected: Only R15 (ratification) left, and report.md listing write access, what to remove or narrow, removals with proof and changes waiting.
4. **Ratify and approve.** The owner runs reach.py approve DIR --inventory, then --changes for the ones they agree with, at their own terminal. Make each change in the app's settings, run done, then record the proof. Expected: reach.py verify passes once per approved change, and an edit after the yes voids it.

## Sample prompt: Find and write rows (Grok Bot, Claude Code, Codex, Hermes)

```
List everything you can reach from this session: connectors, MCP servers in your config, OAuth apps you were granted, API keys or tokens in your environment (names only, never values), and any automation bridge account. Say which file or settings page you read for each. Do not connect, test or change anything.
For each row, name the job it serves from agents.csv. If you cannot point to a job, say so and mark need leftover. Do not invent a job to keep a row.
```

Prompts 1 and 3 of 10.

## Sample prompt: Propose changes (Every agent that holds access)

```
For every leftover row, every row decided narrow and every key made under a person's own login, check reach.py gate for the change kind. Where it says owner-yes, add a proposed row to changes.csv with a detail I can read in one line. Do not make any change.
```

Prompt 6 of 10.

## Free preview of reach-inventory-every-connector-with-a-job-and-an-owner.md

````markdown
# Reach Inventory: every connector your agents hold, with a job, an owner and a way out

Version 1.0, 2026-10-29. By PaperChaseWebb. A stand-alone audit of what a business's agents can reach: connectors, MCP servers, OAuth grants, API keys and automation bridges, one row each, marked necessary, convenient or leftover. Four plain files, a script that gates what an agent may do about its own access and records the owner's yes, a read-only checker with fifteen checks, a one-page report, templates, a seeded test inventory, ten prompts and the tests, all Python 3 standard library. Works with Claude Code, Codex and Hermes through a skill file and an AGENTS.md snippet, and with Grok Bot through a rules block. Tested as described in section 11: everything ran on Linux with Python 3.13, including owner approvals typed at a pseudo-terminal. The skill file, snippet and rules block were not loaded inside the harnesses for this release, and the pack has not been run against a real business's connected accounts. Each is marked where it matters.

Access piles up quietly. A connector gets added for one afternoon's job and stays. A key made under the owner's own login ends up in three agents. An automation bridge is connected once, and from then on one line in a config reaches every app that bridge can touch. Nobody remembers which grant does what, so nobody removes anything, and the list only grows. When something goes wrong, the first question is "what could that agent touch?", and most tea
````

## Test record

- Date: Oct 29, 2026
- What was run: reach_check.py on a seeded inventory and a fixed copy, each planted fault alone, a missing input, and the unit tests. Linux, Python 3.13.
- Result: 15 findings on the seeded inventory, 0 on the fixed one; 15 of 15 planted faults caught alone; exit 2 on missing input; nothing written. 29 checker and 29 reach.py tests passed, 0 failed.
- Not run: The agent files inside Claude Code, Codex, Hermes or Grok Bot. A real business's accounts, connectors, MCP servers or bridges.

Copied from this item's dated test notes. What was not run stays in.

## Worth knowing

- reach.py answers questions and records the owner's yes; it does not connect, revoke, rotate or grant anything, and it cannot stop an agent that never asks. This is not a sandbox.
- The skill file, AGENTS.md snippet and Grok Bot rules block were not loaded inside Claude Code, Codex, Hermes or Grok Bot for this release, so how completely each harness lists its own access was not measured. The pack was not run against a real business's accounts, and no connector, MCP server or bridge was exercised. Grants made outside an agent's config need a human look at each app's connected apps page. The secret check matches common key shapes and long unbroken strings; it can miss a short password. The checker tests the structure of the inventory, not whether a scope name is right for a given app. The test business is made up. Linux only; Windows was not tested.
- Not an MCP code scanner, not an identity governance platform and not a compliance certification.
- The approval step refuses piped input and the environment variables Claude Code, Codex, Hermes and Grok Bot set. That stops an agent approving by mistake; it is not a lock against someone with the same account.
- On 2026-10-29, on Linux with Python 3.13: reach_check.py gave 15 findings on the seeded inventory (each check once) and 0 on the fixed one, caught 15 of 15 single faults with only its own check, wrote nothing, and exited 2 on a missing folder, any of the four required files missing, or broken reach.json; checker tests 29 passed, 0 failed; reach.py tests at a pseudo-terminal 29 passed, 0 failed.

## Questions

**How is this different from a security checklist?** A checklist is ticked once per connector. Here every piece of access is a row tied to an agent, a job and an owner, with scope granted against scope needed, last used and expiry dates, removal proof, and a checker that runs on the file.

**Can the agent remove or add access by itself?** No. Listing and proposing are the agent's; remove, narrow, rotate, add and widen are owner-yes, approved by the inventory sha256 at your own terminal, and verify passes once. Sharing a credential and granting admin are never proposed.

**Do I paste my API keys into it?** Never. credential_ref names where the key lives, such as a vault entry. The checker flags common key shapes and long unbroken strings in every inventory file.

**I own the Agency Install Kit. Do I need this?** The Install Kit's binder has a six-column reach.csv with one check. This pack grows it into a full audit with fifteen checks, changes and a report, and prompt 10 converts the binder's file.

## How to buy

$19 one time at https://paperchasewebb.ai/bots/marketplace/items/reach-inventory-every-connector-with-a-job-and-an-owner/. Stripe checkout, then an instant download page; the download link is also in your emailed receipt.

Seller: PaperChaseWebb Inc., mgmt@paperchasewebb.com
