Skip to main content
Glama

Server Details

Your team's shipping standards, org map and delivery metrics, inside your coding agent.

Ownership verified
Status
Healthy
Uptime
89.0% over 62 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 44 tools

Disambiguation4/5

Most tools are carefully steered apart in their descriptions (e.g. get-created vs get-merged explicitly state they must never be reconciled; get-guidance-drift points at get-repo-readiness for existence checks; assess-change-fit vs record-change-fit-decision is clean). The weak spots are a cluster of overlapping health/metrics tools — get-team-overview, get-dora-metrics, get-pull-request-metrics — where 'how is the team doing' could reasonably land on any of the three, and the insights trio (get-my-insights, get-team-insight-summary, mark-insight-seen).

Naming Consistency5/5

Every name is kebab-case verb_noun with a uniform '-tool' suffix (get-*, set-*, record-*, propose-*, assess-*, link-*, deploy-*, update-*), so the pattern is predictable throughout. Verb choice tracks the action meaningfully rather than drifting.

Tool Count2/5

44 tools is far past a comfortable surface and mixes several distinct products into one server: PR/analytics, DORA, AI and MCP adoption, repo readiness, org mapping, review policy, plus internal sales-pipeline and self-review admin tools. Several metric tools could plausibly be consolidated into fewer parameterized calls, so the count is not earned.

Completeness4/5

The domain is well covered end to end: change-fit has assess/record/set-standard, prospects have add/update/worklist/draft/record-outreach, self-review has get/propose/record-fix, and team context, readiness, deploy and repo setup all exist. Gaps are minor — no way to remove/close a prospect outright or configure deploy triggers, but those are workable around.

Available Tools

44 tools
add-prospect-toolAdd prospectAInspect

Internal Coderbuds staff only. Add a company or adviser to the outbound pipeline.

The buyer to look for: a CTO, head of engineering or hands-on engineering manager at a product company with 10–30 engineers on GitHub or Bitbucket. Coderbuds does not support GitLab — a GitLab-only team is not a prospect, however good the fit otherwise looks.

Give the signal that made them worth writing down and the source_url it came from, and put what you could not verify in qualification_needed rather than guessing. A row whose signal is "looked like a fit" is a row nobody can act on later.

Everything starts at Sourced regardless of what you pass. Duplicates are worth checking for first with get-prospect-worklist.

NameRequiredDescriptionDefault
kindNocompany or partner. An adviser — fractional CTO, consultancy — is a partner.company
nameYesCompany or adviser name.
signalNoWhat makes them worth approaching now.
websiteNoTheir website.
locationNoWhere they are based.
priorityNoA, B or C.
source_urlNoWhere the signal came from, so it can be rechecked.
contact_urlNoProfile URL for that person.
next_actionNoThe first thing to do about them.
contact_nameNoWho to approach.
contact_roleNoTheir role as published, not as inferred.
qualification_neededNoWhat you could not verify.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the lone destructiveHint=false annotation: discloses an access restriction (internal staff only), a state override the caller cannot control ('Everything starts at Sourced regardless of what you pass'), duplicate existence, and the GitLab exclusion that would otherwise produce a bad row. These are exactly the side effects an agent needs before writing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the scope rule and the staff-only gate, then the ICP, then the data-quality rules. Every sentence carries information, though the prose is slightly long for a create tool and the 'nobody can act on later' justification is editorial padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter create tool with full schema coverage, minimal annotations and no output schema, the description covers audience, qualification criteria, dedupe ordering, state behaviour and data-quality expectations. Missing only what the call returns on success or on a duplicate hit, which is a modest gap given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding intent beyond the field docs — signal must be why-now, source_url must be recheckable, qualification_needed is where unverified facts go rather than guessing. The only gap is that priority (A/B/C) and next_action get no extra guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource (add a company or adviser to the outbound pipeline) and immediately scopes it to a specific ICP (CTO/head of engineering/hands-on EM at a 10–30 engineer product company on GitHub or Bitbucket, no GitLab). That is enough to distinguish it from save-prospect-draft-tool, update-prospect-tool and get-prospect-worklist-tool without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gates the tool to internal Coderbuds staff, tells the agent to de-duplicate with get-prospect-worklist first, and prescribes what to put in signal/source_url versus qualification_needed instead of guessing. It even gives a negative example ('looked like a fit') so the agent knows a low-quality invocation when it writes one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assess-change-fit-toolAssess change fitAInspect

Pre-flight fit check for a change you are about to open as a pull request. Pass the numstat of your working diff (or, failing that, its additions, deletions, and changed-file counts) and Coderbuds answers whether the change fits how this team ships: a verdict with reasons, the team's own merged-PR size norms (median/p75) and merge time by size category, and the current review-queue pressure. Pass repository and that queue is scoped to it — human-authored open pull requests on the repo you are working in, not every repo the team owns, because "review one of these first" is only actionable if you are near them.

Four verdicts, and only two of them ask anything of you. fits — go. fits_at_edge — over the standard but inside its tolerance, which is stated for the record and needs no action, because changes this close to the line merge like changes under it. caution — meaningfully over; weigh the guidance. split_required — effectively unreviewable; split it.

Coderbuds applies its own opinionated standard (on by default, teams can opt out): changes well above the standard size get at least a caution regardless of what the team's historical norms would allow — reported as team_norms.target_total_changes.

Also pass review_goals: the distinct outcomes a reviewer must approve in this change. Describe outcomes, not implementation layers — an API, UI, migration, tests, and docs that deliver one behavior are one review goal. One goal fits. Two prompt a caution to confirm they really must ship atomically. Three or more require a split. This is the scope-coherence standard: a small diff can still be hard to review when it bundles unrelated decisions. If multiple goals truly cannot ship separately, use scope_rationale to preserve that context and record the decision after the check.

Best results: pass numstat, the raw output of git diff --numstat <base>.... Coderbuds then works out the split from the file paths itself — tests, documentation, generated files (lockfiles, snapshots, minified bundles) and binary assets are identified and discounted, so the verdict judges the CODE a reviewer actually has to read. 400 lines of blog post and 400 lines of business logic are not the same review, and without the paths there is no way to tell them apart.

Failing that, declare the split yourself: test_lines (changed lines living in test files, e.g. from git diff --shortstat -- tests/) and moved_lines (code relocated without behavioral change, e.g. an extraction refactor) are subtracted from the verdict, because a raw count punishes test coverage and double-counts refactors. Report these honestly; they are recorded with the check and visible to the team.

Do the same for files with test_files and moved_files. A rename sweep, codemod, or file-move refactor touches a lot of files with almost nothing to read in each, and the file count is judged separately from the line count — so without these a mechanical change is called oversized on file count alone. git diff --shortstat -M and git diff --summary will tell you how many of the changed files were renames.

When the verdict is not "fits", say what you did about it with record-change-fit-decision — including when you proceed anyway. Overriding is allowed; overriding silently is what leaves the standard unable to learn it is in the wrong place.

NameRequiredDescriptionDefault
numstatNoStrongly recommended: raw `git diff --numstat <base>...` output (tab-separated "added deleted path" rows, `-` for binary). Coderbuds counts the lines and files from it and classifies the paths itself, discounting tests, docs, generated files and binary assets, so the verdict judges the code a reviewer must read. Supersedes test_lines/test_files when given.
additionsNoLines added in the proposed change (e.g. from `git diff --shortstat`). Required unless numstat is given; worked out from the numstat when omitted.
deletionsNoLines deleted in the proposed change. Required unless numstat is given; worked out from the numstat when omitted.
repositoryNoOptional "owner/name" repository slug the change targets (e.g. patchstack/hub).
test_filesNoOptional: how many of the changed files are test files. Discounted from the file count the same way test_lines is discounted from the line count.
test_linesNoOptional: changed lines that live in test files (e.g. from `git diff --shortstat -- tests/`). Discounted from the verdict — test coverage is not review burden. Ignored when numstat is given.
moved_filesNoOptional: how many of the changed files were renamed or moved rather than edited (see `git diff --summary`). Discounted from the file count — without this a rename sweep is judged oversized on file count alone.
moved_linesNoOptional: lines that are relocated code, not new logic (e.g. an extraction refactor). Discounted from the verdict — a raw diff double-counts moves. Estimate honestly; recorded with the check.
review_goalsNoStrongly recommended: the distinct outcomes a reviewer must approve. Describe user or system outcomes, not implementation layers; supporting code, tests, docs, and migrations for one behavior are one goal. One fits, two get a caution, and three or more require a split.
changed_filesNoNumber of files changed. Optional but improves the size categorization.
scope_rationaleNoOptional: why multiple review goals must ship atomically. This preserves the reasoning for the team but does not silently waive the scope standard.

Output Schema

NameRequiredDescription
teamYesTeam name.
reasonsYesWhy the verdict is what it is, in plain language.
verdictYesThe strongest result across active standards: fits | fits_at_edge (over the size standard but inside tolerance — stated, no action expected) | caution | split_required.
check_idYesId of the recorded check — pass it to record-change-fit-decision to say what you did about this verdict.
guidanceYesConcrete next steps when the change does not cleanly fit.
proposedYesThe proposed change: additions, deletions, changed_files, total_changes, the discounted surfaces (test_lines, moved_lines, docs_lines, generated_lines, test_files, moved_files, docs_files, generated_files, binary_files), reviewable_changes and reviewable_files (what the verdict judges), size_category (tiny|small|medium|large|oversized, of the reviewable surface).
standardsYesPer-standard results. `size` reports its own verdict and threshold; `scope_coherence` reports assessed|not_assessed|disabled, the normalized review goals, rationale, reason, and guidance.
repositoryNoMatched team repository slug, or null if none given/matched.
team_normsYesThe box: merged PRs analyzed, median/p75 total changes, the Coderbuds standard size ceiling when active (target_total_changes), and average merge-time hours by size category.
review_queueYesCurrent open PR count, how many are awaiting a reviewer, and how many have waited past the Coderbuds review-turnaround standard. Scoped to the repository when one was given. PRs left unreviewed for over a month are reported separately as `abandoned` and excluded from the awaiting/stale pressure counts — they call for closing, not reviewing.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only `destructiveHint: false` in annotations, the description carries the behavioral burden well: it explains the four verdict meanings, the default opinionated size standard, repository-scoped queue pressure, discounting of tests/docs/generated/moved content, and that overriding the verdict is allowed but should be recorded. This is rich disclosure beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and verdicts, then moves into parameter guidance and follow-up recording. It is long for a tool description, but the complexity of 11 parameters and four verdicts justifies most of the length; a few illustrative passages could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema, the description does not need to explain return values in detail, and it covers the important decision context: verdict categories, size norms, queue scope, discounting rules, and the required follow-up recording tool. An agent has enough information to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is already 100%, the description adds meaningful semantics: `numstat` supersedes `test_lines`/`test_files`, test and moved line/file counts are discounted, `review_goals` must describe outcomes rather than implementation layers, and `scope_rationale` preserves context without waiving the standard. These details help an agent choose and populate parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific pre-flight action (“fit check for a change you are about to open as a pull request”) and explains exactly what Coderbuds returns: a verdict with reasons, team size norms, merge times, and review-queue pressure. It is clearly distinct from the sibling recording tool, which is named later as the follow-up action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives strong usage context: run it before opening a PR, pass `numstat` when possible, fall back to manual counts, and use `record-change-fit-decision` afterward when the verdict is not `fits`. It does not explicitly compare against other assessment-adjacent siblings, but the core when-to-use guidance is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy-repository-toolDeploy repository to productionA
Destructive
Inspect

Trigger a production deploy for one of your team's connected repositories. The repository must have a deploy trigger configured — either a deploy hook URL or a GitHub Actions workflow — in its Coderbuds settings. Identify the repository by name (e.g. "saas") or by full name (e.g. "patchstack/saas"). This ships whatever is currently merged; it is not a dry run. Use GetUndeployedPullRequestsTool first if you want to see what will go out.

NameRequiredDescriptionDefault
repositoryYesThe repository to deploy, by name (e.g. "saas") or full name (e.g. "patchstack/saas"). Must be connected to your team and have a deploy trigger configured.

Output Schema

NameRequiredDescription
methodYesHow the deploy was triggered: "hook" or "workflow".
messageYesA human-readable summary of the outcome.
successYesWhether the deploy was triggered.
repositoryYesThe repository that was deployed.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already flag destructiveHint=true and openWorldHint=true, so the safety profile is partly covered; the description still adds real value by spelling out what the destruction means ("ships whatever is currently merged; it is not a dry run") and by surfacing the trigger-configuration prerequisite. It omits auth/permission requirements and whether a deploy is idempotent or repeats if called twice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action, then prerequisite, then identifier format, then the dry-run caveat and alternative. Nothing is padding and there is no duplication of boilerplate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation tool with an output schema (return values need not be explained) and annotations covering the safety profile, the description covers purpose, precondition, argument format, and the irreversibility caveat. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents both naming formats and the trigger requirement, so the schema carries the semantics. The description repeats the same examples ("saas", "patchstack/saas") rather than adding new meaning such as case sensitivity or ambiguity resolution across teams.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Trigger a production deploy for one of your team's connected repositories." It is clearly differentiated from read-only siblings such as get-deployments-by-person-tool and get-undeployed-pull-requests-tool, which report rather than act.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit prerequisite (the repo must have a deploy hook URL or GitHub Actions workflow configured), explains two accepted identifier formats, and names the alternative: "Use GetUndeployedPullRequestsTool first if you want to see what will go out." That is when-to-use, when-not, and the alternative in a few sentences.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain-pull-request-score-toolExplain pull request scoreA
Read-onlyIdempotent
Inspect

Explain why one specific pull request got the quality score and label Coderbuds gave it. Returns the receipts rather than a summary: the recorded score, its label, the size counts, every penalty that was applied with its point cost, the AI adjustment, and the stored breakdown. Use this when someone asks "why is #1186 marked poor" or wants to understand a low score on a PR they opened.

The score is structural: it starts at 100 and subtracts penalties for diff size, lines changed, files changed, change complexity, focus, title/description quality and changes spanning unrelated areas, then applies a bounded AI adjustment (at most ±20) for readability, test coverage and security. It does not read CI results and does not run a linter — never claim otherwise. Report only the factors this tool returns.

NameRequiredDescriptionDefault
repositoryYesThe repository the pull request lives in, as "owner/name" (e.g. patchstack/saas) or a bare repository name.
pull_request_numberYesThe pull request number, e.g. 1186.

Output Schema

NameRequiredDescription
urlNoLink to the pull request.
sizeNoadditions, deletions, total_changes, changed_files, lines_category, diff_characters.
foundYesWhether Coderbuds is tracking this pull request.
labelNoThe label for that score: Elite, Excellent, Good, Average, Below Average, Needs Improvement, Poor.
scoreNoThe recorded quality score out of 100.
titleNoPull request title.
authorNoWho opened it.
numberYesPull request number.
scoredYesWhether a quality score was recorded.
statusNoPull request status.
factorsYesHuman-readable receipts: each penalty applied and its point cost.
messageNoWhy the lookup failed, when found is false.
categoryNoHow Coderbuds categorised the change (feature, bug-fix, dependency-update, …).
repositoryNoFull repository name.
ai_adjustmentNoPoints the AI review added or removed on top of the structural score.
scoring_basisYesWhat the score does and does not measure. Quote this rather than inventing criteria.
recommendationNoWhat would raise the score next time.
objective_scoreNoThe structural score before any AI adjustment.
not_scored_reasonNoWhy there is no score, when scored is false — usually the PR was past the size limit for review.
recorded_breakdownNoThe breakdown stored when the review ran.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent), and the description goes well beyond them: it explains the scoring model (starts at 100, subtracts diff/file/complexity/focus/title penalties), the bounded ±20 AI adjustment and its dimensions, and explicitly disclaims CI and linting so the agent cannot misreport. It also instructs 'Report only the `factors` this tool returns', which is real behavioral guidance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence front-loads the purpose followed by the return contents and usage triggers, all earning their place. The second paragraph on the scoring algorithm is longer than strictly necessary for tool selection but does support correct interpretation of the output, so the cost is mild.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't document return fields, yet it highlights the key ones and warns about what the score does and does not include. For a two-parameter read tool with full annotation coverage, nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both required parameters, so the schema already documents repository format and PR number. The description adds only an incidental example ('#1186') and no additional semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb and resource: 'Explain why one specific pull request got the quality score and label Coderbuds gave it.' It also enumerates what the response contains (score, label, size counts, penalties with point costs, AI adjustment, stored breakdown), which distinguishes it from aggregate siblings like get-pull-request-metrics-tool without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete triggering contexts ('why is #1186 marked poor', 'a low score on a PR they opened') and states explicit exclusions: it does not read CI results and does not run a linter. It does not name a specific sibling tool as the alternative for aggregate or list-level questions, which is the only gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find-delivery-bottleneck-toolFind delivery bottleneckA
Read-onlyIdempotent
Inspect

