Tool
create_pin
Description
Pin out-of-scope work you find, or work the user puts off, as soon as it comes up and without asking, so it isn't lost when this session ends. Write it for the agent who'll pick it up with none of your context: what's wrong or wanted, where, how it came up, what to watch out for, and how you'd do it. Duplicates are checked first: the closest pins are read beside yours, and if one is the same issue, nothing is created and it's returned (error possible_duplicates). Then either add_sighting to the match, or call again with confirm_not_duplicate. Related pins come back as related. Resolved pins never block; one whose problem is back comes back as possible_regressions.
Parameters
repostringrequiredRepository as owner/name, from the git remote. Picks the workspace: the one with pins in this repo.
3–200 characters
workspacestringWorkspace slug. Only when the repo has pins in several of your workspaces, or in none yet; otherwise the repo picks it. - acme: Acme (acme/api) - acme-mobile: Acme Mobile (acme/ios)
Your workspaces, e.g.acmeacme-mobile
titlestringrequiredOne line.
5–200 characters
summarystringrequiredWhat's wrong or wanted, in a short paragraph.
10–4000 characters
kindstringrequiredWhat sort of work this is. feature is new functionality, such as a request the user deferred; dx is friction in the developer experience.
One ofbugdebtperformancesecuritytestingdxdocsfeature
riskstringrequiredCost of leaving it alone (for a feature, of going without it): how bad it gets when it bites, and how likely it is to bite. Severe harm that's unlikely is medium, not high; a long quiet history is evidence it's unlikely. critical, e.g. a security hole, lost or corrupted data, money charged wrongly, an outage now or imminent. high, e.g. users blocked from something they need, a frequent wrong result, a deadline that will break something, a likely incident. medium, e.g. a visible bug with a workaround, slow pages, flaky tests, code that will trip whoever changes it next. low, e.g. cosmetic issues, rare edge cases, harm that's only theoretical, messy code that works.
One oflowmediumhighcritical
payoffstringrequiredGain from doing it: how much better it makes things for the people it reaches, and how many it reaches how often; the product's users first, then the team. critical, e.g. a core workflow most users run daily, something customers leave or pay over. high, e.g. a capability users expect and keep asking for, friction or slowness the whole team hits every day, a big unlock for other work. medium, e.g. a real improvement for some users, friction the team hits now and then, a nicer path on a secondary screen. low, e.g. something one person noticed once, tidier code nobody sees, polish nobody would miss. Debt nobody sees stays low; if it blocks other pins, link them, and if waiting makes it costlier, set harder_later.
One oflowmediumhighcritical
scopestringrequiredSize of the fix.
One oftrivialsmallmediumlargeepic
harder_laterbooleanTrue when waiting makes the fix costlier: data piling up that a migration must convert, an API or format others will start depending on, a one-way door. Raises priority.
areasstring[]1 to 3 existing areas of the pin's workspace. Required unless new_area is given. acme (acme/api): - auth: Sign-in, sessions and permissions - payments: Billing, invoices and checkout acme-mobile (acme/ios): - offline: Sync and offline storage
Your workspace's areas, e.g.authofflinepayments
1–3 items
filesobject[]Where it is. Repo-relative, e.g. src/auth.ts. Never absolute. Give the symbol, and a snippet of the lines that show the problem: line numbers drift, they don't.
up to 50 items
pathstringrequiredRepo-relative path, e.g. src/auth.ts. Never absolute.
1–500 characters
linesstringLine range, e.g. "40-88".
symbolstringFunction or class name.
up to 200 characters
snippetstringThe 1 to 5 lines that show the problem, copied exactly; not the function signature. Most useful when no symbol names the place, so the next agent can find it after the code moves.
up to 2000 characters
commitstringHEAD SHA when you found it. File lines and snippets are read at this commit.
pattern: ^[0-9a-f]{7,40}$
confidencestringOne ofconfirmedsuspected
discoverystringHow it came up: what you were doing, or what the user said.
1–8000 characters
gotchasstring[]Traps for whoever fixes it, one per entry.
up to 20 items · each 1–4000 characters
reprostringSteps to reproduce.
1–8000 characters
approachstringThe fix you'd try, and what you ruled out.
1–8000 characters
approach_stagestringWhether a person shaped approach. proposed (default): your own idea; leave it. discussed: the user talked the fix through with you, but points are still open. agreed: the user settled the fix with you. Set discussed or agreed only when the user actually worked the approach out with you, at filing or later; never ask them to discuss a pin just to set it. agreed raises priority.
One ofproposeddiscussedagreed
done_whenstringHow to verify the fix.
1–8000 characters
linksobject[]How this pin relates to other pins and to PRs, commits, branches, issues or sessions: { relation, pin } or { relation, artifact, kind? }. found_in: where you found it. fixed_in: the PR or commit that fixes it; link it as soon as the PR is open, not only once it merges. related: loosely connected; pin keys, PRs, issues and commits you mention in the pin's text are linked as related for you, so cite them freely. blocks: another pin can't start or ship until this one is done. blocked_by: the same link from the other side, when this pin can't start or ship until another is done; to track a release, give the release pin a blocked_by for each pin it needs. duplicate_of: another pin covers this. e.g. { "relation": "found_in", "artifact": "#212" }, { "relation": "blocks", "pin": "ACME-14" }, { "relation": "blocked_by", "pin": "ACME-9" }.
up to 50 items
relationstringrequiredOne offound_infixed_inrelatedblocksduplicate_ofblocked_by
pinstringAnother pin's key, e.g. ACME-42.
1–50 characters
artifactstringA URL, owner/name#123, #123 (this pin's repo), a commit SHA or a branch name.
1–500 characters
kindstringWhat artifact is when the text can't say: a branch name, an issue number, an agent session.
One ofprcommitbranchissuesessionurl
new_areaobjectOnly if no existing area fits: a short concept name and a one-line description.
namestringrequired2–40 characters
descriptionstringrequired3–200 characters
confirm_new_areastringWhy none of the existing areas fit. Required with new_area after an area_near_match error.
3–500 characters
confirm_not_duplicatestringWhy this differs from the candidates a previous call returned. Skips the duplicate check.
3–500 characters
Response
An example. The result sits in the same envelope as every tool's; see Responses.
Input schema
Exactly what tools/list sends your agent.