Source Library
Every system REACH can reach into. Claude chooses the right library for each source — you declare the source name, Claude handles the connection.
The rule for browser sources: if curl would return what you need, REACH uses HtmlAgilityPack (fast, no browser process). If the page requires JavaScript or interaction, REACH uses Playwright (full headless Chromium).
Outlook
Talks directly to your running Outlook instance via COM Interop. No API keys, no Graph auth, no tokens. Works because Outlook is already open.
| Source | What it reaches |
|---|---|
outlook.inbox | Inbox — filter, count, group by sender/subject/date |
outlook.sent | Sent items — communication cadence from your side |
outlook.calendar | Calendar entries — meetings, appointments, events |
outlook.folder | Any named folder — Deleted Items, custom folders |
outlook.draft | Compose an email (does not send until instructed) |
outlook.send | Send the composed draft (always preceded by a prompt gate) |
outlook.meeting | Compose a meeting invite |
Performance: 3-8s cold, 1-2s warm.
Git
Reads git history. Runs in the current directory or a specified path. No GitHub API — direct git log.
| Source | What it reaches |
|---|---|
git.commits | Commit history — cadence, after-hours %, velocity |
git.log | Raw log with custom shape — author, date, message |
After-hours analysis — when analyze after-hours is specified, Claude splits commits by time of day and calculates the percentage outside core hours (9am–6pm). The benchmark (benchmark 15%) turns the number into a verdict.
| After-hours % | RPM state | What it signals |
|---|---|---|
| 0–15% | 🟢 Green | Sustainable — occasional late push, not a pattern |
| 15–25% | 🟡 Yellow | Watch — creeping into personal time regularly |
| 25–30% | 🔴 Red | Running hot — recovery needed |
| 30%+ | 🔴🔴 All red | Structural overflow — open valley week essential |
Screen
Captures exactly what's visible. Returns an image path — Claude reads it inline and reasons about what it sees.
| Source | What it reaches |
|---|---|
screen | Full screen capture |
screen.window | Specific named window |
screen.region | Defined pixel region |
Performance: 3-5s cold, under 1s warm. Fastest reach available.
When to use: UI review, deployment state, errors on screen, anything that words don't capture efficiently. Claude reaches for this itself when it determines it needs to see something.
Browser
| Source | When to use | Library |
|---|---|---|
browser.page | Page requires JavaScript, SPA, dynamic content | Playwright — headless Chromium |
browser.auth | Login flow before reaching target page | Playwright |
http.get | Static page or REST endpoint | HttpClient built-in |
http.post | Post to a REST endpoint | HttpClient built-in |
Performance: Playwright — 10-20s cold, 6-10s warm. HtmlAgilityPack / HttpClient — near-instant.
Playwright capabilities:
- Navigate to any URL, wait for specific CSS selectors
- Extract text, tables, links from rendered DOM
- Screenshot full page or specific element
- Fill forms, click buttons, navigate through auth flows
- Persist session cookies across steps
Database
SQL Server queries across named environments. No hardcoded connection strings — Claude maps environment names to connections from your CLAUDE.md.
| Source | What it reaches |
|---|---|
db.query | Run a SQL query, return results in specified format |
db.table | Inspect a table — schema, row count, sample data |
Environment names — env dev, env staging, env prod — mapped in CLAUDE.md:
var environments = new Dictionary<string, string>
{
["dev"] = "Server=your-dev-server;Database=YourDb;Integrated Security=true;",
["staging"] = "Server=your-staging-server;Database=YourDb;Integrated Security=true;",
["prod"] = "Server=your-prod-server;Database=YourDb;Integrated Security=true;"
};Files
| Source | What it reaches |
|---|---|
file.read | Read .txt, .docx, .pdf — extract as plain text |
file.merge | Merge multiple files into one |
file.watch | Watch a folder for new files, signal on arrival |
file.write | Write findings to a file |
Document libraries:
.docx—DocumentFormat.OpenXml(official Microsoft, handles all Word internals).pdf—PdfPigfor text extraction;iTextSharpif layout matters
UI Automation
Interacts with a running application's UI control tree via Windows UIAutomation. Reads the actual control hierarchy — names, types, values. No screenshots needed for structured data.
| Source | What it reaches |
|---|---|
ui.window | Any running desktop application |
reach ui.window "OUTLOOK"
find name "Inbox"
read items
output listLibrary: FlaUI — wraps Windows UIAutomation cleanly. Finds controls by name, type, or automation ID. Clicks buttons, reads list items, types into fields.
Process
| Source | What it reaches |
|---|---|
process.launch | Launch an application |
process.signal | Write a signal file for inter-reach communication |
Timesheet
Posts entries to your organization's timesheet system. Always preceded by a prompt gate — never posts silently.
| Source | What it reaches |
|---|---|
timesystem.timesheet | Draft timesheet entries from git + calendar analysis |
timesystem.post | Post reviewed entries |
CI/CD
| Source | What it reaches |
|---|---|
ci.pipeline | Watch a CI/CD pipeline URL for status changes |
ci.error-log | Read error output from the most recent pipeline run |
How Claude Chooses Libraries
Claude selects the least-friction library for the task. Built-ins first.
| Situation | Claude reaches for |
|---|---|
File is .docx | DocumentFormat.OpenXml — official, handles all Word internals |
File is .pdf | PdfPig for text, iTextSharp if layout matters |
| Outlook is open | COM Interop — no auth, talks to live instance directly |
| SQL Server query | Microsoft.Data.SqlClient — modern, works across all environments |
| UI interaction needed | FlaUI — wraps Windows UIAutomation cleanly |
| Screen capture | System.Drawing built-in — no package, fastest reach |
| Page needs JavaScript | Microsoft.Playwright — real headless Chromium |
| Page is static HTML | HtmlAgilityPack — fast, no browser process |
| Simple HTTP / REST | HttpClient built-in — no package needed |
| Structured output | System.Text.Json built-in, or CsvHelper for CSV |