Where does a change spend its waiting time — in the backlog, being written, before review, in review, or after merge? Splits the path from "somebody asked for this" to "shipped to production" into six stages — sitting in the backlog, being written on a branch, waiting for a first review, in review, merged and waiting for a deploy, and the deploy itself running — times each one across recently merged pull requests, and names the single slowest stage with the pull requests that prove it and one intervention to try.

Use this to answer "why is our delivery slow" with one stage instead of five dashboards. The interventions differ completely by stage: chasing reviewers does nothing when the wait is after merge.

A stage is only named as the bottleneck when it was measurable on enough of the window's work. A stage that could barely be seen is still reported, with the reason it is ineligible — so missing deployment tracking reads as missing deployment tracking rather than as a fast deploy. Bot pull requests are excluded. Review history is pruned after 90 days, so the window is clamped there.

The backlog stage is measured and reported but never named as the bottleneck: it is the gap before anybody started rather than a change waiting to move, it dwarfs the delivery stages wherever a tracker is connected, and it answers to prioritisation instead. It is timed from the linked Jira or Linear issue.

The two deploy stages are scored only against repositories that have ever recorded a production deployment, because a package or a docs site never deploys and counting its merged work as untracked buries the repositories that do. Each stage carries its own analysed count for that reason; the repositories left out are named in the blind spots.

A stage that is blank because nothing is connected to time it carries an unlock string — a tracker for the backlog, a named production environment or deploy reporting for the two deploy stages — with the full ask in its note. Relay that as something to connect and what it would reveal, never as a stage with no wait in it: the changes did reach production, and how long that took is the part nothing can see.

NameRequiredDescriptionDefault
window_daysNoHow many days of merged pull requests to time. Defaults to 30, clamped to 1–90 because review history is pruned after 90 days.
repositoriesNoOptional "owner/name" repository slugs to scope to. Leave empty for every active repository the team ships to. Scoping to one representative repository makes the result easier to interpret with a team.

Output Schema

NameRequiredDescription
teamYesTeam name.
periodYesThe window actually measured: ISO start, ISO end, and its span in days.
stagesYesAll six stages — waiting_to_start, writing_the_change, waiting_for_review, in_review, waiting_to_deploy, deploy_running — each with median/p75 hours, sample size, the count it was scored against (`analysed`, which for the two deploy stages counts only repositories that deploy), coverage, whether it is eligible to be ranked, whether it competes for the bottleneck at all (`ranked`, false for waiting_to_start), how many changes merged with no review from anyone but their author and so never entered the stage (`skipped`, review stages only — a skipped change did something, it is not missing data), what would have to be connected to see it (`unlock`), and a note saying why it cannot or will not be ranked.
headlineYesOne-line answer to lead with when relaying this result.
bottleneckNoThe single slowest eligible stage: median and p75 hours, sample size, coverage, one intervention to try, and the three slowest pull requests as evidence. Null when no stage was measurable on enough of the window — read the stage notes for what is missing.
blind_spotsYesWhat these numbers cannot see. Relay these alongside the finding; the failure mode of this diagnostic is a confident reading of a gap in the data.
repositoriesYesRepository slugs included in the result.
contributing_factorsYesPatterns that make the slowest stage slower — review concentration, oversized changes, current queue pressure, work merging without a recorded review. Reported, never ranked.
pull_requests_analysedYesHuman-authored pull requests merged in the window.
unmatched_repositoriesYesRequested slugs that did not match an active team repository — either not tracked, or archived.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly and idempotent annotations, the description discloses extensive behavior: six timed stages, eligibility rules for naming a bottleneck, bot PR exclusion, 90-day review-history clamping, backlog treatment, deploy-stage repository scoping, blind spots, and unlock strings for missing data. These are exactly the operational caveats an agent needs to interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core question and stage model, and each paragraph addresses a distinct behavioral caveat. It is long and somewhat verbose for a tool definition, but the length is largely justified by the complexity of the analysis and the edge cases being disclosed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's analytical complexity and the presence of an output schema, the description is complete enough for correct invocation and interpretation. It covers what stages exist, how bottlenecks are chosen, what is excluded, how missing data appears, and how to relay unlock guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both window_days and repositories are already documented in the input schema. The description largely reinforces the schema by mentioning the 90-day clamp and the interpretability of scoping to a representative repository, but adds little parameter-level detail beyond what is structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific analytical purpose: splitting the path from request to production into six stages, timing each across recently merged pull requests, and naming the single slowest stage with supporting PRs and an intervention. It distinguishes itself from dashboard-style alternatives by framing the result as 'one stage instead of five dashboards.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly says to use this tool to answer 'why is our delivery slow' and explains that stage-specific interventions differ, which helps an agent understand the intended context. It does not explicitly name sibling alternatives such as get-dora-metrics or get-pull-request-metrics or state when not to use this tool, so it falls short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-agent-activity-toolGet agent activityA
Read-onlyIdempotent
Inspect

