REFERENCE · THE TOOLS

One endpoint. A handful of verbs.

Preston speaks over a single MCP endpoint, so any MCP-capable agent can use it. The verbs group by intent: ground your agent before it writes, see what Preston holds, and steer what it does next. Reads are reflexive — never permission-gated; only request_review asks first.

before it decides or writes a line
orient(repo?, paths?, pr?, intent?) → briefing

Session boot for a repo you’re about to touch. One call returns the beliefs, risks, decisions, and conventions scoped to the files in play — each with a handle you can walk (why) or contest (challenge).

Reflexively, before working in a repo Preston knows — as cheap and safe as reading a file.
A briefing scoped to the files in play: the risks, decisions, and conventions that bear on them, each carrying a handle to walk (why) or contest (challenge). An unlearned repo says so honestly instead of guessing.
start_here(agent?) → guided tour

New to Preston? Composes a five-minute guided first session from what it already knows — a do-this-next sequence of real tool calls, not a manual.

Once, the first time a client connects.
A short do-this-next sequence of real tool calls, drawn from a repo Preston has actually climbed, plus the live tool catalog — a tour, not a manual to read.
consult(intent, repo?) → posture

Preston’s grounded posture before you decide or change something: prior decisions that bear on it, where beliefs conflict, the risks worth watching.

At a decision point, instead of guessing what the team already settled.
Prior decisions that bear on the intent, where beliefs conflict, and the risks worth watching — or an honest admission it couldn’t anchor what you asked, rather than a guess.
reflexive reads, always there
risks(q?, limit?, offset?) → risks[]

The risks Preston is holding across the workspace — code, knowledge, and project tensions — each with the finding, the evidence in plain words, what would clear it, and its severity.

To audit or search what Preston is currently worried about.
Each risk as a finding: the evidence in plain words, what would clear it, its severity, and whether Preston is still holding it loosely or a person has ratified it — plus the handle to hand to why.
why(about) → justification chainthe concept

Given a stable about handle, returns how a claim was observed, what it’s inferred from, whether it was ratified, and what contradicts it.

Whenever a finding needs to be trusted, not taken.
How the belief was observed, what it’s inferred from, whether anyone ratified it, and what — if anything — contradicts it.
tensions(scope?, repo?) → tensions[]what it flags

Contradictions Preston holds: scope: repo (default) finds two live claims asserting opposite polarity inside one repo; scope: org finds two repos whose conventions clash on the same dimension.

To see what’s unresolved but not broken.
Each tension names its two subjects in conflict — two opposing claims for a repo-scope tension, two repos for an org-scope one. An org-scope tension also says whether the team accepted it as intentional.
promises(repo?) → promises[]

Findings the team accepted to fix later — check here before re-raising something Preston might already be holding.

Before flagging something that may already be deferred.
Each promise as what was accepted, who accepted it and where, what would end it, and whether it’s actively watched for that condition.
codebases(repo?, limit?) → codebases[] | ticket

The codebases Preston has climbed. A bare call lists them with state and a confidence read; pass repo to open one’s full ticket — confidence, blast radius, top risks.

Browsing what Preston knows across repos — reach for orient instead when about to work in one.
One of four states — climbed, climbing, stale, none. Climbed carries one typed confidence (familiarity, groundedness, posture, coverage), the blast radius, and the sharpest risks; climbing carries live progress; stale carries the same understanding plus how to catch it up.
reviews(owner?, repo?, pr_number?, ticket_id?, limit?) → reviews[] | ticketwhat it won’t say

Preston’s PR reviews, each a ticket. A completed ticket carries the full review — verdict, comments, withheld findings, questions.

To check a review you started, or read one that already ran.
One of four states — completed, pending, failed, none. Completed carries the full review: verdict, comments, withheld findings, and questions.
your judgment, recorded — additive, reversible
record(kind, statement?, about?, because?, polarity?, until?, repo?) → id

Write a settled decision (kind: decision), or a promise to fix something on a stated future trigger (kind: promise), so it persists instead of getting re-litigated.

After a call worth remembering, or when someone defers a fix.
A short confirmation naming what was recorded, plus a stable handle you can hand to why or challenge.
hold(dimension, because, until?) → ok

Stop Preston from raising a whole category of findings for now — it keeps finding and counting them, just stops surfacing them.

“stop bringing up X”, “ease off the nitpicks”, “not now.”
A confirmation naming the category and how long it’s held, plus the handle for why. Nothing lifts it on its own.
lift(dimension) → ok

Reverse a hold — Preston resumes raising that category on the next review. Nothing else is deleted.

The reason for a hold has passed.
A confirmation of what surfaces again — honestly distinguishing a real lift from a no-op when nothing was held.
challenge(about, because) → ok

Disagree with something Preston believes. Records your opposing view as a live tension against the belief — additive, never deletes it.

A finding is wrong, and you can say why.
A confirmation that your opposing view is recorded — it shows up in tensions against the belief. Nothing is deleted.
affirm(about, because?) → ok

Endorse something Preston believes — independent support climbs a belief from a guess to corroborated.

A finding is right, and you want it to carry more weight.
A confirmation that your endorsement is recorded as a second justification for the belief.
establish(rule | confirm, agent?) → offer | confirmedprinciples & conventions

Match a rule stated in plain words to one of the team’s standards — a correctness principle, a discipline (best practice), or a convention (taste) — in two steps: propose, then the human confirms the offer handle. Preston never adopts one on its own, and never promotes one kind into another — principle, discipline, and convention stay separate.

To put a stated rule on record as a standard — on purpose, out loud.
Step 1: proposal prose naming the matched standard and its kind, plus an offer handle to confirm. Step 2: a plain confirmation of what’s now held — or, on a genuine gap, an honest admission Preston holds no standard for it yet.
not reflexive — starts real work
request_review(owner, repo, pr_number, pr_data?) → pending ticket

Starts a fresh review of a pull request. Doesn’t block — returns a pending ticket immediately; poll it with reviews.

Opening or reviewing a PR. The only tool Preston asks before calling.
A pending ticket immediately — an id to poll with reviews, plus how long to expect. Poll until reviews reports completed (the full review) or failed (the reason).
feedback(area, wish, context?, agent?) → ok

Tell Preston’s own team something about Preston himself — a tool that didn’t exist, a shape that fought you mid-task. Not about the repo you’re working in.

An agent’s own experience of Preston is worth passing on.
A short thank-you confirming it landed — or, if the workspace turned sharing off, a polite decline. Never a handle: feedback isn’t a belief Preston reasons about.

every response is grounded — file · line · a recorded decision · a prior review — or it comes back empty and says why. it never invents a source. no model names, no per-call cost: what Preston does, never what it runs on.