Get a summary of autonomous agent activity for the authenticated user's team. Returns which agents are enabled, recent actions, per-agent stats, and pending approval counts.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
teamYesTeam name.
postureYesHow loudly the agent speaks: off, preview, quiet, public or direct. The single control over whether it acts.
agent_summaryYesPer-agent statistics.
enabled_agentsYesList of agent types currently active for the team.
recent_actionsYesMost recent agent actions (up to 10).
pending_approvalsYesCount of actions awaiting approval.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety and repeatability are covered. The description adds the team-level scope, which is useful, but leaves 'recent actions' undefined — no time window, no pagination or volume limits — and repeats return contents that the output schema already supplies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, and the resource plus scope are front-loaded before the return summary. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool with annotations covering the safety profile and a full output schema, the description is nearly sufficient — scope and contents are both stated. The remaining gap is the undefined 'recent' window, which affects how an agent interprets and reports the data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The stated team scope correctly signals that no user or team identifier needs to be passed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('autonomous agent activity') plus the scope ('authenticated user's team'), and enumerates what comes back (enabled agents, recent actions, per-agent stats, pending approvals). That enumeration distinguishes it from neighbors like get-person-activity-tool, get-ai-adoption-tool, and get-my-insights-tool, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to reach for this tool versus the many overlapping reporting siblings (get-ai-adoption-tool, get-mcp-adoption-tool, get-team-overview-tool, get-my-status-tool). The only guidance is the implicit 'for the authenticated user's team' scoping; no exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-ai-adoption-toolGet AI adoptionA
Read-onlyIdempotent
Inspect

How much of this team's shipped work is AI-assisted, and what that work did once it shipped. Returns adoption rate (share of active contributors using AI), contribution intensity (share of lines changed), the AI-assisted PR rate, which AI tools were detected, detection confidence, and a delivery outcome split comparing AI-assisted merged PRs against the rest on lead time and size. Use it to answer "is AI actually in our SDLC yet" and "is it paying off" with the same call. Adoption alone is a pilot metric — the outcome split is what turns it into a KPI, and the result says plainly when the samples are too small to compare or when detection has not covered the period. Bot and dependabot PRs are excluded from the outcome comparison. Where a coding agent reported a change (first-party, via report-ai-usage), its report decides how that PR is counted. The attribution block lists those reports and grades what Coderbuds inferred from the same diffs against them — the error rate every unreported PR carries.

NameRequiredDescriptionDefault
periodNoReporting period. Defaults to rolling_30d.rolling_30d
repositoryNoOptional "owner/name" repository slug used to resolve which of your teams this call is about. It does not filter the metrics — they always cover the whole team.

Output Schema

NameRequiredDescription
teamYesTeam name.
toolsYesDetected AI tools with counts and shares.
periodYesHuman-readable period label.
caveatsYesWhat these numbers do and do not prove.
adoptionYesShare of active contributors who shipped AI-assisted PRs.
headlineYesOne-line read of adoption, intensity, and the outcome split together.
outcomesYesAI-assisted versus other merged PRs on lead time and size, with a comparable flag.
detectionYesDetection threshold and how much of the period has actually been analysed.
intensityYesShare of lines changed that came from AI-assisted PRs.
confidenceYesDetection confidence distribution across AI-assisted PRs.
attributionYesWhat coding agents reported about their own usage, and how often the inferred detector agreed with them.
assisted_pull_requestsYesShare of PRs that were AI-assisted.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses real behavioral detail: bot and dependabot PRs are excluded from the outcome comparison, first-party reports override inference for the same PRs, the result self-reports when samples are too small or detection hasn't covered the period, and the attribution block grades inferred attribution error rates. That is exactly the caveat context an agent needs before trusting or quoting the numbers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It front-loads the business question and the returned metrics, then layers caveats in decreasing importance. It is dense but nearly every clause carries information; the attribution paragraph is the longest and slightly buries its point, but is still relevant and not redundant with the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't restate return shapes, and it correctly spends its words on interpretation and caveats instead: sample-size warnings, detection coverage gaps, bot exclusion, and attribution confidence. For a two-optional-parameter read tool with full annotations, nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema itself carries the important nuance (the repository slug resolves team scope but does not filter metrics; period enum defaults to rolling_30d). The description adds no period semantics or hints about choosing between rolling vs calendar windows, so it sits at the baseline rather than adding value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific question and then enumerates exactly what the tool returns: adoption rate, contribution intensity, AI-assisted PR rate, detected tools, detection confidence, and an outcome split on lead time and size. This clearly distinguishes it from adjacent siblings such as get-mcp-adoption-tool (MCP-specific) and report-ai-usage-tool (ingestion rather than reporting).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete intent framing — answer "is AI actually in our SDLC yet" and "is it paying off" with one call — and positions the outcome split as the KPI-grade signal versus adoption as a pilot metric. It also flags interaction with report-ai-usage-tool for first-party reports. What it lacks is an explicit exclusion, e.g. when to prefer get-mcp-adoption-tool or the DORA/PR metric tools instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-created-pull-requests-toolGet created pull requestsA
Read-onlyIdempotent
Inspect

Count pull requests OPENED over a recent window (default 1 day), broken down per repository and per author, with a human-vs-bot/dependabot split. Use this whenever the question is how many pull requests were created, opened or raised — today, this week, on a repo, or across the team — and especially when someone asks to see it "per repo" or "by repository".

Prefer this over a per-person activity breakdown for any total. It counts from the team's repositories rather than its member list, so it includes authors who have no Coderbuds account (reported as authors_without_member and created_by_non_members) and excludes a member's work in repositories this team does not ship. A member-first count gets both of those wrong.

The result carries its own denominator: repositories is exactly the list the numbers came from, so you can answer "which repos is this based on" from the same call. Slugs that match no team repository come back in unmatched_repositories instead of quietly counting zero.

Opened is counted by the time the provider recorded the pull request being opened. That is a different set from merged in the window — use get-merged-pull-requests for merges, and never present the two as reconciling.

NameRequiredDescriptionDefault
daysNoLook-back window in days, trailing from now. Defaults to 1 — note that is the last 24 hours, not today's calendar day.
include_botsNoWhether to include bot/dependabot PRs in the totals. Defaults to true; the result always reports the human-vs-bot split regardless.
repositoriesNoOptional list of "owner/name" repository slugs to scope to (e.g. ["patchstack/saas"]). A bare repo name like "saas" also matches. Omit to include every repository on the team.

Output Schema

NameRequiredDescription
daysYesLook-back window used, in days.
teamYesTeam name.
sinceYesISO-8601 start of the window.
untilYesISO-8601 end of the window.
authorsYesPer-author counts with is_bot and is_member flags.
counted_asYesWhat "created" means in this result, to quote when reporting it.
bot_createdYesPRs opened by bots (any "[bot]" login).
not_capturedYesLimits of this result, to repeat when reporting the numbers.
repositoriesYesRepository slugs the numbers came from — the denominator for the whole result.
human_createdYesPRs opened by humans.
total_createdYesTotal PRs opened in the window (respects include_bots).
dependabot_createdYesPRs opened by dependabot specifically.
authors_without_memberYesHuman authors with no Coderbuds membership on this team — people a per-person breakdown would have omitted entirely.
created_by_non_membersYesPRs those non-member humans opened.
repositories_breakdownYesPer-repository totals with human/bot split, highest first.
unmatched_repositoriesYesRequested slugs that did not match a team repository.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent, but the description adds real behavioral context: counting is based on team repositories rather than member list, non-member authors surface as separate fields, unmatched slugs land in `unmatched_repositories` instead of silently returning zero, and opened-time is distinct from merge-time.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the denominator caveat, and every paragraph carries distinct information. Slightly long — the quoted 'per repo' / 'by repository' phrasing and the 'today, this week, on a repo, or across the team' list are a touch redundant, but nothing is wasted enough to hurt.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only counting tool with an output schema and full param coverage, the description supplies everything an agent needs: window semantics, inclusion rules for bots, repository scoping behavior, and the mismatch/edge-case handling. No gaps remain that would cause a wrong call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters including the 24-hour-vs-calendar-day caveat and the bare-name matching rule. The description adds no parameter detail beyond what the schema states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Count pull requests OPENED'), plus the scope (recent window, default 1 day) and the breakdowns produced (per repository, per author, human vs bot). It explicitly separates itself from get-merged-pull-requests and from a per-person activity breakdown, so an agent can route without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggering questions ('how many PRs were created/opened/raised — today, this week, on a repo, across the team') and an explicit preference rule over a sibling: 'Prefer this over a per-person activity breakdown for any total.' It also names the alternative for merges and warns against reconciling the two.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-deployments-by-person-toolGet deployments by personA
Read-onlyIdempotent
Inspect

List who triggered production deployments over a recent window (default 7 days) and how many each shipped, with failed deploys surfaced per person — e.g. "Bob Marley: 5 deploys (3 failed)". Use this to answer "who has deployed to production this week and how much". Returns each person's deploy count, failed count, and the repositories they shipped to, sorted by deploy count, plus team totals.

NameRequiredDescriptionDefault
daysNoHow many days back to count production deploys. Defaults to 7 (this week), clamped to 1–90.

Output Schema

NameRequiredDescription
daysYesLookback window in days.
teamYesTeam name.
sinceYesISO-8601 start of the window.
peopleYesPer-person breakdown: deploy_count, failed_count, and repositories, sorted by deploy_count.
environmentYesDeployment environment counted (production).
total_failedYesTotal failed production deploys in the window.
total_deploysYesTotal production deploys across the team in the window.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint and idempotentHint, so the description only needs to add context — and it does: the windowing default, the per-person failure surfacing, the sort order (by deploy count), and the inclusion of team totals. It doesn't mention any rate limits or empty-result behavior, but for a read-only aggregate that's a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and scope, followed by the use case and return contents. The inline example ('Bob Marley: 5 deploys (3 failed)') earns its place by conveying output shape, though the final sentence partially duplicates the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter read tool with annotations and an output schema, the description covers purpose, usage trigger, and aggregation behavior. The return-value description is somewhat redundant given the output schema exists, and no sibling differentiation is offered, keeping it just shy of full marks.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and schema description coverage is 100% — the schema already documents 'days', the default of 7, and the 1–90 clamp. The description restates the 7-day default but adds no new semantics. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — listing who triggered production deployments over a window, with failed counts and repos per person — and includes a concrete output example. It's clearly distinguishable by topic from get-dora-metrics-tool or get-person-activity-tool, but it never names those siblings to make the boundary explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage trigger: 'Use this to answer "who has deployed to production this week and how much".' That's a clear context for selection, but there are no exclusions or pointers to alternatives (e.g. when to use get-dora-metrics-tool instead of this attribution view).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-dora-metrics-toolGet DORA metricsA
Read-onlyIdempotent
Inspect

Get DORA (DevOps Research and Assessment) metrics for the authenticated user's team. Returns deployment frequency, lead time for changes, change failure rate, and mean time to recovery with period-over-period comparison and performance categories (Elite/High/Medium/Low). The comparison fields are null when the team's history doesn't reach back over the previous period; say nothing about change rather than inferring it. Lead time is null when no merged pull request could be matched to a deploy, and recovery time is null when no failure was recovered from; both are then categorised "No Data", not rated. The overall rating averages only the measured metrics and is "No Data" with fewer than three.

NameRequiredDescriptionDefault
periodNoReporting period. Defaults to rolling_30d.rolling_30d

Output Schema

NameRequiredDescription
teamYesTeam name.
periodYesHuman-readable period label.
metricsYesDORA metrics keyed by metric name.
overall_performanceYesOverall DORA performance rating (Elite/High/Medium/Low, or No Data when fewer than three metrics were measured).

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses the null semantics that would otherwise cause misreads: comparison fields null when history doesn't span the prior period, lead time null with no matched merged PR, recovery time null with no recovery, and the instruction to say nothing rather than infer change. It also explains how the overall rating is computed and its minimum-sample rule (fewer than three measured metrics yields "No Data").

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core action and the metric list, then moves to edge-case semantics. Each null-handling sentence carries real weight, though the run of three separate null clauses plus the overall-rating rule makes the back half denser than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full param coverage, the description correctly focuses on interpretation rather than return shape: metric definitions, null behavior, categorisation labels, and rating aggregation. It does not address whether the team scope is implicit from auth or whether permissions/team membership affect results, a small remaining gap for a team-scoped tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single period parameter has 100% schema description coverage with a six-value enum and a documented default, so the schema already carries the meaning. The description never mentions the period parameter, its options, or how period choice interacts with the previous-period comparison fields, adding nothing on top of the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Get DORA metrics for the authenticated user's team") and enumerates exactly what the four metrics are: deployment frequency, lead time, change failure rate, and MTTR. It stops short of distinguishing itself from overlapping siblings such as get-team-overview-tool or get-my-insights-tool, so the agent must infer where DORA ends and those begin.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or named-alternative guidance. The only scoping signal is "for the authenticated user's team", and nothing tells the agent when to pick this over get-team-overview-tool, get-team-insight-summary-tool, or get-pull-request-metrics-tool, which plausibly surface related delivery data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-guidance-drift-toolGet guidance driftA
Read-onlyIdempotent
Inspect

Has this repo's agent guidance file drifted from the repo it describes? A CLAUDE.md or AGENTS.md that lists the directories under app/Domain (or any other path) is making a claim that decays silently — the list was right when written, the code kept moving, and nothing fails when the two diverge. Agents read the stale list as truth, so a rotted guidance file is worse than none: it teaches the wrong shape of the codebase with full confidence.

For each connected repository this returns the guidance file found, when it last changed, and every directory whose listing has gone stale — how many entries the file documents, how many are actually there now, and examples of what is missing. Call it before trusting a guidance file, when onboarding an agent onto an unfamiliar repo, or when deciding whether a hand-maintained inventory should be replaced by a get-team-context call.

Only ENUMERATIONS are flagged. A file that mentions a path in passing is referencing it, not claiming an inventory, and is never reported. A directory is flagged only when the file already names several of its children (so it is holding a list) and is missing several more. Repos with no guidance file, BitBucket repos, and unreadable repos report insufficient_data — never a false drift. Archived repositories are skipped. Use get-repo-readiness for whether a guidance file exists at all; this tool judges whether the one that exists is still true.

NameRequiredDescriptionDefault
repositoryNoOptional "owner/name" (or bare repo name) to assess a single repository instead of every repository on the team.

Output Schema

NameRequiredDescription
teamYesTeam name.
rollupYesTeam rollup: repositories_assessed, repositories_drifted, and undocumented_entries (the total number of directory entries no guidance file mentions).
repositoriesYesPer-repository drift: repository slug, guidance_file (CLAUDE.md/AGENTS.md), last_updated date and days_since_update, status (drifted|current|insufficient_data), drifted_directories (path, documented, present, undocumented, examples), and a recommendation. Most-drifted repositories first.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and idempotent, yet the description adds substantial behavior beyond them: only enumerations are flagged, passing mentions are never reported, and no-file/BitBucket/unreadable repos return insufficient_data rather than false drift, with archived repos skipped. These false-positive-avoidance rules are exactly the kind of context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The leading question frames the purpose, then rationale, then guidance, then edge-case rules – front-loaded and logically ordered. Slightly long, but nearly every sentence carries distinct information (the 'worse than none' rationale is the only expendable flourish).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return detail isn't strictly needed, yet the description still summarizes what's returned (file, last change, stale directories with entry counts and examples). Combined with the edge-case rules, nothing an agent needs to decide whether and how to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single optional parameter is documented there, but the description reinforces the default behavior ('For each connected repository') versus the single-repo override, adding context the bare schema doesn't emphasize.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific question naming the resource (agent guidance file) and the operation (detecting drift). It clearly distinguishes itself from get-repo-readiness and get-team-context by scope, so an agent can tell the tools apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit call conditions (before trusting a guidance file, when onboarding an agent, when deciding whether to replace a hand-maintained inventory) and names the alternative get-repo-readiness for the 'does a file exist' question. When-to-use and when-not are both present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-icp-toolGet ideal customer profileA
Read-onlyIdempotent
Inspect

Internal Coderbuds staff only. Who Coderbuds sells to and what an opener is allowed to say — the rules behind the Who it is for tab of /admin/prospects, as they stand today.

Call this before writing anything to a prospect, alongside get-prospect-worklist. The worklist says who to write to; this says what the message has to be. Rules change as outbound teaches us something, so read them rather than working from a version you saw in a document — that gap is exactly how outbound came to be sent on a wedge that had already been measured and dropped.

Seven groups come back: who it is for, what the opener does, what makes a row worth sourcing, what closes a row, what we can say, how it may be sent, and what to do when somebody writes back.

Three things to read carefully:

  • retired carries wedges that were tried and abandoned, each with the reason. Do not re-propose one of these in different words. The reason is the finding.

  • evidence: null marks a rule nobody has grounded in anything. Follow it, but weigh it as somebody's opinion rather than a measurement.

  • proposed are suggestions waiting on a person. They are not binding — do not draft against them, and do not propose the same thing twice.

Use propose-icp-rule when outbound teaches you something this list does not say.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and idempotentHint; the description adds substantial context beyond that — that rules are live and supersede any cached/documented version, the seven-group return shape, and how to interpret the `retired`, `evidence: null`, and `proposed` markers. That last point is a real behavioral constraint ('they are not binding — do not draft against them').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the access restriction and purpose, then the call-to-action, then a bulleted breakdown of the tricky fields. It is on the long side for a zero-argument tool, but nearly every sentence carries operational instruction rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain the return value — and it does, enumerating the seven groups and calling out the three semantics that could otherwise be misread. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies and there is no schema gap to compensate for. The description instead spends its words on return semantics, which is a reasonable substitute but not strictly a parameter concern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete resource and scope: 'Who Coderbuds sells to and what an opener is allowed to say — the rules behind the Who it is for tab of /admin/prospects.' It is immediately distinguishable from get-prospect-worklist-tool (who to write to) and propose-icp-rule-tool (adding rules), both named directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit temporal guidance: 'Call this before writing anything to a prospect, alongside get-prospect-worklist.' It also names the alternative for the out-of-scope case: 'Use propose-icp-rule when outbound teaches you something this list does not say.' Both the when and the when-not are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-mcp-adoption-toolGet MCP adoptionA
Read-onlyIdempotent
Inspect

Who on the team is actually using the Coderbuds MCP. Every MCP tool call is recorded per member, so this reports adoption over a recent window (default 30 days): total invocations, per-member usage with last-used time and favourite tool, per-tool call counts, and — the nudge list — login members who have never connected the MCP at all. The denominator is who could plausibly connect one today — a login member (only they can mint API tokens) who is still shipping code. Tracked contributors cannot connect, deactivated or long-inactive members have left, and someone with several linked identities counts once. Use when asked "who is using the MCP", "is the team on the MCP yet", or to find who still needs the setup instructions.

A call is attributed to the team it was about — the repository slug on it, or the ?team= binding on the connection — not to whichever team the web switcher last landed on, so a member working across several teams shows up under the one they were working in.

NameRequiredDescriptionDefault
daysNoHow many days back to summarize usage. Defaults to 30, clamped between 1 and 90.
repositoryNoOptional "owner/name" slug (from `git remote get-url origin`) of the repository you are working in — binds the session to the owning team when you belong to several.

Output Schema

NameRequiredDescription
teamYesTeam name.
totalsYesinvocations, members_using (distinct people in window), connectable_members (login members still shipping code, one per person — the denominator), tools_used.
by_toolYesPer tool: tool, invocations, last_used_at. Sorted by usage.
by_memberYesPer person: user_id, name, invocations, last_used_at, top_tool. Sorted by usage.
lookback_daysYesUsage window in days.
never_connected_membersYesCurrently active login members with no MCP call on record ever — who still needs the setup instructions.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, yet the description still adds substantial non-obvious behavior: the exact denominator used for the nudge list (login member still shipping code, deduped across linked identities, excluding tracked contributors and inactive members). It also discloses the attribution rule — a call counts for the team named by the repository slug or ?team= binding, not the web switcher's last selection — which is the kind of semantics an agent cannot infer elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core answer is front-loaded in the first sentence and the rest is dense, information-bearing prose with no filler. It runs long, and the attribution paragraph sits somewhat apart from the main payload, costing it a point on economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not spell out return shapes, and it still enumerates the report's sections plus the definitional subtleties (nudge-list denominator, team attribution) that determine whether the agent interprets the numbers correctly. Nothing needed to call or trust the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the schema already carries the days default, clamp, and repository slug format. The description goes beyond that by explaining what repository actually does to attribution when a member belongs to several teams, adding real meaning rather than restating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: reports Coderbuds MCP adoption per member over a window, with named sub-outputs (total invocations, per-member usage, per-tool counts, nudge list). An agent knows exactly what question this answers. It does not explicitly separate itself from the nearby get-ai-adoption-tool or get-agent-activity-tool, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggering questions ("who is using the MCP", "is the team on the MCP yet") and a second use case (finding who needs setup instructions). That is clear context for when to reach for it. It names no exclusions and no sibling alternatives, which is exactly the gap that keeps it at 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-merged-pull-requests-toolGet merged pull requestsA
Read-onlyIdempotent
Inspect

Count merged pull requests over a recent window (default 30 days), with a human-vs-bot split so you can answer "including dependabot" and "excluding dependabot" from the same result. Returns the total plus per-repository and per-author breakdowns. Optionally scope to specific "owner/name" repositories (e.g. patchstack/saas). Use this when the user asks how many PRs were merged, shipped, or closed on a repo or across the team — including bot/dependabot PRs.

NameRequiredDescriptionDefault
daysNoLook-back window in days. Defaults to 30.
include_botsNoWhether to include bot/dependabot PRs in the totals. Defaults to true; the result always reports the human-vs-bot split regardless.
repositoriesNoOptional list of "owner/name" repository slugs to scope to (e.g. ["patchstack/saas"]). A bare repo name like "saas" also matches. Omit to include every repository on the team.

Output Schema

NameRequiredDescription
daysYesLook-back window used, in days.
teamYesTeam name.
sinceYesISO-8601 start of the window.
untilYesISO-8601 end of the window.
authorsYesPer-author merged counts with an is_bot flag.
bot_mergedYesMerged PRs authored by bots (any "[bot]" login).
human_mergedYesMerged PRs authored by humans.
repositoriesYesRepository slugs included in the result.
total_mergedYesTotal merged PRs in the window (respects include_bots).
dependabot_mergedYesMerged PRs authored by dependabot specifically.
repositories_breakdownYesPer-repository totals with human/bot split.
unmatched_repositoriesYesRequested slugs that did not match a team repository.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and idempotent, so the safety profile is covered; the description adds real behavioral context by disclosing the return shape (total plus per-repository and per-author breakdowns) and the key nuance that the human-vs-bot split is always reported regardless of include_bots. It does not mention pagination or limits, but for an aggregate count that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and window, then the return shape, then the trigger sentence. Four sentences with little waste, though the bot/dependabot point is stated twice (in the split explanation and again at the end).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, zero-required-parameter read tool with an output schema and safe annotations, the description covers what to call it for, the defaults, and the shape of results. The main missing piece is which sibling to choose for adjacent PR questions, which is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining that the bot split lets you answer both 'including' and 'excluding dependabot' from a single call, and by restating the owner/name scoping with a concrete example. It does not clarify day-range bounds or caps on the repositories list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Count merged pull requests over a recent window (default 30 days)'. The 'merged' qualifier inherently separates it from siblings like get-created-pull-requests-tool and get-open-pull-requests-tool, though it never names them. Slight ambiguity from lumping 'merged, shipped, or closed' together, which are not strictly the same event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger condition: 'Use this when the user asks how many PRs were merged, shipped, or closed on a repo or across the team — including bot/dependabot PRs.' No explicit exclusions or named alternatives (e.g. get-pull-request-metrics-tool, get-open-pull-requests-tool) are offered for adjacent questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-my-insights-toolGet my insightsB
Read-onlyIdempotent
Inspect

Get active insights for the authenticated user across all their teams. Optionally filter by tab (activity, performance, collaboration, satisfaction) or only show unseen insights.

NameRequiredDescriptionDefault
tabNoFilter insights by tab category.
limitNoMaximum number of insights to return (1-25).
unseen_onlyNoOnly return insights the user has not yet seen.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so safety is covered elsewhere. The description does add one real behavioral fact — only 'active' insights are returned and results span all teams — but says nothing about ordering, whether dismissed items are excluded by definition, or what happens when limit is exceeded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with the scope stated first and the optional filters second. Slightly redundant with the schema's parameter descriptions, but nothing wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description never characterizes what an 'insight' contains, so an agent cannot anticipate the return shape. With zero required parameters, 100% schema coverage, and safety covered by annotations, the remaining gap is moderate but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the tab enum, the limit range, and unseen_only are all fully documented in the schema. The description merely restates the filter options without adding format, default, or interaction details, which is the correct baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('get active insights') plus the scope: the authenticated user's insights across all their teams. That scope does implicitly separate it from get-team-insight-summary-tool, but the sibling is never named, so differentiation is inferred rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The optional tab filter and unseen_only flag hint at usage patterns, but there is no statement of when to choose this over get-team-insight-summary-tool or get-my-status-tool, and no exclusions. Usage is implied by the description rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-my-status-toolGet my statusA
Read-onlyIdempotent
Inspect

Your personal cross-repo status: your open PRs and what blocks each (awaiting review, changes requested, failing checks, draft, or ready to merge), reviews you could unblock (other people's oldest PRs waiting on a reviewer, bots excluded), your merged-but-undeployed work with hours waiting, and what you shipped recently — standup prep and morning brief in one call. Lead with the headline when relaying this result.

NameRequiredDescriptionDefault
repositoryNoOptional "owner/name" slug (from `git remote get-url origin`) or bare repo name of the repository you are working in — binds the session to the owning team when you belong to several.
window_daysNoHow many days back to look for your recently merged PRs (default 2 — since the last standup). Clamped to 1-30.

Output Schema

NameRequiredDescription
teamYesTeam name.
userYesThe user this status belongs to.
headlineYesOne-line personal summary to lead with when relaying this result.
my_open_prsYesYour open PRs, oldest first: repository, number, title, url, blocker (awaiting_review, changes_requested, failing_checks, draft, or ready_to_merge), days_open.
window_daysYesRecently-merged lookback window in days.
my_undeployedYesYour merged PRs not yet shipped to production, longest-waiting first: repository, number, title, merged_at, hours_waiting.
recently_mergedYesYour PRs merged within the window, newest first: repository, number, title, merged_at — the "what did I do" standup line.
reviews_to_giveYesOther people's open PRs waiting on a reviewer, oldest first (capped at 5, bots excluded): repository, number, title, url, author, days_open — the queue you can unblock.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so safety is covered; the description adds real substance beyond that — bots are excluded from reviewer suggestions, merged work carries 'hours waiting', blockers are categorized into five named states. It also gives an output-consumption instruction ('lead with the `headline`'), which no structured field conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what the agent gets, then a compact rendering instruction. Despite being dense with enumerated content, every clause maps to a distinct capability (blockers, reviewer queue, undeployed work, recent ships) rather than restating the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description goes further by telling the agent how to relay the result. Scope, bot exclusion, and the four data sections are all covered; only the session-binding behavior when `repository` is omitted is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are described in detail in the schema (owner/name slug semantics, default 2 days, clamped to 1-30). The description adds nothing about either parameter, so the baseline 3 applies — the schema is doing all the work here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource — a personal, cross-repo status rollup — and enumerates exactly what it bundles: your open PRs with blocker reasons, unblockable reviews, merged-but-undeployed work, and recent shipments. That composition makes it clearly distinct from point tools like get-open-pull-requests-tool or get-merged-pull-requests-tool, though it never names a sibling to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'standup prep and morning brief in one call' gives a concrete usage context that tells the agent when this aggregate is the right entry point. However, it offers no exclusions or routing advice — an agent drilling into one PR or one repo isn't told to prefer get-open-pull-requests-tool or get-peull-request-metrics-tool instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-open-pull-requests-toolGet open pull requestsA
Read-onlyIdempotent
Inspect

List the team's open pull requests grouped by author, with the signal that shows what is blocking each one: whether it is awaiting a reviewer, has changes requested, is approved and ready to merge, is still a draft, is failing CI checks, or is simply too large for anyone to review. Optionally scope to specific "owner/name" repositories (e.g. patchstack/hub). Use this to nudge people to merge — lead with the headline. Human authors include their oldest open PRs with age; bot authors (dependabot etc.) are collapsed into count-only summaries so a dependency backlog cannot drown out the PRs a person should act on.

total_oversized and the per-PR oversized flag mark pull requests past the hard review limits — over 100 files, over 5,000 added or deleted lines, or over 8,000 changed in total. These are the ones a reviewer cannot pick up at all, so they are named in the headline and sorted to the front of their author's list. Report them as blocked on being split, not as blocked on a reviewer. The threshold is deliberately the hard limit rather than the team's line target: an open PR gives no file list, so the test/docs discount assess-change-fit applies to a numstat cannot be applied here, and judging against the target would flag changes that check would have passed. size.category is unknown when the counts were never recorded — that is missing data, not a small pull request; do not describe it as small.

Set include_bot_details when you are working the dependency queue itself — merging dependabot PRs, chasing failing bumps — and each bot author gains the PR numbers, repositories, titles and URLs you need to act, ordered by what can be closed out first: ready to merge, then failing checks, then oldest.

Check status_freshness before quoting counts: it flags open PRs whose local status may be stale, and repositories that have not synced pull requests recently — whose PRs may be missing from these counts altogether. Archived (decommissioned) repositories are excluded — this is a review queue, and their PRs are nobody's to review.

NameRequiredDescriptionDefault
repositoriesNoOptional list of "owner/name" repository slugs to scope to (e.g. ["patchstack/hub", "patchstack/saas"]). Omit to include every active repository on the team.
include_bot_detailsNoInclude the individual PRs for bot authors (dependabot etc.) instead of counts alone — numbers, repositories, titles and URLs, ordered ready-to-merge first, then failing checks, then oldest. Set this when you are working the dependency queue itself; leave it off when summarising a review queue for people.

Output Schema

NameRequiredDescription
botsYesPer bot author: total, awaiting_review, ready_to_merge, failing_checks — plus pull_requests (capped, actionable first) and more_not_shown when include_bot_details was set.
teamYesTeam name.
authorsYesPer human author: totals plus awaiting_review, changes_requested, ready_to_merge, draft, failing_checks, oversized, their open PRs (capped, oversized first then oldest, each with opened_at/days_open, an oversized flag and a size block of additions/deletions/changed_files/category), and more_not_shown.
bot_openYesOpen PRs authored by bots (dependabot etc.).
headlineYesOne-line human/bot summary to lead with when relaying this result.
human_openYesOpen PRs authored by people.
total_openYesTotal open PRs across the included repositories, bots included.
repositoriesYesRepository slugs included in the result.
total_oversizedYesHuman-authored open PRs past the hard review limits (over 100 files, over 5,000 added or deleted lines, or over 8,000 changed). Blocked on being split, not on a reviewer.
status_freshnessYesHow wrong these counts could be, in both directions. possibly_stale counts open PRs with no status sync or activity in over 30 days (some may already be closed, so counts are an upper bound); repositories_awaiting_sync names active repositories whose PRs have not synced in that time (PRs there may be missing, so counts are a lower bound). note spells out whichever applies, and is null only when neither does.
total_awaiting_reviewYesTotal open PRs blocking on a reviewer, bots included.
unmatched_repositoriesYesRequested slugs that did not match an active team repository — either not tracked, or archived.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds substantial behavioral context beyond annotations: grouping by author, bot authors collapsed by default, oversized PR thresholds and handling, status_freshness caveats, and exclusion of archived repositories. This is exactly the kind of operational detail an agent needs to interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but front-loaded: it begins with the core purpose and blocking signals before expanding into oversized PRs, bot handling, and freshness. Some sentences are dense and could be tightened, but every section contributes useful behavioral context. The structure supports scanning, though it is more verbose than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex (author grouping, blocking signals, bot collapsing, oversized flags, freshness, archived exclusion), and the description covers all of these behavioral nuances. An output schema exists so return values need not be explained. With annotations covering safety and schema covering parameters, the description completes the picture for correct interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters, including detailed guidance for include_bot_details. The description repeats the same information about repositories scoping and include_bot_details without adding meaning beyond the schema (e.g., the ordering for bot details is already in the schema). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'List the team's open pull requests grouped by author' with blocking signals. It scopes to open PRs and explains the grouping, which distinguishes it from broad pull-request listing tools. However, it does not explicitly name sibling tools like get-merged-pull-requests-tool as alternatives, so it falls short of the highest clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: 'Use this to nudge people to merge — lead with the headline' and tells when to set include_bot_details (dependency queue) versus leaving it off (summarising for people). It also advises checking status_freshness before quoting counts. It lacks explicit when-not-to-use rules or named alternatives, but the guidance is sufficient for correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-person-activity-toolGet person activityA
Read-onlyIdempotent
Inspect

What one person on the team has actually been doing, over a recent window (default 8 weeks). Answers "is Dave still shipping?" or "what has Sam been working on?" with three counts read together rather than one in isolation: pull requests opened and merged, reviews given to other people, and production deploys triggered — plus a week-by-week rollup, the busiest days, and the longest quiet run.

Lead with the headline. A pull request count on its own supports the wrong conclusion: someone who opened 5 pull requests and gave 70 reviews is carrying the team's review load, not coasting. The headline says which of those it is.

Identify the person by name or provider login ("dave", "Dave Smith", "@dsmith"). When the reference is ambiguous or unknown the tool returns the team's member names in candidates instead of guessing — ask which one rather than reporting activity for the wrong person.

not_captured lists what this data cannot see (commits, review comment volume, ticket assignment, anything outside git). Repeat those limits when the answer is "this person looks quiet" — never present an absence of pull requests as an absence of work.

NameRequiredDescriptionDefault
daysNoHow many days back to summarize. Defaults to 56 (8 weeks), clamped to 7–84. The 84-day ceiling is where review history stops being complete.
personYesWho to look up, by name or provider login — "dave", "Dave Smith" or "@dsmith". Ambiguous references return candidates rather than a guess.
repositoryNoOptional "owner/name" slug (from `git remote get-url origin`) of the repository you are working in — binds the session to the owning team when you belong to several.

Output Schema

NameRequiredDescription
daysYesWindow length in days.
personYesResolved person name.
totalsYespull_requests_opened, pull_requests_merged, reviews_given, deploys, active_days.
weeklyYesPer-week rollup: week_starting, pull_requests_opened, reviews_given, deploys.
end_dateYesLast day of the window (YYYY-MM-DD, UTC).
headlineYesThe sentence to lead with — the three counts and what they mean read together.
start_dateYesFirst day of the window (YYYY-MM-DD, UTC).
busiest_daysYesUp to five highest-activity days with their per-row counts.
not_capturedYesWhat this data cannot see. Repeat these limits when reporting that someone looks quiet.
identities_collapsedYesHow many linked provider identities were merged into this person.
longest_quiet_run_daysYesLongest unbroken run of days with no recorded activity.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only and idempotent; the description goes well beyond by disclosing the ambiguity contract (returns `candidates` instead of guessing, and the agent should ask which person), the `not_captured` blind-spot list, and an instruction to repeat those limits when reporting someone as quiet. That is exactly the operational context an agent needs to avoid a wrong answer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and the question it answers, then layered with interpretation and caveats; each paragraph carries distinct value. It is on the long side and repeats the ambiguity handling already stated in the `person` schema, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is not required, yet the description usefully tells the agent which field to lead with (`headline`) and what `candidates` and `not_captured` mean in practice. Combined with annotations, there is nothing an agent needs in order to call and correctly present this tool that is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains `days` (default 56, clamped 7–84), `person` formats and the optional `repository` slug. The description restates the name/login formats and the ambiguity-to-candidates behavior, which duplicates the schema rather than extending it. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — what one person has been doing in a recent window — and enumerates exactly what is returned: PRs opened/merged, reviews given, deploys triggered, plus weekly rollup, busiest days and longest quiet run. The line 'three counts read together rather than one in isolation' distinguishes it from the single-metric siblings like get-created-pull-requests-tool and get-deployments-by-person-tool without needing to open either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggering questions ('is Dave still shipping?', 'what has Sam been working on?') and explicit interpretation guidance — lead with `headline`, don't read a PR count alone. It stops short of naming sibling tools as alternatives, so the routing against get-agent-activity-tool or get-my-insights-tool is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-prospect-worklist-toolGet prospect worklistA
Read-onlyIdempotent
Inspect

Internal Coderbuds staff only. What to do next about the companies and advisers Coderbuds is approaching — the outbound pipeline behind /admin/prospects.

Five lists, in the order they should be worked:

  • answered — questions you parked that a person has since answered. Work these first: each one carries needs_action_reason (what was asked) and answer (what you were told). Do what the answer says, then clear the pair with update-prospect and answer: null, or the row comes back next run.

  • needs_you — rows parked with a question and still waiting on somebody, oldest first. Do not re-ask a question that is already sitting here.

  • replied — somebody answered and has not been answered back.

  • gone_quiet — written to, no reply, past the quiet threshold. Check times_contacted before drafting: one follow-up on a different angle is the rule, so a row already at max_touches is a row to close, not to write to again.

  • never_contacted — researched and untouched, priority first.

Start every session working this pipeline by calling this. It is the only way to know what is already in flight; without it the obvious move is to write to somebody who was written to on Tuesday.

gate is the one number that can say stop. The first run of outbound is a test: at eight prospects written to, two replies means the pitch works and the list can widen, and fewer means the pitch is wrong rather than the volume. When the verdict is fail, say so and stop drafting — the next move is a different message, not thirty more of the same one.

stage_tests is the definition of done for each stage. Do not move a row to a stage whose test it does not pass.

Read the caveats it returns. Nothing in this list is a qualified lead: each row exists because a dated public signal made it worth a look, and a contact name was read off a profile on that date.

NameRequiredDescriptionDefault
limitNoHow many rows per list. Defaults to 10, capped at 50 — this is a worklist for one session, not an export.
quiet_daysNoHow many days of silence after a send before a prospect counts as gone quiet. Defaults to 5.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, but the description adds substantial operational context: internal staff restriction, list semantics, needs_action_reason and answer fields, gate verdict behavior, stage_tests as definition of done, and caveats about lead qualification. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but organized with front-loaded purpose, bulleted lists, and clearly separated guidance sections. Every section carries useful context, though it could be tightened in places without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still fully explains the shape of the response (five lists), key fields to inspect, gate and stage_tests semantics, and caveats. An agent has enough information to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the two parameters, and the schema descriptions already explain limit capping and quiet_days. The description adds no additional parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool returns: the outbound prospect pipeline worklist behind /admin/prospects, broken into five ordered lists. It distinguishes this read/list operation from sibling mutation tools like update-prospect and record-prospect-outreach.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to call this at the start of every outbound session, gives the order in which to work the five lists, specifies when not to re-ask a question, and explains the gate stop condition. Alternatives and follow-up actions are named directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-pull-request-metrics-toolGet pull request metricsA
Read-onlyIdempotent
Inspect

Get pull request activity metrics for the authenticated user's team. Returns PR count, code review count, average quality score, active contributors, and PR size distribution with period-over-period comparison.

NameRequiredDescriptionDefault
periodNoReporting period. Defaults to rolling_30d.rolling_30d

Output Schema

NameRequiredDescription
teamYesTeam name.
periodYesHuman-readable period label.
qualityYesCode quality score metrics with deltas.
activityYesPR and review activity metrics with deltas.
size_distributionYesPR size distribution counts (Tiny, Small, Medium, etc.).

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so safety is covered; the description still adds value by disclosing the return contents and, importantly, that results include period-over-period comparison — a behavioral trait not visible in the annotations or schema. It stops short of noting cost, latency, or empty-data behavior for a team with no PRs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and scope, followed by an efficient enumeration of returned metrics. Slightly redundant to re-list return values when an output schema exists, but the listing is compact and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since an output schema exists, the return-value enumeration is arguably unnecessary, and what is genuinely missing is routing context: which of the many similarly named PR/metric siblings this replaces and what 'team' means for the authenticated user. Adequate to call correctly, but thin for a tool in a dense sibling cluster.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'period' enum already documents all six values and the default, so the description is not required to compensate. The phrase 'period-over-period comparison' hints at how the period argument drives output, but adds no syntax or formatting detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource ('Get pull request activity metrics') and scopes it to the authenticated user's team, then enumerates the aggregates returned. This separates it from the per-PR list siblings (get-merged-pull-requests-tool, get-open-pull-requests-tool) at least implicitly, but it never explicitly contrasts with metric siblings like get-dora-metrics-tool or get-my-insights-tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The aggregate-metrics framing implies when to use it (team-level rollup rather than per-PR listing), but there is no explicit 'use this when X, use get-dora-metrics-tool when Y' guidance despite a crowded metric-tool sibling set. Nothing is stated about prerequisites or when not to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-repo-readiness-toolGet repository readinessA
Read-onlyIdempotent
Inspect

Is this repo ready for agents? Coderbuds Standards opinion #3 judges the repository a coding agent is dropped into — not the change it makes. For each connected repository it returns pass / fail / insufficient_data on: deploy automation configured, deployed recently, PR size discipline (share of merged PRs inside the Coderbuds line standard), review coverage, agent guidance present (CLAUDE.md / AGENTS.md), CI config present, a tests directory present, and whether the fit check is actually wired in. Each failing check comes with a plain-language gap and recommendation, plus a team rollup of how many repos are ready and the most common gaps.

Insufficient-data checks are always EXCLUDED, never counted against a repo — a repo is only "not ready" when a check genuinely fails. When the team has opted out of Coderbuds Standards the opinionated checks report insufficient_data. BitBucket repos report the content checks as insufficient_data (the API path is GitHub-only). Archived repositories are skipped, and dormant ones (nothing merged in the window, flagged dormant) never fail the wiring/deploy-recency checks and are excluded from the rollup's top_gaps — the headline reflects the repos actually shipping. Call this to find what is holding a repo back before pointing an agent at it.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
teamYesTeam name.
rollupYesTeam rollup: repositories_assessed, repositories_ready, dormant_repositories, and top_gaps (the checks failing across the most ACTIVE repositories — dormant repos are excluded so idle test repos cannot bury the gaps that matter).
window_daysYesLook-back window (days) for the deploy and PR checks.
repositoriesYesPer-repository readiness: repository slug, provider, ready flag, dormant flag (nothing merged in the window), each check as pass|fail|insufficient_data, and ranked gaps with recommendations. Active not-ready repos are listed first; archived repos are omitted.
standards_enabledYesWhether Coderbuds Standards is on for this team; when off, the opinionated checks report insufficient_data.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond readOnly/idempotent annotations by disclosing nuanced behavior: insufficient-data checks are excluded and never counted against a repo, Coderbuds opt-out behavior, BitBucket's GitHub-only API limitation, archived repository skipping, and dormant repository handling. These are material behavioral traits an agent could not infer from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and dense, but it is front-loaded with the core question and structured around specific checks, edge cases, and exclusions. Most sentences earn their place, though the length could be trimmed slightly without losing essential meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a complex readiness evaluation with an output schema present, the description covers what is evaluated, how pass/fail/insufficient_data are treated, edge cases like opt-out, BitBucket, archived/dormant repos, and the team rollup. It is complete enough for correct invocation and interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema description coverage, there are no parameter semantics to clarify. The baseline for zero-parameter tools is 4, and nothing in the description suggests otherwise.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: judging repository readiness, not the change itself. It explicitly distinguishes itself from a sibling concept by saying it judges the repository 'a coding agent is dropped into — not the change it makes,' which helps differentiate it from assess-change-fit-tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Directly advises when to call it: 'Call this to find what is holding a repo back before pointing an agent at it.' The framing around repository readiness versus change fit gives clear usage context without needing to infer alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-self-review-findings-toolGet self-review findingsA
Read-only
Inspect

Internal Coderbuds staff only. Read Coderbuds' self-review findings: places where something Coderbuds tells customers (a PR comment line, an AI-detection verdict, a score) is contradicted by data Coderbuds already holds. They are raised by nightly checks and a weekly critic, and a person decides which are worth fixing on /admin/self-review.

Default is accepted — the findings a person has approved for fixing. Each carries a ready-made prompt with the evidence, the files to start from, and the definition of done. Work one at a time: fix it in this repository, open a PR, then call record-self-review-fix. Do not start on a proposed finding; nobody has agreed it is real yet.

NameRequiredDescriptionDefault
statusNoproposed, accepted (default), dismissed or resolved.
finding_idNoRead one finding, whatever its status.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, while the description adds substantial operational context: internal staff only, findings are raised by nightly checks and a weekly critic, a person decides which are worth fixing, and each finding carries a ready-made prompt with evidence and definition of done. This is rich behavioral disclosure beyond annotations and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the key constraint ('Internal Coderbuds staff only') and purpose, then proceeds through default behavior and workflow. It is somewhat long but every paragraph carries useful selection or invocation guidance, with little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with two optional parameters and no output schema, the description covers the important missing context: who can call it, what findings represent, what each result contains, the default status, and the follow-up workflow. An agent has enough information to call it correctly and avoid the main misuse case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3, but the description adds meaningful context for status: accepted is the default and represents findings a person approved for fixing, while proposed findings should not be started because they are not yet agreed to be real. It does not add much for finding_id beyond the schema's 'Read one finding, whatever its status.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Read Coderbuds' self-review findings') and defines exactly what a finding is: a customer-facing statement contradicted by data Coderbuds already holds. It also distinguishes this read tool from the follow-up action tool, record-self-review-fix.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit workflow guidance: default status is accepted, work one finding at a time, fix it in this repository, open a PR, then call record-self-review-fix. It also includes a clear prohibition: do not start on a proposed finding because nobody has agreed it is real yet.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-signup-funnel-toolGet signup funnelA
Read-onlyIdempotent
Inspect

Internal Coderbuds staff only. The whole signup and conversion funnel across every account, matching the /admin/activity/conversion dashboard.

Two funnels joined at "an account exists":

  • Front door — visitors sent to GitHub or BitBucket to authorize, how many came back, how many became an account, and how many were lost on the provider's own authorize screen. Broken down by provider and by campaign source. This is the only stage the account funnel structurally cannot see.

  • Activation — for accounts created in the window: what share reached each milestone (repository, GitHub App, first PR, first review, deploy tracking, deploy observed, Slack, MCP, paid) and the median days to get there; where open trials are stuck, counted by next step; the trial-state split; trials lapsing within a week; and per-account journeys with owner, milestone dates, next step and trial state.

Use it to ask why signups stall, which step loses the most people, whether a change to onboarding moved anything, or who is worth an email this week. Read the caveats it returns: rates over a tiny sample are flagged unreliable, three milestones are reported without a median because nothing records when they happened, and the per-account list is capped while every rate beside it is over the whole cohort.

NameRequiredDescriptionDefault
daysNoHow far back the cohort reaches. 0 means every account since launch. Defaults to 365 — shorter windows are two or three signups and every rate reads 0%, 50% or 100%.
journey_limitNoHow many individual account journeys to list, newest first. Defaults to 50, capped at 200, and 0 omits the list entirely. Bounds only that list: every rate, blocker and median is over the whole cohort regardless.

Output Schema

NameRequiredDescription
windowYesThe window in words.
front_doorYesProvider authorize step: attempts (sent to the provider), returned, registered (became an account), authenticated (came back as an existing user), abandoned (never returned — the authorize screen was declined or closed), failed; return_rate and new_account_rate; rates_are_reliable, false when there are too few attempts to divide by; by_provider; by_source with campaign source, direct traffic named.
window_daysYesThe window applied, in days. 0 means since launch.
signup_conversionYesActivation funnel: cohort_size and cohort_definition; stages, each with count, rate, not_reached and median_days (null where nothing records when the milestone happened — deploy tracking, GitHub App, Slack); blockers, open accounts grouped by next step and split on-trial versus trial-expired; trial_states; expiring_soon, trials lapsing within a week, soonest first; recent_teams, per-account journeys with owner, milestone timestamps, next step, trial state and where an owner went if they now work in another team.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, yet the description still adds substantial context beyond them: unreliable rates over tiny samples are flagged, three milestones lack medians because nothing records their timing, and the per-account list is capped while rates cover the whole cohort. It also ties results to a specific dashboard for verification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Access restriction and the one-line summary are front-loaded, then two labeled bullets organize the funnel stages, and caveats close it. It is long, and the closing caveat paragraph restates some of what the journey_limit schema already says, but the density is warranted by a two-funnel, multi-metric tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still tells the agent what categories of results to expect (milestone shares, medians, blockers, trial splits, per-account journeys) and how to read them. For a complex analytics tool this leaves nothing an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are well documented there, so the baseline is 3. The description still adds rationale — why 365 is the default (shorter windows yield only two or three signups and degenerate rates) and that journey_limit bounds only the list, not the rates — which strengthens the choice of values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get the signup and conversion funnel) and enumerates the two funnel stages, front door and activation, with the exact metrics each covers. No sibling tool covers signup/conversion funnel data, and the description makes that scope boundary unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete question-shaped guidance ('why signups stall', 'which step loses the most people', 'whether a change to onboarding moved anything', 'who is worth an email this week') and an explicit audience restriction ('Internal Coderbuds staff only'). It never names an alternative tool for narrower questions, but no sibling overlaps this scope, so the omission costs little.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-team-context-toolGet team contextA
Read-onlyIdempotent
Inspect

The team's org map: every repository the team ships to, how alive each one is (merged/open PR activity, top contributors, last merge), how each deploys to production, whether each is ready for a coding agent (a compact readiness flag with failing check keys — call get-repo-readiness for the full checks and recommendations), how repos relate (taught links plus shared-contributor signals), and the team's confirmed working conventions. Everything is derived from live shipping data, so it never goes stale like a hand-maintained repo list in an agent rules file.

Pass repository (the repo you are working in) to get a FOCUSED map: that repository's details, the repositories most relevant to it with the reasons they matter, and the rest as names only — the right call at session start in a multi-repo org, instead of pulling the whole atlas. When the map is wrong or incomplete, teach it with link-repositories. For size/review norms, use assess-change-fit.

NameRequiredDescriptionDefault
repositoryNoThe repository you are working in, as owner/name (from `git remote get-url origin`) or a bare repo name. Binds the session to the owning team AND focuses the map: you get this repo, the repos most relevant to it (with reasons), and the rest as names only.
window_daysNoActivity window in days for PR/contributor signals. Defaults to 90, clamped to 7–180.

Output Schema

NameRequiredDescription
teamYesTeam name.
focusNoPresent in focused mode: the repository the map is scoped to.
linksYesTaught repository relationships (from, to, relation, note) — recorded via link-repositories.
conventionsYesConfirmed team/repo working conventions the team has taught its Coderbuds agents. Focused mode returns only team-wide and focus-repo conventions.
window_daysYesActivity window in days.
repositoriesYesActive repositories with activity level, top contributors, production deploy setup, and a compact agent-readiness verdict (ready flag + failing check keys; use get-repo-readiness for detail). Full map: most active first. Focused map: the focus repository first, then the most relevant repositories, each with `relevance.reasons`.
relationshipsYesRepository pairs the same people ship to, with shared-contributor counts and co_changes (how often one author merged into both within 48h — "ships together in practice", which ranks a pair higher). Pairs taught as unrelated are suppressed.
other_repositoriesNoPresent in focused mode: the remaining active repositories, names only.
archived_repositoriesYesDecommissioned repositories, by name — they exist but no work should land there.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover read-only/idempotent, but the description adds that all data is derived from live shipping data and therefore self-refreshing — a meaningful behavioral trait. It also discloses the response-shape change caused by passing `repository` (focused map with names-only for the rest). It does not discuss data latency window or volume limits beyond the schema's window_days.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded: the first sentence defines the payload before any usage advice. Two tight paragraphs, though the "never goes stale like a hand-maintained repo list in an agent rules file" clause is rhetorical padding that could be cut without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations declaring read-only, the description only needs to cover scope, when to call it, and routing to siblings — all of which it does. Nothing an agent needs to call this correctly at session start is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description earns above baseline by framing `repository` as binding the session to the owning team and explaining the focused-vs-full output consequence, which is the real decision behind the parameter. `window_days` is left entirely to the schema, so it does not fully cover both parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource precisely (the team's org map) and enumerates what it contains: repositories shipped to, activity/contributor signals, deploy path, readiness flag, repo relationships, and confirmed conventions. It separates itself from siblings by naming get-repo-readiness, link-repositories, and assess-change-fit with their distinct purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use scenario ("the right call at session start in a multi-repo org") and names the alternative behavior (pulling the whole atlas). It routes the agent away to link-repositories for corrections and assess-change-fit for size/review norms, and to get-repo-readiness for detail beyond the compact flag.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-team-insight-summary-toolGet team insight summaryA
Read-onlyIdempotent
Inspect

Get an aggregate summary of active insights for the authenticated user's team, including counts per tab, unseen count, and personal insight count.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered and the description doesn't need to repeat it. The description does add useful content beyond that, spelling out which aggregates are returned (per-tab counts, unseen count, personal count) and scoping to 'active' insights, though with no output schema present it could have described the shape more concretely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loading the verb and the scope before enumerating the returned counts. Nothing in it is redundant with the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the burden of conveying the return contents, and it does so by listing the three count categories. What's missing is guidance on how this fits alongside the other insight and team-summary tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The implicit scoping to the authenticated user's team is a mild plus, as it tells the agent the tool needs no team identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get an aggregate summary of active insights') and enumerates what the summary contains: per-tab counts, unseen count, and personal insight count. It implies team scope, distinguishing it loosely from get-my-insights-tool, but never explicitly contrasts with the closely related siblings (get-my-insights-tool, get-team-overview-tool).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this instead of get-my-insights-tool or get-team-overview-tool, and no prerequisites or exclusions. Only the phrase 'authenticated user's team' hints at the applicable context, leaving the routing decision entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-team-overview-toolGet team overviewA
Read-onlyIdempotent
Inspect

Get a comprehensive team health overview using the SPACE framework. Returns activity metrics (PRs, deployments, contributors), DORA performance ratings, collaboration metrics (code reviews, participation rate), and efficiency metrics (cycle time, PR size). Use this for a single-call snapshot of team engineering health.

NameRequiredDescriptionDefault
periodNoReporting period. Defaults to rolling_30d.rolling_30d

Output Schema

NameRequiredDescription
teamYesTeam name.
periodYesHuman-readable period label.
activityYesPR, deployment, and contributor counts.
efficiencyYesCycle time and PR size metrics.
performanceYesDORA metrics and overall rating. Lead time and recovery time are null when there was nothing to measure, and the rating is No Data when too few metrics were measured.
collaborationYesCode review and participation metrics.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and idempotent, so safety is covered. The description adds the useful fact that all metrics come back in one call with no filtering semantics beyond period, which tells the agent this is a broad read rather than a drill-down.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first front-loads what is returned grouped by framework dimension, the second states usage. No filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return structure, and it still summarizes the metric families so the agent knows what to expect. Annotations cover the safety profile; only the absence of named alternatives keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single period parameter is fully documented with its enum and default, so the schema does the heavy lifting. The description does not mention period or its accepted values, adding nothing beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (team health overview) and enumerates what it returns: PRs, deployments, contributors, DORA ratings, collaboration and efficiency metrics. The phrase 'single-call snapshot' distinguishes it in spirit from the granular siblings (get-dora-metrics-tool, get-pull-request-metrics-tool), but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this for a single-call snapshot of team engineering health' gives a clear usage context, implying it is the aggregate entry point versus the per-metric tools. There is no explicit when-not-to-use or named alternative, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-undeployed-pull-requests-toolGet undeployed pull requestsA
Read-onlyIdempotent
Inspect

List merged pull requests that have not yet shipped to production, grouped by repository. Returns how long each PR has been waiting and when each repository last deployed — the signal behind deploy-lag and lead-time risk. Use this to spot work that is merged but stuck before deployment. Merged PRs that predate their repository's most recent successful production deploy are assumed shipped (deploys ship the default branch) and reported via assumed_deployed instead of being false-positive "undeployed" entries.

NameRequiredDescriptionDefault
lookback_daysNoHow many days back to consider merged PRs. Defaults to 14, clamped to 1–90.

Output Schema

NameRequiredDescription
teamYesTeam name.
headlineYesOne-line summary to lead with when relaying this result.
repositoriesYesPer-repository breakdown: undeployed count, oldest wait, last deploy, and the PRs.
lookback_daysYesLookback window in days.
assumed_deployedYesMerged PRs without an explicit deployment link that predate their repository's most recent successful deploy — counted as shipped, not undeployed.
total_undeployedYesTotal merged-but-undeployed PRs across the team.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent safety profile, and the description goes well beyond them by disclosing the deployment-correlation rule: PRs merged before the last successful production deploy are treated as shipped and surfaced via `assumed_deployed` rather than as false positives. That is exactly the kind of subtle semantics an agent could otherwise misread as a data bug.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is returned and then the use case, with no filler. Slightly dense in the final sentence, but every clause carries information about output shape or the assumed-deployed rule.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return-value documentation is not required, yet the description still summarizes the payload (wait time per PR, last deploy per repo). With one optional, fully described parameter, nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one optional parameter and schema coverage is 100%, with the 1–90 clamp and default of 14 documented in the schema itself. The description adds no extra meaning about lookback_days, which is acceptable given the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List merged pull requests that have not yet shipped to production') plus the grouping dimension ('grouped by repository'), which immediately separates it from the broader get-merged-pull-requests-tool in the sibling list. An agent can pick between them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this to spot work that is merged but stuck before deployment' gives a clear selection trigger. It does not explicitly name get-merged-pull-requests-tool as the alternative for a full merged-PR listing, so the when-not side is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-weekly-summary-toolGet weekly summaryA
Read-onlyIdempotent
Inspect

Get the latest weekly changelog summary for the authenticated user's team. Includes a TL;DR, executive summary, feature highlights, notable fixes, and team highlights. Use weeks_ago to retrieve older summaries.

NameRequiredDescriptionDefault
weeks_agoNoHow many periods back to retrieve (0 = most recent, max 4).

Output Schema

NameRequiredDescription
teamYesTeam name.
tldrYesBrief one-line summary.
periodYesHuman-readable date range.
notable_fixesNoImportant bug fixes.
team_highlightsNoTeam member accomplishments.
executive_summaryNoDetailed executive summary.
period_comparisonNoComparison with previous period.
feature_highlightsNoNotable features shipped.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds that a summary is scoped to the authenticated user's team and that older periods are retrievable, which is useful context. It does not add anything about freshness/latency or what happens beyond the 4-period limit, and the listed sections largely restate the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the core action and resource, then the content breakdown, then the parameter hint. No filler. The content enumeration is slightly listy but still earns its place by telling the agent what the output covers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single optional parameter read-only tool with an output schema and annotations, the description covers purpose, scope (team, latest period), content, and how to go back in time. The only meaningful gap is that it does not point the agent to the more specific sibling tools when a narrower summary is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter at 100% schema coverage, the schema already documents the default of 0 and the max of 4. The description only repeats the retrieval intent ('Use weeks_ago to retrieve older summaries') without adding format or edge-case detail beyond the schema. Baseline 3 is appropriate when the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the latest weekly changelog summary for the authenticated user's team') and enumerates what the summary contains (TL;DR, executive summary, feature highlights, fixes, team highlights). That makes the deliverable concrete. It does not explicitly differentiate itself from near siblings like get-team-insight-summary-tool or get-team-overview-tool, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use weeks_ago to retrieve older summaries' gives parameter-level usage but no when-to-use versus alternatives guidance. There is no statement of when this summary is preferable to get-team-insight-summary-tool or get-my-insights-tool. Usage is implied by the purpose rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark-insight-seen-toolMark insight seenA
Idempotent
Inspect

Mark a specific insight as seen by the authenticated user. This helps track which insights have been reviewed and reduces noise in future queries.

NameRequiredDescriptionDefault
insight_idYesThe ID of the insight to mark as seen.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false, so the description is not burdened with safety disclosure. It usefully explains the downstream effect (suppresses the insight from future queries for the authenticated user), but omits whether marking is reversible/unmarkable and what happens for an invalid or foreign insight_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and effect, with no filler. Slightly better than minimal, though the payoff sentence is somewhat generic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with annotations covering idempotency and non-destructiveness and no output schema, the definition supplies enough to invoke it correctly. The remaining gap — behavior on invalid or non-owned insight_id — is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so baseline is 3. The description adds no meaning beyond the schema — it does not clarify whether insight_id must belong to the caller or how IDs are obtained (e.g., from get-my-insights-tool).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Mark a specific insight as seen') plus a scope qualifier ('by the authenticated user'), which distinguishes it from read-oriented siblings like get-my-insights-tool. It does not explicitly name or route against those siblings, keeping it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence implies when to use it — after reviewing an insight, to reduce noise in future queries — but never states when not to use it or points to an alternative tool for retrieving or dismissing insights. Usage is inferred rather than prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose-icp-rule-toolPropose ICP ruleAInspect

Internal Coderbuds staff only. Propose a rule about who Coderbuds is for or what an opener may say. It lands on the Who it is for tab of /admin/prospects as a proposal and does not govern anything until a person adopts it — the same division as drafting an opener you cannot send.

Propose when outbound has taught you something the current rules do not say: a reply that contradicts a wedge, a disqualifier that keeps recurring, a signal that keeps producing rows nobody writes to. Do not propose a tidier wording of a rule that already exists, and do not re-propose something in retired — the reason it was retired is a finding, not an oversight.

Write the statement as an instruction the next draft can follow, not an observation. "A job advert naming a coding agent is the signal that reaches a private company" is usable; "AI tooling seems relevant" is not.

evidence is what makes it true — the reply you read, the measurement, the count of rows. Leave it out if you genuinely have none, and it will be shown as ungrounded rather than quietly passing as fact.

NameRequiredDescriptionDefault
kindYesWhich group it belongs to: buyer, wedge, signal, disqualifier, claim or reply.
evidenceNoWhat makes it true — the reply, the measurement, the count. Omit rather than invent.
statementYesThe rule, written as an instruction the next draft can follow.
source_urlNoWhere the evidence can be read back.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only carry destructiveHint=false, so the description does the heavy lifting: it discloses access restriction ('Internal Coderbuds staff only'), the non-binding nature of the write ('does not govern anything until a person adopts it'), where the proposal surfaces, and the consequence of omitting evidence ('shown as ungrounded rather than quietly passing as fact'). That is real behavioral context an agent cannot get from the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with scope and the adoption caveat before the when-to-propose rules, and nearly every sentence carries instruction. It runs long across four blocks, and the evidence explanation partially duplicates the schema's own wording, so it is dense rather than maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does explain the outcome (a proposal on the admin tab, ungrounded flagging when evidence is absent), which is the main thing an agent needs. It never says what the call returns (an id, a link, a confirmation), which is the one remaining gap for a create-style tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds meaning — it explains what makes evidence valid ('the reply you read, the measurement, the count of rows'), the cost of leaving it out, and the required form of statement (an instruction the next draft can follow, not an observation, with a usable vs unusable example). 'kind' and 'source_url' get no treatment in the prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — proposing a rule about who Coderbuds is for or what an opener may say — and pins down the destination (the Who it is for tab of /admin/prospects as a proposal). It implicitly separates itself from writing/adopting rules, but never names the sibling read or standard-setting tools (get-icp-tool, set-change-fit-standard-tool) an agent might otherwise reach for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('propose when outbound has taught you something the current rules do not say: a reply that contradicts a wedge, a disqualifier that keeps recurring, a signal that keeps producing rows nobody writes to') and two explicit exclusions: no tidier rewording of an existing rule, and no re-proposing anything in 'retired'. When/when-not guidance is complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose-self-review-finding-toolPropose self-review findingAInspect

Internal Coderbuds staff only. Propose a self-review finding: something Coderbuds tells customers that the data it holds contradicts, or a fact it holds and leaves out where it matters. It lands on /admin/self-review as proposed and nothing happens until a person accepts it.

Propose when your work in this repository or on production data shows Coderbuds' output is wrong in a way that will recur — a PR comment line, a metric, a verdict. Do not propose one-off bugs you can simply fix, and do not propose a tidier wording of an open finding; call get-self-review-findings first to check.

claim says what Coderbuds says, what the data says, and why it matters. evidence is the numbers behind it — counts, rates, PR references. Leave it out rather than invent it.

NameRequiredDescriptionDefault
claimYesWhat Coderbuds says, what the data says, why it matters.
titleYesOne line naming the fault.
evidenceNoThe numbers or PR references behind it. Omit rather than invent.
severityNoDefault medium.
fix_directionNoWhat you think should change.
suspected_filesNoRepository paths to start from.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the lone destructiveHint=false annotation, it discloses the audience restriction (internal Coderbuds staff only), the landing surface (/admin/self-review), and crucially that the write is staged as 'proposed' with nothing happening until a human accepts it — exactly the state-transition context an agent needs before writing. It does not cover what happens on accept/reject or whether duplicate proposals are rejected server-side.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the audience gate and the definition, then usage rules, then parameter notes — the ordering matches how an agent decides. It is slightly redundant in re-explaining `claim` and `evidence` already covered by the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter mutation with no output schema, the description covers who may call it, what it creates, the pending-state lifecycle, and when not to call it. The remaining gap is what the tool returns and whether it deduplicates against existing findings, which the agent must infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented in structured data, setting the baseline at 3. The description's restatement of `claim` and `evidence` ('leave it out rather than invent it') mirrors the schema text rather than adding new semantics such as expected evidence format or severity selection guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (propose) and defines the resource precisely: a claim Coderbuds makes that its own data contradicts, or a material omission. That definition distinguishes it cleanly from get-self-review-findings-tool (read) and record-self-review-fix-tool (fix tracking) without needing schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit positive trigger ('when your work in this repository or on production data shows Coderbuds' output is wrong in a way that will recur'), two explicit exclusions ('do not propose one-off bugs you can simply fix', 'do not propose a tidier wording of an open finding'), and names the prerequisite read tool to call first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record-change-fit-decision-toolRecord change-fit decisionA
Idempotent
Inspect

Say what you did about a assess-change-fit verdict. Call this right after you act on one — especially when you override it.

decision is one of: proceeded (opened it anyway), split (broke it into smaller PRs), trimmed (cut it down to fit), abandoned (dropped the change). Give a reason whenever you proceed: "the severable piece is dead code the change deletes — splitting would make review harder" is the kind of thing the team should be able to read back.

Overriding is a legitimate move and this is how you make it one. An unrecorded override is indistinguishable from never having got round to it, so the standard can only ever be obeyed, never argued with. Recorded overrides are what let Coderbuds notice a threshold that fires too often on changes that turn out fine, and move it. When that happens this response carries a standard_adjustment — say that once to the person, because the standard they are held to just changed, then let it drop.

Once you have recorded it, stop telling the person about it. The record is the report — it is what the team reads back — and repeating the verdict, the line count and the standard in your summary is the same argument made twice to someone who already agreed. A standard that has to be re-explained on every change it fires on is not being upheld, it is being nagged about, and people turn those off.

Defaults to the team's most recent undecided check, so you can usually call it with just decision and reason. Pass check_id (returned by assess-change-fit) to be explicit.

NameRequiredDescriptionDefault
reasonNoWhy — required in spirit when proceeding. Max 500 characters, visible to the team.
check_idNoThe check this answers (from assess-change-fit). Defaults to your most recent undecided check.
decisionYesWhat you did: proceeded (opened it anyway), split, trimmed, or abandoned.
repositoryNoOptional "owner/name" repository slug, used only to bind the session to the owning team.

Output Schema

NameRequiredDescription
teamYesTeam name.
messageYesHuman-readable confirmation.
verdictYesThe verdict being decided on.
check_idYesThe fit check the decision was recorded against.
decisionYesThe decision recorded.
assessed_atYesWhen that check ran, ISO 8601.
decision_reasonNoThe reason recorded, or null.
standard_adjustmentNoPresent, once, when this override moved the team size standard: adjustment_id, previous_target_lines, target_lines, evidence, message.
proposed_total_changesYesRaw total changed lines that were assessed.
replaced_earlier_decisionYesTrue when this overwrote a decision already on the check.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the idempotent/non-destructive annotations, it discloses default resolution ('most recent undecided check'), that the response may carry a standard_adjustment, and that the record is team-visible and read back. It does not cover failure modes (e.g. no undecided check to bind to) or any permission/auth requirements, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operative guidance is front-loaded and clear, but the closing three paragraphs repeat one point — don't re-explain the standard to the user — using two separate metaphors (argument made twice, being nagged about). That's redundant prose in a description that is already long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description usefully flags the one field an agent must act on (standard_adjustment) and sets post-call social behavior. What's missing is what happens when there is no recent undecided check to default to — an agent calling with only `decision` has no stated failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so 3 is the baseline, but the description earns more: it explains the default resolution of check_id and gives a worked example of the kind of reason text worth writing. The repository parameter's purpose is left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource — recording what you did about an assess-change-fit verdict — and ties it explicitly to the sibling tool assess-change-fit-tool that produces the check. An agent can tell immediately this is the follow-up write, not another assessment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the trigger ('right after you act on one — especially when you override it'), the expected minimal call shape ('usually call it with just decision and reason'), and the condition for being explicit with check_id. It also resolves the ambiguity of what to do when overriding: override is legitimate, just record it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record-prospect-outreach-toolRecord prospect outreachAInspect

Internal Coderbuds staff only. Record that a message was sent to a prospect — after it has actually been sent.

Only call this when you have been told it went out. Recording a send is what moves a prospect from Sourced to Contacted, and a row that says "contacted" with nothing behind it is worse than one that says nothing: the next session skips it.

Sending is not something you can do. If you have written an opener, save it with save-prospect-draft and wait to be told it was sent.

A draft waiting on the row is folded into the record and cleared, so the same opener cannot go out twice.

NameRequiredDescriptionDefault
noteNoThe message body or a summary. Defaults to the draft saved on the row.
channelNoemail, linkedin, slack or call. Defaults to email.email
subjectNoThe subject line or opening line, so the next session can see what was already said.
prospect_idYesThe prospect who was written to.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=false, so the description carries real weight and delivers: the state transition (Sourced to Contacted), the side effect of folding and clearing a pending draft to prevent duplicate sends, and the concrete downstream harm of a false record. It also discloses the access restriction (internal staff only), which nothing in the schema states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the access restriction, then the trigger condition, then the alternative route, then the side effect. The repeated emphasis on 'after it has actually been sent' is deliberate and justified for a state-mutating tool whose failure mode is silent data corruption.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers trigger, side effects, authorization, and the sibling to use instead, which is most of what an agent needs. With no output schema it never says what a successful record returns or what happens if prospect_id is invalid or already Contacted — the only remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description earns an extra point by explaining the cross-field interaction the schema only hints at: the saved draft 'is folded into the record and cleared', which clarifies why note defaults to the draft and what happens to it afterward.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Record that a message was sent to a prospect') plus the critical ordering qualifier ('after it has actually been sent'). It is clearly separable from save-prospect-draft-tool and update-prospect-tool, which are named or implied in the surrounding tool set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Only call this when you have been told it went out') and explicit when-not plus the correct alternative ('Sending is not something you can do... save it with save-prospect-draft'). The routing decision is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record-self-review-fix-toolRecord self-review fixAInspect

Internal Coderbuds staff only. Record the pull request that fixes an accepted self-review finding. Call it once the PR is open. This does not resolve the finding: a nightly check resolves it after two clean runs in production, and a critic or agent finding is resolved by a person — so the record shows the fix working, not just the fix shipping.

NameRequiredDescriptionDefault
noteNoOne line on what changed, for the reviewer.
finding_idYesThe finding you fixed.
pull_request_numberYesThe PR that fixes it.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=false, so the description carries most of the burden and does so well: it discloses the audience restriction (internal staff), the fact that this is a record-keeping write rather than a state-resolving action, and the actual resolution path (nightly check after two clean production runs, or a human for critic/agent findings). It omits idempotency and return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the access restriction, then the action, then the critical caveat. Every sentence carries information, though the final clause about 'the record shows the fix working, not just the fix shipping' is slightly rhetorical and could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only a weak annotation, the description supplies the lifecycle context an agent needs: when to call, who may call, and that success does not mean the finding is closed. It lacks detail on what the record returns or whether repeat calls are safe, which is a minor gap for a 3-param mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic constraint by specifying the finding must be 'accepted' — narrowing which finding_id values are valid — and by tying pull_request_number to a PR that fixes it and is already open.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: record the pull request that fixes an accepted self-review finding. This clearly distinguishes it from the read/list siblings (get-self-review-findings-tool) and the creation sibling (propose-self-review-finding-tool). An agent knows exactly what the operation writes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition ('Call it once the PR is open') and a scope gate ('Internal Coderbuds staff only'), plus the important negative: this does not resolve the finding. It does not name alternative tools for resolution, but the when-to-use context is concrete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record-team-outreach-toolRecord team outreachAInspect

Internal Coderbuds staff only. Record that a person reached out by hand to a signed-up account (a trial or customer team) — after it has actually been sent.

This is what fills the outreach field on each account in get-signup-funnel, and what the admin trials page shows as "contacted". Without it, an account that was emailed last week reads as never contacted.

Only call this when you have been told it went out. Sending is not something this tool does. Use the team id from get-signup-funnel. Pass sent_at when recording something sent earlier, so the row shows how long the silence has really been.

NameRequiredDescriptionDefault
noteNoThe message body or a summary.
channelNoemail, slack or call. Defaults to email.email
sent_atNoWhen it was sent, if not just now. A date or date-time in UTC; must not be in the future.
subjectNoThe subject line or opening line, so the next session can see what was already said.
team_idYesThe account that was written to — the `id` from get-signup-funnel.
recipientNoWho it went to, e.g. an email address.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only `destructiveHint: false` provided, the description carries most of the burden and does so well: it discloses the access restriction (internal staff only), that the operation is a record of a past event rather than an action, and the downstream effects (populates the `outreach` field in `get-signup-funnel` and shows as 'contacted' on the admin trials page). It doesn't cover idempotency or what happens on duplicate entry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The staff-only restriction and the core action are front-loaded, and the paragraph break separates purpose from usage rules. A few sentences are slightly redundant ('Only call this when you have been told it went out' overlaps with 'Sending is not something this tool does'), but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation with no output schema and minimal annotations, the description supplies access restrictions, the when-to-record rule, the downstream visibility, and the ID source. An agent has enough to call it correctly; only duplicate-handling behavior is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline of 3 applies, but the description adds real meaning: it tells the agent where to source `team_id`, and explains why `sent_at` matters ('so the row shows how long the silence has really been'), which is motivation the schema lacks. The remaining parameters are left entirely to their schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Record') on a well-defined resource ('a person reached out by hand to a signed-up account (a trial or customer team)'), and it explicitly clarifies that sending is out of scope. The parenthetical defining the target as a trial/customer team implicitly separates it from the prospect-side siblings, but it never names `record-prospect-outreach-tool`, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Only call this when you have been told it went out' is an explicit call condition, and 'Sending is not something this tool does' is an explicit exclusion. It also routes the agent to `get-signup-funnel` for the team `id`, and instructs passing `sent_at` for backdated records. It stops short of naming the closest alternative tool for prospect outreach.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report-ai-usage-toolReport AI usageA
Idempotent
Inspect

Report that you — the coding agent — wrote or helped write this change, and how much of it. Coderbuds otherwise has to infer AI authorship from the shape of the diff, and a heuristic that decides who counts as an AI adopter is a heuristic that decides where a CTO spends budget. You already know the answer. Say it, and the team's AI numbers stop being a guess.

Call this once per change, after the work is done — ideally with pull_request_number once the PR exists, or branch before it does. Re-reporting the same change refreshes the record rather than double-counting it, so it is safe to call again as the work evolves.

Set authorship honestly: agent_authored (you wrote essentially all of it), agent_assisted (you wrote a meaningful part, a person wrote the rest), or human_authored (a person wrote it and you only looked things up or reviewed).

Then say what you saw a person do before the pull request opened, in review_evidence. Do not judge whether the change was "reviewed" — list only what happened in front of you:

  • approved_each_edit — each edit was shown to a person as a diff and approved before it applied (you ran in a mode that asks before editing, not one that bypasses permissions)

  • diff_comments — a person left comments on the diff before it opened (in Conductor, the GetDiffComments tool returns them)

  • edited_by_person — a person changed the code themselves

  • replied_after_changes — a person replied after the change was finished and before the pull request opened, so they saw at least your summary of it

Pass an empty list when none of these happened. You cannot see a person reading a diff in their editor, so an empty list means "no evidence", and Coderbuds words it that way.

Reports are team-visible and attributed to you. The response tells you whether Coderbuds' own detector agreed with your report; where it did not, yours is the one that counts.

NameRequiredDescriptionDefault
toolYesThe coding agent that did the work, as a stable slug — e.g. claude-code, cursor, copilot, codex, amp. Name the product the person worked through, not the model under it: an agent running inside Amp reports amp even when the model is Claude, and puts the model in `model`. Free text is normalised, so "Claude Code" and "claude-code" are the same tool.
modelNoOptional model that did the work, e.g. claude-opus-5. Separate from `tool`: Amp, Cursor and others run several models.
notesNoOptional short context, e.g. "agent wrote the migration, human rewrote the query". Max 500 characters.
branchNoThe source branch, for when you report before the pull request exists. Matched to the pull request when it appears.
authorshipYesHow much of the change you wrote: agent_authored (essentially all), agent_assisted (a meaningful part), or human_authored (a person wrote it, you only assisted).
repositoryYesThe repository the change is in, as owner/name or a bare repo name. Also binds the session to the owning team.
human_reviewedNoDeprecated — send review_evidence instead, which this is derived from. Used only when review_evidence is absent.
review_evidenceNoWhat you saw a person do before the pull request opened: approved_each_edit, diff_comments, edited_by_person, replied_after_changes. An empty list when none of these happened.
pull_request_numberNoThe pull request this change became, if it exists yet. The strongest anchor — it lets Coderbuds compare your report against what its detector inferred from the same diff.

Output Schema

NameRequiredDescription
teamYesTeam name.
toolYesNormalised tool slug recorded.
modelNoModel recorded, if given.
branchNoBranch the report is anchored to, if given.
createdYesFalse when this refreshed an existing report for the same change.
messageYesHuman-readable confirmation.
authorshipYesAuthorship level recorded.
repositoryYesRepository the report was recorded against.
review_levelYesWhat the evidence adds up to: inspected, saw_change, unseen, or unknown.
human_reviewedYesWhether the evidence shows a person looked at the code before it opened.
inferred_scoreNoWhat Coderbuds' own detector scored this pull request, or null when there is nothing to compare yet.
detector_agreedNoWhether the inferred score agreed with your report. Null when there is nothing to compare.
review_evidenceNoThe evidence recorded, or null when none was sent.
pull_request_numberNoPull request number the report is anchored to, if given.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover idempotentHint and destructiveHint; the description adds substantive behavior beyond them: reports are team-visible and attributed, re-reports refresh the existing record, and the response indicates whether Coderbuds' detector agreed with the report. It also clarifies that an empty review_evidence list is interpreted as 'no evidence' rather than a negative judgment.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core instruction (call once per change, use PR number or branch) is front-loaded and the enum guidance is well structured as a list. The opening paragraph spends several sentences on motivation and budget rhetoric, which is persuasive but not strictly needed for correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with an output schema, the description covers when to call, how to pick authorship, how to enumerate review evidence, and how the response is used. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond it: it explains each authorship value operationally, defines what each review_evidence enum physically observed ('approved_each_edit' requires a permission-asking mode), and reinforces the empty-list convention. It stops short of explaining 'repository' binding or the deprecated 'human_reviewed' fallback beyond what the schema says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: report that the agent wrote or helped write a change, and how much. It is unmistakably a write/report tool, contrasting cleanly with read-only siblings like get-ai-adoption-tool or get-agent-activity-tool, and the first sentence alone lets an agent place it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit timing ('once per change, after the work is done'), explicit anchor alternatives ('pull_request_number' once the PR exists, 'branch' before it does), and states that re-reporting refreshes rather than double-counts, so re-invocation is sanctioned. It also tells the agent to set authorship honestly and enumerates the criteria for each choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request-pull-request-review-toolRequest pull request reviewAInspect

Ask the team for a review on an open pull request. Coderbuds posts the request to the team's Slack channel — picking the next reviewer from the team's rotation, or the one you name — and leaves a comment on the pull request itself so the ask is visible to anyone reading it. Coderbuds speaks in its own voice; it does not comment as you. Use this after opening a pull request, or when a PR has been sitting unreviewed. Identify the repository by name (e.g. "saas") or full name (e.g. "patchstack/saas").

NameRequiredDescriptionDefault
noteNoOptional one-line context for the reviewer, e.g. "touches billing — needs a careful look at the proration maths".
reviewerNoOptional teammate to ask, by full name, email, or GitHub username. Leave this out to use the team's review rotation.
repositoryYesThe repository the pull request lives in, by name (e.g. "saas") or full name (e.g. "patchstack/saas").
pull_request_numberYesThe pull request number, e.g. 3258.

Output Schema

NameRequiredDescription
messageYesA human-readable summary of the outcome.
successYesWhether the review request went out.
reviewerNoThe teammate who was asked, if one was assigned.
repositoryNoThe repository the pull request belongs to.
slack_notifiedYesWhether the request was posted to the team Slack channel.
pull_request_urlNoLink to the pull request.
pull_request_numberYesThe pull request the review was requested on.
commented_on_pull_requestYesWhether Coderbuds commented on the pull request.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only openWorldHint/destructiveHint declared, the description carries the behavioral burden and does so well: it discloses the two side effects (Slack message, PR comment), the reviewer-selection logic (rotation vs. named), and the attribution quirk that Coderbuds comments in its own voice rather than as the user — the kind of detail an agent cannot infer elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, and each sentence contributes either mechanism, attribution, or usage timing. Slightly padded by restating the repository naming convention already in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need not be explained, and the description covers mechanism, side effects, selection logic, attribution, and timing for a 4-parameter tool. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description earns a bump by explaining the reviewer/rotation fallback behavior and the repository name-vs-full-name forms in prose. It adds meaning beyond the schema but repeats the repository format example verbatim.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (request a review on an open pull request) plus the exact mechanism: a Slack post to the team channel and a comment on the PR. No sibling tool does anything comparable, so an agent can route to it unambiguously.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this after opening a pull request, or when a PR has been sitting unreviewed" gives explicit triggering conditions. It doesn't name alternatives, but no sibling overlaps in function, so the omission is minor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save-prospect-draft-toolSave prospect draftAInspect

Internal Coderbuds staff only. Save an opener against a prospect for Elliot to read and send, and flag the row as waiting on him.

You cannot send anything. Every message goes out under Elliot's name, from his own inbox or LinkedIn account, so the division is: you research, prioritise and write; he sends. This is where the writing goes.

Write the message itself, not a description of one — no placeholders, no "[insert metric]". Ground every claim in what the worklist gave you and say plainly what is not verified. If you cannot write an honest opener because something is unconfirmed, do not invent it: use update-prospect to park the row with the question instead.

Saving a draft flags the row, because a draft nobody is told about is a draft nobody sends. Recording the send later clears both.

NameRequiredDescriptionDefault
draftYesThe message as it should go out, signed off and ready to paste. Not a summary of one.
prospect_idYesThe prospect this opener is for, from get-prospect-worklist.
needs_action_reasonNoWhat you are asking the person to do, in their words. Defaults to "Draft ready to read and send".

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=false, so the description carries the real burden and does: it discloses the side effect (the row is flagged as waiting on Elliot), the invariant that sends clear both flags, and the access restriction (Internal Coderbuds staff only). It also states a hard capability limit — nothing can be sent from here — that no annotation conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The two most decision-critical facts — staff-only access and the cannot-send division of labour — are front-loaded, and each paragraph addresses a distinct concern (permission, division of labour, content quality, side effects). Slightly long, but there is little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with no output schema, the description covers everything an agent needs: who may call it, what it writes, what state it sets, what clears that state, and how to handle the failure case (park via update-prospect). Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes beyond by adding substantive quality semantics for `draft` — write the message itself, no placeholders, ground every claim in the worklist, state what is unverified. `needs_action_reason` is left entirely to the schema, which is acceptable given it is fully documented there.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — save an opener draft against a prospect — and positions it precisely in the workflow (the writing step, as opposed to the sending step). This clearly separates it from record-prospect-outreach-tool (recording an actual send) and update-prospect-tool (parking a row).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use, an explicit when-not-to (if you can't write an honest opener, use `update-prospect` to park the row with the question), and an explicit boundary (you cannot send; Elliot sends). The routing decision to the sibling is spelled out rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-agent-posture-toolSet agent postureA
DestructiveIdempotent
Inspect

Set how loudly the Coderbuds agent speaks to this team — the single control over whether it acts at all. "off" = silent, Coderbuds still measures but never posts. "preview" = record recommendations in Coderbuds without performing or sending them. "quiet" = weekly pulse only, no nudges. "public" = acts in the open, nudges go to the team channel and never to DMs. "direct" = may message engineers directly. There are no per-capability settings: an individual act that needs a human still asks for approval in Slack regardless of posture. Requires team admin permissions; use get-agent-activity-tool to see the current posture and activity.

NameRequiredDescriptionDefault
postureYesoff = silent; preview = recommendations in Coderbuds only; quiet = weekly pulse only; public = nudges in the team channel; direct = may DM engineers.

Output Schema

NameRequiredDescription
teamYesTeam name.
messageYesHuman-readable confirmation.
postureYesThe posture now in effect.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond idempotentHint/destructiveHint by disclosing real consequences: 'off' still measures but never posts, 'preview' records without sending, nudges never DM under 'public', and human-approval in Slack is required regardless of posture. It also clarifies there are no per-capability settings, which prevents an agent from assuming granular override behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose before the enum walkthrough, and every sentence carries decision-relevant information. It is somewhat long because the enum meanings appear in both the description and the schema, which is mild redundancy rather than waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter mutation tool with an output schema available, the description covers the safety profile, the permission requirement, the approval fallback, and the read sibling. There is nothing an agent needs in order to call it correctly that is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the enum values are already documented in the schema, so the baseline is 3. The description earns extra credit by adding semantics the schema lacks — notably that 'off' still measures and 'preview' records recommendations without sending — but it largely restates the enum list rather than adding format or edge-case behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Set how loudly the Coderbuds agent speaks to this team') and immediately frames it as 'the single control over whether it acts at all,' which delineates it from every read-only sibling. An agent can distinguish it from get-agent-activity-tool or the many get-* tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It enumerates every posture value with its operational meaning, states the prerequisite (team admin permissions), and explicitly routes to get-agent-activity-tool to inspect current posture and activity. The only mild gap is the absence of an explicit 'when not to use' clause, but the read-vs-write split with the named sibling covers the practical alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-change-fit-standard-toolSet change-fit standardA
DestructiveIdempotent
Inspect

Set this team's pull request size standard, when a person on the team says the number is wrong. Pass target_lines for their number — tighter or looser — or omit it to go back to Coderbuds' default.

You usually will not need this to make room. Coderbuds loosens the standard on its own: when the team's recorded overrides show a caution threshold firing on changes that keep turning out fine, it moves the line and reports the move in the record-change-fit-decision response. Recording overrides is the better path, because it moves the line on evidence the team can read back. Use this when someone already knows the number and does not want to wait for the record to prove it.

Only call it when a person has actually asked, and pass the number they said. A standard is how a team works; it is not yours to set or to talk them out of. Setting it pins the number: Coderbuds stops adjusting this team's standard from then on, including the automatic loosening.

NameRequiredDescriptionDefault
repositoryNoOptional "owner/name" repository slug, used only to bind the session to the owning team.
target_linesNoThe number the team asked for, in reviewable lines. Omit it to revert to Coderbuds' default.

Output Schema

NameRequiredDescription
teamYesTeam name.
pinnedYesTrue once the team owns the number and Coderbuds will not adjust it.
sourceYesWho set it: always "team" from this tool.
messageYesHuman-readable confirmation.
target_linesYesThe standard now in force for this team.
previous_target_linesYesThe standard before this change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With `destructiveHint: true` and `idempotentHint: true` already declared, the description adds the crucial consequence that annotations cannot: setting the standard pins the number and disables Coderbuds' automatic loosening from then on. It does not clarify whether reverting to the default (omitting `target_lines`) also releases the pin, which is the one behavioral question an agent would still have.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its argument, then usage guidance, then the alternative path — a sensible ordering. It runs long and includes some normative framing ('it is not yours to set or to talk them out of') that is more policy than specification, though it does steer agent behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with an output schema and annotations, the description covers purpose, preconditions, consequences, and the alternative workflow. The remaining gaps — the repository binding role and whether reverting to default unpins the standard — are narrow but real for a tool that permanently alters team policy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented, including 'Omit it to revert to Coderbuds' default.' The description's 'tighter or looser' framing and 'pass the number they said' add minor semantic nuance but largely restate the schema, and the `repository` parameter is never mentioned in the description at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: setting this team's pull request size standard, including the value shape (`target_lines`) and the omit-to-revert behavior. It is clearly distinct from the sibling `record-change-fit-decision-tool`, which it explicitly names as the preferred alternative path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when someone already knows the number and does not want to wait'), when-not-to-use ('You usually will not need this to make room'), the preferred alternative (recording overrides via record-change-fit-decision), and a hard precondition ('Only call it when a person has actually asked'). This is about as complete a routing instruction as a description can carry.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-review-policy-toolSet review policyA
DestructiveIdempotent
Inspect

Choose how much review this team's pull requests need. Once a policy is on, Coderbuds decides a tier for every pull request it sees opened or pushed to — no review, an AI review, one review, or a careful review — and says which, and why, on its pull request comment. Nothing is enforced on GitHub.

policy is one of:

  • skip_trivial — docs-only and tests-only changes skip review; every other change gets one.

  • risk_based — trivial changes skip review, small code changes need only an AI review, and changes to sensitive_paths or over the team's size standard need a careful review.

  • off — no policy; Coderbuds says nothing about review.

Under every policy, a person always reads changes to CI, CODEOWNERS, dependency manifests and lockfiles, built bundles and agent instructions, a newcomer's first change, and an agent's change nobody has read.

sensitive_paths are folders (app/Billing/) or patterns where * reaches into subfolders (database/migrations/*). Omit them to keep the team's current list; pass an empty list to clear it.

Only call this when a person on the team has asked for it, and set what they said. Only the team owner can change it.

NameRequiredDescriptionDefault
policyYesThe policy the team asked for, or off.
repositoryNoOptional "owner/name" repository slug, used only to bind the session to the owning team.
sensitive_pathsNoPaths that need a careful review under risk_based. Omit to keep the current list; an empty list clears it.

Output Schema

NameRequiredDescription
teamYesTeam name.
policyNoThe policy now in force, or null when it is off.
messageYesHuman-readable confirmation.
previous_policyNoThe policy before this call, or null when there was none.
sensitive_pathsYesThe sensitive paths now in force.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotent and destructive, and the description adds context the annotations cannot: nothing is enforced on GitHub, the agent always reviews a fixed set of high-risk change categories regardless of policy, and omitting vs passing an empty sensitive_paths list keeps vs clears existing config. That last point directly accounts for the destructive hint and is not a contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and constraints are front-loaded and the enum definitions are cleanly bulleted, so it is easy to scan. It is on the long side, with the always-review paragraph arguably more than the agent strictly needs to invoke the tool, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters, an output schema, and destructive/idempotent annotations, the description covers everything an agent needs: what the policy causes, who may change it, how to preserve vs reset sensitive paths, and the enforcement boundary. No meaningful gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description goes well beyond it by defining the runtime meaning of each policy enum value and by explaining sensitive_paths syntax (folder form, `*` wildcard reaching into subfolders, omit-to-keep vs empty-to-clear). The schema only says 'The policy the team asked for, or off.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource — choosing how much review the team's PRs need — and the body spells out the resulting behavior (Coderbuds assigns a tier and comments why). It does not explicitly contrast itself with adjacent configuration siblings like set-change-fit-standard-tool or set-agent-posture-tool, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states clearly when to call ('Only call this when a person on the team has asked for it, and set what they said') and includes a hard prerequisite ('Only the team owner can change it'). The per-policy breakdown of skip_trivial vs risk_based vs off effectively tells the agent which value to select under which conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set-up-repository-toolSet up repositoryA
Read-onlyIdempotent
Inspect

Call when the person asks to set up, connect or wire this repository to Coderbuds. Returns the steps to carry out: write the two moments (check before opening a pull request, report after) into the repository's agent guidance, commit the Coderbuds MCP connection so the rest of the team gets it, open both as one pull request, then call get-team-context to prove it works. Pass repository so the committed connection is pinned to its team, and via_plugin when the Coderbuds plugin for Claude Code connected you.

NameRequiredDescriptionDefault
repositoryNoThe repository being set up, as owner/name — read it from `git remote get-url origin`.
via_pluginNoTrue when you are connected through the Coderbuds plugin for Claude Code. The steps then commit the plugin for the team instead of a second copy of the server.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The name implies a mutation, and the description resolves that ambiguity by saying it 'Returns the steps to carry out' — consistent with readOnlyHint=true and idempotentHint=true. It also spells out what the caller will end up doing (writing guidance, committing the MCP connection, opening one PR), which is useful context beyond the annotations. It does not describe the shape or ordering of the returned steps in any detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition, then the action sequence, then parameter guidance — a sensible order with no filler. The step enumeration is slightly dense but each clause carries information the agent needs to sequence the work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of explaining the return value — and it does, describing the steps returned and the terminal verification call. It also states the expected end state (one pull request), which is what an agent needs to call this correctly and act on the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters and the baseline would be 3. The description adds rationale rather than syntax: `repository` exists 'so the committed connection is pinned to its team,' and `via_plugin` changes what gets committed (plugin vs. a second copy of the server). That is genuine meaning beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (set up / connect / wire) and a specific resource (this repository to Coderbuds), and clarifies that the tool returns instructions rather than performing the setup itself. That framing separates it cleanly from siblings like deploy-repository-tool and link-repositories-tool, which act rather than prescribe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition: 'Call when the person asks to set up, connect or wire this repository to Coderbuds.' It also names the required follow-up call (get-team-context) to verify success. It stops short of saying when not to use it or explicitly pointing to deploy-repository-tool/link-repositories-tool as alternatives for adjacent requests.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-prospect-toolUpdate prospectA
Destructive
Inspect

Internal Coderbuds staff only. Update one prospect: what research found, what stage it is at, what happens next, and whether a person is needed.

needs_action_reason is how you hand a row back without stopping. Several rows in any pass will have a contact who has changed job, a headcount nobody can verify, or a question only Elliot can answer. Park those with the question written in his words, then carry on to the next row.

If the question ends in a choice, send the choices as answer_options. Most of them do — "write to the CEO, wait for the new lead, or skip?" is three options you have already worked out. Passed as options they become buttons; left in the prose they are a blank textarea, and a question that needs composing is a question that waits a day.

When a question comes back answered, the row appears in the answered list with both what you asked and what you were told. Act on it, then pass answer: null to clear the pair — that is what takes it off the queue, and a row nobody clears is read again every run.

Stages: sourced, contacted, replied, trialling, won, closed. Two rules matter — never set contacted yourself (recording a send does that, so the stage always has something behind it), and closed needs a closed_reason a person can read back.

Corrections to research are welcome and expected: a confirmed role, a corrected headcount, a better signal. Say what you verified in signal, and leave qualification_needed describing what is still unconfirmed rather than deleting it.

When you re-check the signal, set checked_on to today. The ICP requires the trigger to be verified on the day the message is written, not the day the row was sourced, and the queue marks a row whose signal was not checked today so that nobody sends on a job advert that came down last week.

NameRequiredDescriptionDefault
stageNosourced, replied, trialling, won or closed. Not contacted — record the send instead.
answerNoPass null once you have acted on an answered question, to take the row off the queue. You should not be writing answers yourself.
signalNoWhat makes this company worth approaching, as you now understand it.
checked_onNoThe date you re-checked the signal, as YYYY-MM-DD. Set it to today whenever you have actually looked — an unchecked row is flagged before anybody sends to it.
contact_urlNoProfile URL for the contact.
next_actionNoThe next concrete thing to do about this row.
prospect_idYesThe prospect to update.
contact_nameNoA confirmed contact name.
contact_roleNoTheir role, as you verified it.
closed_reasonNoRequired when closing. Why this is not going anywhere.
answer_optionsNoThe answers that question is offering, up to four, each a complete instruction you could act on as written ("Write to Anh-Tho now", "Close it as unverifiable"). Send these whenever your question ends in a choice — they become buttons, and a question answered with a click is answered the same day. Free text stays available, so never narrow a genuinely open question into options to make it clickable.
needs_action_reasonNoThe question a person has to answer, in their words.
qualification_neededNoWhat is still unconfirmed. Leave it describing the gap rather than emptying it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

`destructiveHint: true` already tells the agent this overwrites state, and the description adds real side-effect context the annotation cannot express: clearing `answer` removes the row from the queue, and unverified signals get flagged before sending. What it omits is what happens to fields not passed (overwrite vs. merge) and any permission model beyond 'internal staff only' — significant for a 13-parameter mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the access constraint and the one-line purpose, then segmented by bold rule headers so an agent can scan to the relevant rule. It runs long and re-states some points already carried in the schema descriptions (`checked_on`, `answer`, `answer_options`), which costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter destructive update with no output schema, the description covers the domain rules an agent cannot infer: the stage vocabulary and its exceptions, the correction-not-deletion norm for `qualification_needed`, and the appearance of a `answered` list on return. It leaves the full response shape and merge-vs-replace behavior unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description earns above it by giving cross-parameter semantics the schema states only piecemeal: `answer_options` become buttons while prose stays a textarea, and `answer: null` is the pair-clearing act rather than a value. It stops short of explaining interaction between `stage`, `closed_reason`, and `qualification_needed`.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Update one prospect') and enumerates the four kinds of change it carries: research findings, stage, next step, and whether a person is needed. It implicitly separates itself from the outreach-recording path ('never set `contacted` yourself — recording a send does that'), though it never names the sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Unusually explicit about when and how to use it: park blocked rows via `needs_action_reason` and carry on, pass options when the question ends in a choice, pass `answer: null` only after acting, never self-set `contacted`, and `closed` requires `closed_reason`. Each rule pairs a condition with the action that satisfies it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Addedset-review-policy-tool
  2. 1 tool update
    • Changedset-up-repository-tool1 field changed
      • addedInput schema / properties / via_plugin
        Added value: +{
        +  "default": false,
        +  "description": "True when you are connected through the Coderbuds plugin for Claude Code. The steps then commit the plugin for the team instead of a second copy of the server.",
        +  "type": "boolean"
        +}
  3. 1 tool update
    • Addedrecord-team-outreach-tool
  4. 1 tool update
    • Changedreport-ai-usage-tool2 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"Optional model that did the work, e.g. claude-opus-5."New value: +"Optional model that did the work, e.g. claude-opus-5. Separate from `tool`: Amp, Cursor and others run several models."
      • changedInput schema / properties / tool / description
        Previous value: -"The coding agent that did the work, as a stable slug — e.g. claude-code, cursor, copilot, codex. Free text is normalised, so \"Claude Code\" and \"claude-code\" are the same tool."New value: +"The coding agent that did the work, as a stable slug — e.g. claude-code, cursor, copilot, codex, amp. Name the product the person worked through, not the model under it: an agent running inside Amp reports amp even when the model is Claude, and puts the model in `model`. Free text is normalised, so \"Claude Code\" and \"claude-code\" are the same tool."
  5. 1 tool update
    • Changedfind-delivery-bottleneck-tool1 field changed
      • changedOutput schema / properties / stages / description
        Previous value: -"All six stages — waiting_to_start, writing_the_change, waiting_for_review, in_review, waiting_to_deploy, deploy_running — each with median/p75 hours, sample size, the count it was scored against (`analysed`, which for the two deploy stages counts only repositories that deploy), coverage, whether it is eligible to be ranked, whether it competes for the bottleneck at all (`ranked`, false for waiting_to_start), what would have to be connected to see it (`unlock`), and a note saying why it cannot or will not be ranked."New value: +"All six stages — waiting_to_start, writing_the_change, waiting_for_review, in_review, waiting_to_deploy, deploy_running — each with median/p75 hours, sample size, the count it was scored against (`analysed`, which for the two deploy stages counts only repositories that deploy), coverage, whether it is eligible to be ranked, whether it competes for the bottleneck at all (`ranked`, false for waiting_to_start), how many changes merged with no review from anyone but their author and so never entered the stage (`skipped`, review stages only — a skipped change did something, it is not missing data), what would have to be connected to see it (`unlock`), and a note saying why it cannot or will not be ranked."
  6. 2 tool updates
    • Changedget-dora-metrics-tool1 field changed
      • changedOutput schema / properties / overall_performance / description
        Previous value: -"Overall DORA performance rating (Elite/High/Medium/Low)."New value: +"Overall DORA performance rating (Elite/High/Medium/Low, or No Data when fewer than three metrics were measured)."
    • Changedget-team-overview-tool1 field changed
      • changedOutput schema / properties / performance / description
        Previous value: -"DORA metrics and overall rating."New value: +"DORA metrics and overall rating. Lead time and recovery time are null when there was nothing to measure, and the rating is No Data when too few metrics were measured."
  7. 1 tool update
    • Addedset-up-repository-tool
  8. 1 tool update
    • Changedassess-change-fit-tool4 fields changed
      • changedInput schema / properties / additions / description
        Previous value: -"Lines added in the proposed change (e.g. from `git diff --shortstat`)."New value: +"Lines added in the proposed change (e.g. from `git diff --shortstat`). Required unless numstat is given; worked out from the numstat when omitted."
      • changedInput schema / properties / deletions / description
        Previous value: -"Lines deleted in the proposed change."New value: +"Lines deleted in the proposed change. Required unless numstat is given; worked out from the numstat when omitted."
      • changedInput schema / properties / numstat / description
        Previous value: -"Strongly recommended: raw `git diff --numstat <base>...` output (tab-separated \"added deleted path\" rows, `-` for binary). Coderbuds classifies the paths itself and discounts tests, docs, generated files and binary assets, so the verdict judges the code a reviewer must read. Supersedes test_lines/test_files when given."New value: +"Strongly recommended: raw `git diff --numstat <base>...` output (tab-separated \"added deleted path\" rows, `-` for binary). Coderbuds counts the lines and files from it and classifies the paths itself, discounting tests, docs, generated files and binary assets, so the verdict judges the code a reviewer must read. Supersedes test_lines/test_files when given."
      • removedInput schema / required
        Removed value: -[
        -  "additions",
        -  "deletions"
        -]
  9. 1 tool update
    • Changedreport-ai-usage-tool6 fields changed
      • changedInput schema / properties / human_reviewed / description
        Previous value: -"Whether a person actually read the diff before it went up. Defaults to false — report it honestly rather than flatteringly."New value: +"Deprecated — send review_evidence instead, which this is derived from. Used only when review_evidence is absent."
      • addedInput schema / properties / review_evidence
        Added value: +{
        +  "description": "What you saw a person do before the pull request opened: approved_each_edit, diff_comments, edited_by_person, replied_after_changes. An empty list when none of these happened.",
        +  "items": {
        +    "enum": [
        +      "approved_each_edit",
        +      "diff_comments",
        +      "edited_by_person",
        +      "replied_after_changes"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / human_reviewed / description
        Previous value: -"Whether a person read the diff."New value: +"Whether the evidence shows a person looked at the code before it opened."
      • addedOutput schema / properties / review_evidence
        Added value: +{
        +  "description": "The evidence recorded, or null when none was sent.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / review_level
        Added value: +{
        +  "description": "What the evidence adds up to: inspected, saw_change, unseen, or unknown.",
        +  "enum": [
        +    "inspected",
        +    "saw_change",
        +    "unseen",
        +    "unknown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "team",
        -  "repository",
        -  "tool",
        -  "authorship",
        -  "human_reviewed",
        -  "created",
        -  "message"
        -]New value: +[
        +  "team",
        +  "repository",
        +  "tool",
        +  "authorship",
        +  "human_reviewed",
        +  "review_level",
        +  "created",
        +  "message"
        +]
  10. 3 tool updates
    • Addedget-self-review-findings-tool
    • Addedpropose-self-review-finding-tool
    • Addedrecord-self-review-fix-tool
  11. 2 tool updates
    • Changedget-agent-activity-tool1 field changed
      • changedOutput schema / properties / posture / description
        Previous value: -"How loudly the agent speaks: off, quiet, public or direct. The single control over whether it acts."New value: +"How loudly the agent speaks: off, preview, quiet, public or direct. The single control over whether it acts."
    • Changedset-agent-posture-tool2 fields changed
      • changedInput schema / properties / posture / description
        Previous value: -"off = silent; quiet = weekly pulse only; public = nudges in the team channel; direct = may DM engineers."New value: +"off = silent; preview = recommendations in Coderbuds only; quiet = weekly pulse only; public = nudges in the team channel; direct = may DM engineers."
      • changedInput schema / properties / posture / enum
        Previous value: -[
        -  "off",
        -  "quiet",
        -  "public",
        -  "direct"
        -]New value: +[
        +  "off",
        +  "preview",
        +  "quiet",
        +  "public",
        +  "direct"
        +]
  12. 1 tool update
    • Addedget-created-pull-requests-tool
  13. 1 tool update
    • Changedupdate-prospect-tool1 field changed
      • addedInput schema / properties / checked_on
        Added value: +{
        +  "description": "The date you re-checked the signal, as YYYY-MM-DD. Set it to today whenever you have actually looked — an unchecked row is flagged before anybody sends to it.",
        +  "type": "string"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables coding agents such as Claude Code and Cursor to check a team's learned decisions from pull requests, reviews, and docs before writing code, showing whether breaking them is blocking or advisory. It also provides locally computed symbol impact/blast-radius analysis so source code never leaves the machine.
    79 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI coding agents to access evidence-backed repository memory, code graph, project DNA, and deterministic change validation so they understand design decisions, past bugs, and invariants while working.
    1,169 npm
    13
    Functional Source , Version 1.1, ALv2 Future
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query architecture context, data contracts, and blast radius to prevent cross-repo architectural breakage before merging.
    23
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources