Skip to main content
Glama
4hglee-ops

Gyuniverse GitHub Projects MCP

by 4hglee-ops

GitHub Projects → Safe AI Operations → Better Team Execution

ChatGPT, Claude 같은 AI 클라이언트가 GitHub Projects v2를 조회·분석·변경·검증·감사할 수 있도록 연결하는 MCP 서버입니다.

빠른 시작 · 주요 기능 · 안전한-변경 · 아키텍처 · 문서


👀 한눈에 보기

📊 Project 상태 이해

Project item, Status, Priority, assignee, relationship과 변경 사항을 읽어 현재 팀 상태를 구조화합니다.

🛡 안전한 변경

권한, allowlist, write gate, precondition, 재조회 검증(re-read verification)을 거쳐 실제 Project를 변경합니다.

🧾 변경 추적

Checkpoint / delta와 durable audit를 이용해 변경 전후와 실행 결과를 추적합니다.

ChatGPT / Claude / MCP Client
              │
        OAuth / Remote MCP
              ▼
   Gyuniverse GitHub Projects MCP
              │
      ┌───────┼─────────┐
      │       │         │
    Read    Write   Governance
      │       │         │
      │       │         ├─ Checkpoint / Delta
      │       │         ├─ Durable Audit
      │       │         └─ Bulk Plan
      │       │
      └───────┴──────────────► GitHub Projects v2

핵심 목표는 GitHub Projects를 단순 API wrapper로 만드는 것이 아니라, AI가 실제 팀 운영 상태를 안전하게 읽고 변경할 수 있는 project operations layer를 만드는 것입니다.


Related MCP server: github-mcp-server

🎯 이런 경우에 적합합니다

  • ChatGPT / Claude에서 GitHub Projects 상태를 자연어로 조회하고 싶은 경우

  • AI에게 Status / Priority 변경을 맡기되 권한과 검증 경계가 필요한 경우

  • PR merge 상태와 Project Status의 불일치를 탐지하고 싶은 경우

  • parent / sub-issue / dependency 관계를 AI workflow에서 다루고 싶은 경우

  • 여러 변경을 즉시 실행하지 않고 Preview → Approval → Apply 방식으로 통제하고 싶은 경우

  • AI가 수행한 mutation과 변경 전후 상태를 audit 가능한 형태로 남기고 싶은 경우


✨ 주요 기능

상태

기능

설명

Project / field / item 조회

Projects v2 메타데이터와 현재 field 값 조회

Workflow intelligence

missing Status / assignee, PR merge ↔ Project 상태 불일치 탐지

Project brief

normalized snapshot 기반 팀 상태 브리핑

Checkpoint / delta

기준선을 저장하고 이후 변경 사항 비교

Guarded Status / Priority

고수준 write + 변경 후 재조회 검증

Work item operations

item 추가, 생성, assignment 등 workflow 지원

Relationship read

parent / sub-issue / blocks / blocked-by 조회

Guarded relationship write

Admin 관계 추가·제거 + reciprocal verification

Bulk governance

immutable Preview → Approval → Apply

Durable audit

Upstash 기반 bounded write audit

Role-based ACL

Viewer / Member / Admin + capability 기반 runtime authorization

Remote OAuth MCP

OAuth discovery, DCR, PKCE, read/write scope 분리

GPT Actions adapter

Shared Core 위의 REST/OpenAPI adapter

의도적으로 제한한 부분

AI client에서 tool이 보인다는 사실과 실제 실행 권한은 별개입니다.

Tool discovery
    ≠
Authorization

파괴적인 delete 계열 도구도 기본 surface에 제공하지 않습니다.


⚡ 빠른 시작

Maintainer-hosted endpoint

https://gyuniverse-github-projects-mcp.vercel.app/mcp

GPT Actions OpenAPI:

https://gyuniverse-github-projects-mcp.vercel.app/openapi.json

Publicly reachable ≠ publicly authorized
Endpoint가 인터넷에서 접근 가능하다는 것은 임의의 GitHub Project에 접근할 수 있다는 뜻이 아닙니다.

실제 접근은 OAuth identity, owner/Project allowlist, Project membership, capability와 write gate로 제한됩니다.

자신의 GitHub Projects를 연결하려는 외부 사용자는 일반적으로 self-hosting을 권장합니다.

Client

연결 방식

인증

지원

ChatGPT connector

Remote MCP

OAuth + PKCE

Custom GPT

GPT Actions / OpenAPI

OAuth

Claude Code

Remote HTTP MCP

OAuth

Claude Chat / compatible connector

Remote MCP

OAuth + DCR + PKCE

Local stdio

git clone https://github.com/4hglee-ops/gyuniverse-github-projects-mcp.git
cd gyuniverse-github-projects-mcp
pnpm install
cp .env.example .env
pnpm mcp:stdio

최소 read-only 예시:

GITHUB_TOKEN=github_pat_...
GITHUB_PROJECTS_ALLOWED_OWNERS=your-user-or-org
GITHUB_PROJECTS_WRITE_ENABLED=false
MCP_OAUTH_WRITE_ENABLED=false

전체 환경변수는 .env.example, 배포 방법은 docs/DEPLOYMENT.md를 참고하세요.


💡 활용 예시

현재 Project 상태 브리핑

gyuniverse-hq Project #2의 현재 상태를
진행 중 / Review / Blocker / 담당자 없는 작업으로 정리해줘.

상태 불일치 탐지

merge된 PR과 GitHub Project Status가 어긋난 항목을 찾아줘.

변경 추적

Project #2를 checkpoint와 비교해서
Status, Priority, assignee, relationship이 달라진 항목만 보여줘.

Status / Priority 변경

Issue #14의 Priority를 P0로 변경하고 결과를 다시 확인해줘.

Relationship

Issue #8과 #9의 parent / sub-issue 및 dependency 관계를 조회해줘.
Issue #9를 Issue #8의 sub-issue로 추가한 뒤 reciprocal state를 다시 검증해줘.

Bulk 변경

이 작업들의 Status / Priority 변경안을 먼저 Preview해줘.
아직 GitHub에는 적용하지 마.

승인된 plan만 Apply할 수 있습니다.


🧠 왜 만들었나

팀이 GitHub Projects를 운영하다 보면 이런 질문이 반복됩니다.

"지금 실제로 진행 중인 작업은 뭐지?"
"PR은 merge됐는데 왜 Project는 아직 In Progress지?"
"이 Issue가 다른 작업을 막고 있나?"
"AI에게 상태 변경을 맡겨도 안전할까?"
"AI가 바꾼 내용을 나중에 확인할 수 있나?"

이 프로젝트는 Project 상태를 AI가 다루기 쉬운 형태로 정규화하고, 변경이 필요하면 명시적인 안전 경계를 거쳐 GitHub operation을 수행합니다.

Project State
     ↓
Normalized Context
     ↓
AI Analysis
     ↓
Authorization / Precondition
     ↓
GitHub Mutation
     ↓
Re-read Verification
     ↓
Durable Audit

🛡 안전한 변경

기본 역할

Capability

Admin

Member

Viewer

Project read / analysis

Status / Priority update

Existing item add

Item create / assign

Generic field update

Relationship write

Bulk preview / approve / apply

Identity별 permission은 role default보다 좁힐 수만 있고 확장할 수 없습니다.

Authorization path

OAuth identity + scope
        ↓
Owner allowlist
        ↓
Project allowlist
        ↓
Identity Project membership
        ↓
Operation capability
        ↓
Global write gate
        ↓
Precondition / preflight
        ↓
GitHub mutation
        ↓
Re-read verification
        ↓
Durable audit

Bulk safety

Preview
   ↓
Approval
   ↓
Apply

Apply 직전 current state와 authorization을 다시 확인하며, stale preflight가 발견되면 mutation 없이 실패합니다.

상세 내용은 docs/SECURITY.mddocs/PERMISSIONS.md를 참고하세요.


🏗 아키텍처

flowchart TD
    C[ChatGPT / Claude / MCP Client] --> O[OAuth / MCP Adapter]
    G[Custom GPT] --> REST[REST / OpenAPI Adapter]
    O --> CORE[Shared Core]
    REST --> CORE

    CORE --> READ[Read / Project Intelligence]
    CORE --> WRITE[Guarded Operations]
    CORE --> GOV[Governance]

    READ --> GH[GitHub GraphQL API]
    WRITE --> GH
    GOV --> STORE[Upstash Durable State]

    GH --> P[GitHub Projects v2]

    GOV --> CP[Checkpoint / Delta]
    GOV --> AUDIT[Write Audit]
    GOV --> BULK[Bulk Plans]

영역

기술

Language

TypeScript

GitHub API

GraphQL

MCP

@modelcontextprotocol/server, @modelcontextprotocol/node

Validation

Zod

Runtime

Node.js

Package Manager

pnpm

Deployment

Vercel

Durable Store

Upstash Redis

자세한 구조는 docs/ARCHITECTURE.md를 참고하세요.


✅ 현재 상태

v0.2.0 / M10 Advanced Governance — Production validated

  • ✅ Local + Remote MCP

  • ✅ OAuth / DCR / PKCE

  • ✅ Shared Core + MCP / REST adapters

  • ✅ Individual identity + Viewer / Member / Admin ACL

  • ✅ High-level Project reads and writes

  • ✅ Checkpoint / delta

  • ✅ Durable audit

  • ✅ Dependency / sub-issue read

  • ✅ Guarded relationship write

  • ✅ Bulk Preview → Approval → Apply

  • ✅ Capability-based ACL

  • ✅ Production validation

현재 공개 저장소 기준 regression suite는 249 / 249 tests PASS입니다.


🧪 검증

pnpm install --frozen-lockfile
pnpm typecheck
pnpm build
pnpm test

Read-only integration smoke:

pnpm smoke:read -- gyuniverse-hq 2

HTTP runtime smoke:

pnpm smoke:http

CI는 PR / main push에서 typecheck, build, test를 수행하며 Production mutation을 요구하지 않습니다.

Public 전환 전 sanitized history를 대상으로 별도의 full-history Gitleaks 검사에서도 0 findings를 확인했습니다.


📚 문서

처음 보는 경우 docs/README.md부터 읽는 것을 권장합니다.

문서

내용

docs/ARCHITECTURE.md

전체 architecture / 요청·권한·변경 흐름

docs/SECURITY.md

보안 원칙과 authorization boundary

docs/PERMISSIONS.md

Viewer / Member / Admin 및 capability 기준

docs/DEPLOYMENT.md

Vercel / Upstash / self-hosting

docs/ROADMAP.md

현재 구현과 다음 확장 방향

docs/history/README.md

M4 → M10 개발·검증 과정 한국어 요약

CHANGELOG.md

공개 버전 변경 이력

과거 milestone 상세 원문은 docs/history/legacy/에 보존합니다.


🔐 Security

절대로 commit하지 않습니다.

- GitHub PAT / token
- OAuth signing secret
- OAuth team / access codes
- GPT Actions client secret
- Upstash credentials
- bearer / refresh tokens
- cookies / Authorization headers
- .env files

취약점을 발견한 경우 실제 credential이나 private Project data를 public issue에 올리지 마세요.


🛠 로컬 개발

요구 사항:

  • Node.js 22+

  • pnpm 10.x

  • target Projects에 접근 가능한 GitHub credential

git clone https://github.com/4hglee-ops/gyuniverse-github-projects-mcp.git
cd gyuniverse-github-projects-mcp
pnpm install
cp .env.example .env
pnpm typecheck
pnpm build
pnpm test
pnpm mcp:stdio

Remote HTTP:

pnpm mcp:http

🤝 기여

Bug report, 문서 개선, 기능 제안, Pull Request를 환영합니다.

개발 환경과 validation 기준은 CONTRIBUTING.md를 참고하세요.

Public issue/PR에 실제 token, access code, secret, private Project data를 포함하지 마세요.


🗺 장기 방향

flowchart LR
    D[Discord Bridge] --> U[Unified Team State]
    G[GitHub Projects MCP] --> U
    J[Jira] -. future .-> U
    N[Notion] -. future .-> U

    U --> C[Context]
    U --> O[Operations]
    C --> AI[AI Team Intelligence]
    O --> AI

현재는:

GitHub Projects → Read / Analyze / Safe Write / Verify / Audit

장기적으로는 Discord의 대화 맥락(Context)과 GitHub Projects의 운영 상태(Operations)를 함께 사용해 팀에서 무엇이 결정됐고, 현재 무엇이 진행 중이며, 어디가 어긋나 있는지를 근거와 함께 다루는 방향을 탐색합니다.


License

Apache License 2.0으로 공개합니다. 자세한 내용은 LICENSE를 참고하세요.


🌌 Gyuniverse

Project state → Safe operations → Better team execution

Available Tools

40 tools
add_github_project_blocked_byA
Idempotent

Make source blocked by target: target blocks source. Single relationship only. Both Issue items must belong to the same authorized Project. Requires an authenticated actor with project.write and item.relationship.write plus the global write gate. Re-reads both directions and persists audit, including no_change. Do not retry failures automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
numberYes
sourceItemIdYes
targetItemIdYes

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond annotations by naming required scopes (project.write, item.relationship.write), the global write gate, and the re-read/audit behavior including no_change persistence. This adds substantial context beyond the idempotent/destructive hints, and the no_change/audit note is consistent with idempotentHint=true.

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-loads the core action and direction, then layers constraints and behavioral notes with zero filler. Every sentence (scope requirements, audit behavior, retry guidance) 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 mutation tool with no output schema and four required params, it covers auth, preconditions, idempotency, and audit behavior adequately. The main gap is that individual parameters (owner, number, item IDs) are not explained, but overall it is complete enough to invoke 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 0%, so the description must carry parameter meaning. It clarifies source/target semantics via the direction statement, but leaves owner and number (the project identifiers) unaddressed; they are only implied by 'same authorized Project'. Partial compensation for the coverage gap.

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 (make/create) and resource (blocked_by relationship) and disambiguates the direction upfront: 'source blocked by target: target blocks source.' This lets an agent distinguish it from remove_github_project_blocked_by and get_blockers 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 Guidelines4/5

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

Gives clear preconditions ('Both Issue items must belong to the same authorized Project', 'Single relationship only') and an operational exclusion ('Do not retry failures automatically'). It does not explicitly name the remove_ sibling as the inverse alternative, but the direction note effectively routes usage.

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

add_github_project_itemA

Add an existing GitHub Issue or Pull Request node to an authorized Project v2. Disabled by default and requires an explicit Project allowlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentIdYes
projectIdYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), so the bar is lower. The description adds genuine non-annotation context: the tool is disabled by default and requires an explicit Project allowlist, which is auth/availability information the agent cannot get 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?

Two tight sentences with the core action front-loaded and the gating constraint second; nothing is wasted, though it could carry one more clause of practical detail without becoming bloated.

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?

For a mutation with no output schema and undocumented parameters, the definition covers the safety profile and the allowlist gate but omits param formats and any notion of the result (e.g., confirmation of the added item). Adequate but with clear gaps.

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 0%, so the description must compensate. It loosely maps the two params (contentId = an existing Issue or PR node, projectId = an authorized Project v2), but gives no format or syntax (node ID vs URL), leaving the agent to guess how to populate them.

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+resource ('Add an existing GitHub Issue or Pull Request node to an authorized Project v2'), making the operation clear and distinguishable from read siblings. It stops short of explicitly naming the closest alternatives (add_github_project_sub_issue, add_github_project_blocked_by), so an agent must infer the difference.

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?

'Disabled by default and requires an explicit Project allowlist' is a meaningful precondition, but it is an availability gate rather than when-to-use guidance. No sibling tool or alternative path is named, so the agent gets implied context only.

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

add_github_project_sub_issueA
Idempotent

Add target as a sub-issue of source. Never replace an existing parent. Single relationship only. Both Issue items must belong to the same authorized Project. Requires an authenticated actor with project.write and item.relationship.write plus the global write gate. Re-reads both directions and persists audit, including no_change. Do not retry failures automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
numberYes
sourceItemIdYes
targetItemIdYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (write, idempotent, non-destructive, open-world), it discloses required scopes (project.write, item.relationship.write, global write gate), the no-parent-replacement rule, that both directions are re-read and an audit record is persisted even on no_change, and an explicit no-auto-retry directive. This is unusually rich behavioral context for an agent.

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 is front-loaded and every sentence carries information. The telegraphic fragments ('Single relationship only.') read as an unformatted list, which slightly hurts scanability but wastes nothing.

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 write tool with no output schema, the description covers permissions, scope constraints, audit behavior, idempotency nuance, and failure handling. An agent has enough to call it correctly and safely without opening 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 description coverage is 0%, so the description must carry the burden. It does clarify the source-vs-target roles (source is the parent, target becomes the child), which is the key semantic distinction, but owner and number are left entirely undefined.

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 first sentence names the exact verb and resource: 'Add target as a sub-issue of source.' This clearly distinguishes it from remove_github_project_sub_issue, add_github_project_blocked_by, and add_github_project_item, all of which operate on different relationship types.

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 real usage constraints (never replace an existing parent, single relationship only, both items must share an authorized Project, no automatic retries). It stops short of explicitly naming when a sibling such as add_github_project_blocked_by or remove_github_project_sub_issue should be used instead, leaving that to inference.

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

analyze_github_project_reconciliationC
Read-onlyIdempotent

Compare Pull Request merge state with Project Status and surface evidence-backed workflow mismatches for an authorized Project.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes
includeArchivedNo
statusFieldNameNoStatus
completedStatusNamesNo
reportDoneButNotMergedNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that results require an authorized Project and are 'evidence-backed', but it says nothing about pagination via 'first', how archived items are handled, or what the mismatch report contains.

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?

A single, front-loaded sentence with no filler; the core verb and resource lead. It is efficient but arguably too terse given the parameter surface it must support.

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

Completeness2/5

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

With no output schema and 7 undocumented parameters, the description should explain the shape of the reconciliation report and the meaning of key inputs, but it does neither. An agent cannot confidently invoke it with non-default parameters.

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

Parameters2/5

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

Schema description coverage is 0% across 7 parameters, so the description carries full burden and largely fails. Only 'Project Status' loosely hints at statusFieldName/completedStatusNames, while first, includeArchived, and reportDoneButNotMerged are entirely undocumented in both schema and description.

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 specific resources (Pull Request merge state, Project Status) and a concrete action (compare and surface workflow mismatches), so an agent knows this is a reconciliation/audit analyzer. However, it does not distinguish itself from the similarly named sibling analyze_github_project_state_gaps or compare_github_project_state_checkpoint, so the agent must guess which analyzer applies.

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 guidance on when to use this tool versus the many sibling analyzers (state_gaps, compare_state_checkpoint, get_project_snapshot). The only hint is the implied audit use case from 'reconciliation', which the agent must infer.

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

analyze_github_project_state_gapsC
Read-onlyIdempotent

Analyze an authorized GitHub Project snapshot for missing Status and missing assignee gaps while preserving item evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes
includeArchivedNo
statusFieldNameNoStatus
assigneeFieldNamesNo
completedStatusNamesNo
includeCompletedForAssigneeNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only the phrase 'preserving item evidence,' which hints that findings retain source evidence but does not explain the shape of results or how pagination/limits behave.

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?

A single front-loaded sentence with no filler; the core purpose leads. It is efficient, though the brevity contributes to the documentation gaps noted elsewhere.

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

Completeness2/5

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

For a tool taking 8 parameters with 0% schema description coverage and no output schema, the one-line description is insufficient. Key configuration knobs like completedStatusNames and includeCompletedForAssignee, which materially change what counts as a gap, are left undocumented.

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

Parameters2/5

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

Schema coverage is 0% across 8 parameters. The description gestures at the 'Status' and 'assignee' concepts, loosely matching statusFieldName and assigneeFieldNames, but says nothing about owner, number, first, includeArchived, completedStatusNames, or includeCompletedForAssignee, so most parameters remain unexplained in both schema and description.

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 (Analyze) and resource (authorized GitHub Project snapshot) and names the concrete outputs it looks for: missing Status and missing assignee gaps. It is clear on its own, but it does not distinguish itself from the sibling analyze_github_project_reconciliation or get_github_project_snapshot, 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 Guidelines2/5

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

The phrase 'authorized ... snapshot' implies a prerequisite (a snapshot must exist and be accessible), but there is no explicit when-to-use, when-not-to-use, or routing to the reconciliation/snapshot siblings. An agent is left to infer the workflow context.

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

apply_github_project_bulk_planA
DestructiveIdempotent

Apply one approved M10-5 bulk plan once. All operations are reauthorized and re-read before the first GitHub mutation; stale/preflight failures perform zero writes. Runtime failures stop remaining operations and are never auto-retried or rolled back.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdYes
planDigestYes

TDQS

A3.8/5.0
Behavior5/5

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

Beyond the annotations, which already declare destructive/idempotent/openWorld, the description discloses genuinely non-obvious behavior: all operations are reauthorized and re-read before the first mutation, stale/preflight failures produce zero writes (atomicity boundary), and runtime failures halt remaining operations with no auto-retry or rollback. That failure-mode detail is exactly what an agent needs before invoking an irreversible bulk write.

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?

Three tight sentences, front-loaded with the core action before the failure semantics. Every clause carries operational information with no filler.

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 destructive, open-world mutation with no output schema, the description covers atomicity, authorization, and failure/retry behavior well, and annotations cover the safety profile. The remaining gap is parameter provenance (what a planId/planDigest is and where to obtain them), which is absent.

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

Parameters2/5

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

Schema description coverage is 0% and there are two required parameters (planId, planDigest), yet the description mentions neither. The regex patterns in the schema convey format but not where the values come from or their relationship, and the description does nothing to close that gap.

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 ('Apply one approved bulk plan') and scopes it as the execution step that consumes an already-approved plan, which meaningfully separates it from get_github_project_bulk_plan and approve_github_project_bulk_plan. It stops short of explicitly naming the sibling that produces an approved plan, so it does not fully differentiate by name.

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?

'One approved M10-5 bulk plan once' implies this is the terminal execution step and should not be repeated, which is useful routing guidance. However, it never states the precondition explicitly (e.g. 'requires a plan approved via approve_github_project_bulk_plan') nor points to preview_github_project_bulk_updates as the non-mutating alternative.

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

approve_github_project_bulk_planA
Idempotent

Explicitly approve the exact immutable bulk preview identified by plan ID and digest. The current maker-checker policy and bulk.approve capability are enforced; this does not mutate GitHub.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdYes
planDigestYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare a write operation (readOnlyHint=false) that is idempotent and non-destructive. The description adds meaningful context beyond that: the maker-checker policy and bulk.approve capability are enforced, and the approval 'does not mutate GitHub', resolving the apparent tension between a non-read-only hint and a no-external-write operation. It stops short of describing what an approval record is or its downstream effect.

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 tight sentences, front-loading the action and the identifier requirement, with the enforcement and non-mutation caveats trailing. No redundant restatement of the name or schema patterns.

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 no output schema, the description covers purpose, prerequisite policy/capability, and the non-mutating nature of the call. It could say what constitutes success or how the approval is later consumed by apply, but nothing an agent needs to invoke it correctly is absent.

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 0%, so the description must carry the load. It does explain that planId and planDigest together pin down 'the exact immutable bulk preview', which conveys their joint role and the immutability guarantee. It adds no format, matching, or failure semantics (e.g., what happens on digest mismatch).

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 (approve) and resource (the immutable bulk preview identified by plan ID + digest), which is enough to separate it from preview_github_project_bulk_updates and apply_github_project_bulk_plan. It does not explicitly name those siblings or position this approval step in the preview→approve→apply sequence, so it is clear but not maximally differentiated.

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 clause 'this does not mutate GitHub' implicitly contrasts approval with application, giving some routing signal. However, there is no explicit when-to-use condition (e.g., after a preview has been generated, before apply_github_project_bulk_plan) and no named alternative, so the guidance is only implied.

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

assign_work_itemA
Idempotent

Assign a GitHub user to the Issue or Pull Request represented by one authorized Project item. Admin/PM only in the current policy. Resolves the login, skips an already-assigned user, verifies the assignment, and returns actor-aware audit metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
itemIdYes
numberYes
assigneeLoginYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, readOnlyHint=false and openWorldHint=true, so safety is partly covered. The description still adds real behavior the annotations do not: login resolution, skipping an already-assigned user, post-assignment verification, and actor-aware audit metadata in the response.

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 tight sentences, front-loaded with the core action and permissions before the behavioral sequence. Dense but each sentence carries distinct information; no filler.

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?

No output schema exists, and the description does cover the return shape (actor-aware audit metadata), the auth requirement, the mutation semantics, and the skip-and-verify sequence. The remaining gap is parameter meaning, which is left entirely to an undocumented schema.

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

Parameters2/5

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

Schema description coverage is 0% across all four required parameters, so the description must compensate and largely does not. Only 'Resolves the login' loosely maps to assigneeLogin, and 'authorized Project item' loosely hints at itemId; owner and number are never explained.

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 verb (Assign) and resource (a GitHub user to the Issue/PR behind a Project item), which is materially distinct from siblings like update_github_project_item_status or update_github_project_item_field. An agent can route here 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 Guidelines4/5

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

'Admin/PM only in the current policy' gives an explicit authorization gate for when this tool is usable. It stops short of naming which alternative to use when the user is not authorized or when the item is not yet a project item, so it is clear context without explicit alternatives.

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

capture_backlogA
Idempotent

Capture an existing GitHub Issue or Pull Request URL into one authorized Project and ensure its Status is exactly 'Backlog'. If already captured in Backlog, returns no_change. Requires both item.add and item.update_status permissions before any mutation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
ownerYes
numberYes

TDQS

A4/5.0
Behavior4/5

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

Adds real behavior beyond annotations: the required item.add and item.update_status permissions before any mutation, and the concrete no_change outcome for already-Backlog items. Annotations already cover safety/idempotency hints, but the description usefully restates idempotency in terms of a specific observable result.

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 the primary action and outcome, then permissions. No filler; every clause carries information an agent needs.

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?

No output schema exists, and the description covers the key return signal (no_change) and the permission prerequisites. It is nearly complete for a 3-param mutation, though it leaves the meaning of number and the exact capture mechanics (create vs. link existing item) unstated.

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 0%, so the description must carry parameter meaning. It partially does: url is implied to be the Issue/PR URL and owner is implied to be the Project owner ('one authorized Project'), but the required number parameter is never explained, and none of the three params are explicitly defined.

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 (capture) plus resource (GitHub Issue/PR URL) and the exact resulting state ('Status is exactly Backlog'). This distinguishes it from the generic sibling add_github_project_item, which implies adding an item without forcing a status.

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?

Usage is implied by the stated outcome (capture into Backlog) and the idempotent 'returns no_change' case is described, but no alternatives such as add_github_project_item or update_github_project_item_status are named, nor is when-not-to-use specified.

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

compare_github_project_state_checkpointB
Read-onlyIdempotent

Compare the current normalized state of an allowed GitHub Project with its latest stored checkpoint without replacing that checkpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds useful behavioral context by clarifying that the latest checkpoint is not replaced, which confirms a non-mutating comparison operation without contradicting the annotations.

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?

The description is a single front-loaded sentence with no filler. It states the operation, target, and key non-mutating constraint efficiently.

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?

The description is adequate for selecting a read-only comparison tool, especially given the annotations. However, it leaves parameter meanings and comparison result behavior unstated, and the schema provides no parameter descriptions while no output schema exists.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the three parameters. It does not clarify what owner, number, or first mean, nor how 'first' controls pagination or comparison scope, so it fails to compensate for the undocumented 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?

The description names a specific verb (compare) and resource (current normalized state of an allowed GitHub Project vs. latest stored checkpoint). It implicitly distinguishes itself from the sibling create_github_project_state_checkpoint by stating 'without replacing that checkpoint,' though it does not name other similar read/comparison siblings.

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?

Usage is implied by the non-replacement condition: use this to compare current state against the latest checkpoint rather than to create or update one. It does not explicitly say when to use this instead of get_github_project_snapshot, analyze_github_project_state_gaps, or analyze_github_project_reconciliation.

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

create_github_project_state_checkpointB

Capture the latest normalized state of an allowed GitHub Project as the baseline for later delta comparison. In M10 Production this baseline uses the configured durable governance store; local development may remain process-local. This does not write to GitHub.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and idempotentHint=false, but the description adds meaningful context: the baseline is persisted to a durable governance store in production while local development may be process-local, and it explicitly states no write is issued to GitHub. That persistence-location detail is exactly the kind of side-effect disclosure annotations cannot carry.

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 the core action, with no padding. The middle sentence about durable governance store versus process-local development is somewhat jargon-heavy but still earns its place by describing persistence behavior.

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?

For a capture/baseline tool with no output schema, the description never says what a 'checkpoint' is or what handle/identifier the caller gets back, which matters because a sibling (compare_github_project_state_checkpoint) presumably consumes it. The persistence story is covered, but the handoff contract to the comparison tool is not.

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

Parameters2/5

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

Schema description coverage is 0% for three parameters (owner, number, first, the last capped at 100), so the description must compensate and does not. It never explains what owner/number identify or what 'first' controls (presumably an item-fetch limit), leaving the agent to guess from parameter names alone.

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?

Names a specific verb and resource ('Capture the latest normalized state of an allowed GitHub Project') and states its role as a baseline for delta comparison, which implicitly separates it from the compare/analyze siblings. It stops short of naming compare_github_project_state_checkpoint or get_github_project_snapshot explicitly, so an agent must infer which sibling consumes the baseline.

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?

'As the baseline for later delta comparison' implies the tool is used before a comparison step, giving implied usage context. There is no explicit when-to-use/when-not-to-use guidance and no mention of comparison to alternatives like get_github_project_snapshot, which also captures project state.

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

create_work_itemA

Create a new GitHub Issue under the same authorized Project owner, capture it into the Project, and verify exact Backlog Status. Admin/PM only in the current policy. Pre-authorizes create, add, and status permissions before Issue creation and reports a partial-failure error containing the created Issue URL if Project capture later fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
ownerYes
titleYes
numberYes
repositoryYes

TDQS

A3.9/5.0
Behavior5/5

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

Annotations already flag a non-idempotent, non-destructive write tool, and the description goes well beyond that: it discloses permission pre-authorization (create/add/status), the partial-failure contract, and the specific error content (created Issue URL). This is exactly the kind of beyond-annotation behavior an agent needs to handle failures.

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 dense sentences that front-load the core action and then the policy/failure details; every clause adds real information. It is slightly heavy but not padded.

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?

Behavioral context is strong (permissions, partial failure, verification), and no output schema exists so return-format detail is optional. But with 0% schema coverage on 5 parameters, a caller still lacks enough to fill in number/repository/title/body correctly, so the definition is incomplete for invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for 5 parameters, yet it only indirectly touches 'owner' ('same authorized Project owner'). Nothing clarifies what number, repository, title, or body mean or the constraints on them, leaving four required params effectively undocumented.

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+resource (create a new GitHub Issue), ties it to the authorized Project, and clarifies the full flow (capture into Project + verify Backlog Status). This distinguishes it from the sibling add_github_project_item, which attaches an existing item rather than creating a new Issue.

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 description supplies one real usage constraint – 'Admin/PM only in the current policy' – which tells the agent who should call it. However, it never explicitly states when to prefer this over add_github_project_item or other creation paths; the distinction is only implied by 'Create a new GitHub Issue'.

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

get_backlogC
Read-onlyIdempotent

Return items whose Project Status is explicitly Backlog.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes
includeArchivedNo

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered by structured data. The description adds only the filtering semantics ('explicitly Backlog') and omits real behavioral facts an agent needs, such as the silent result cap (first defaults to and is capped at 100) and pagination 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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though the brevity is partly under-specification rather than true economy.

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

Completeness2/5

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

With no output schema and 0% parameter documentation, the description should explain the return shape, pagination, and the required project identifiers. Instead it supplies one clause, leaving an agent unable to call the tool correctly without falling back on the schema alone.

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

Parameters1/5

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

Schema description coverage is 0% across four parameters, so the description must carry the burden and does not. It never explains owner, number (presumably the project identifier), first (pagination limit), or includeArchived, leaving every parameter undocumented.

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

Purpose3/5

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

The description gives a verb (Return) and a filter condition (Project Status is explicitly Backlog), which is better than a tautology. However, 'items' is never grounded — it is unclear whether these are GitHub project items, work items, or issues, and nothing distinguishes it from siblings like list_github_project_items or get_unassigned_work.

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 guidance, no exclusions, and no named alternative. An agent cannot tell from this text why it should call get_backlog instead of list_github_project_items with a status filter.

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

get_blockersB
Read-onlyIdempotent

Return only explicitly evidenced blockers from Blocked status/fields/reasons; does not infer blockers from ordinary workflow state.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes
includeArchivedNo

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-derivable semantics: only explicitly evidenced blockers are returned, not inferred ones – an agent needs to know this to trust or distrust the result set.

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?

A single tight sentence with the return semantics front-loaded and no filler. Slightly dense with slash-delimited qualifiers ('status/fields/reasons') but every clause earns its place.

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

Completeness2/5

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

For a 4-parameter tool with 0% schema coverage and no output schema, the description leaves too much unsaid: which parameters are mandatory, what pagination does, and whether archived items are included. The one thing it does define (blocker evidence criteria) is the most important, but the rest is missing.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters, so the description would need to carry the full burden, and it carries none. It says nothing about required owner/number, the 'first' pagination cap (default 100, max 100), or what includeArchived changes in the blocker set.

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+resource ('Return ... blockers') and precisely bounds the resource by defining what counts as a blocker ('explicitly evidenced ... from Blocked status/fields/reasons'). It differentiates itself implicitly from the add/remove blocked_by siblings and from general state-analysis tools, though it never names a sibling.

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 clause 'does not infer blockers from ordinary workflow state' gives real scoping guidance about when this tool is and isn't the right choice, which is more than pure implication. However, it offers no prerequisites (owner/number required), no alternatives named, and no statement of the situation that should trigger calling it.

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

get_github_projectB
Read-onlyIdempotent

Get metadata for one GitHub Project v2 after server allowlist and authenticated Project membership checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
numberYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so safety is covered. The description does add useful context beyond annotations: it discloses that server allowlist and authenticated Project membership checks gate the call. However, it says nothing about what 'metadata' includes, failure modes, or pagination.

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 lean sentence with the resource scoped first and the gating conditions attached. No filler, nothing redundant.

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?

For a low-complexity two-parameter read tool with no output schema, the description covers the gating behavior but leaves the parameter formats and the returned payload entirely to the (silent) schema. Adequate but with clear gaps that the schema does not fill at 0% coverage.

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

Parameters2/5

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

Schema description coverage is 0% for two required parameters (owner, number). The description mentions 'one GitHub Project v2' but never explains that owner is a login/org and number is the project number, nor their formats or constraints. The schema does the documenting and the description adds essentially nothing.

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 ('metadata for one GitHub Project v2'), with the scope limited to a single project. It is distinguishable from list_github_projects by 'one', but does not explicitly name or contrast any 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 Guidelines3/5

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

The description implies a precondition-gated fetch (allowlist, authenticated membership) but offers no when-to-use vs alternatives guidance. An agent cannot tell from this text why it would choose get_github_project over get_github_project_snapshot or list_github_projects.

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

get_github_project_brief_contextC
Read-onlyIdempotent

Return normalized authorized Project state plus a contract for producing a team brief without treating planned work as completed work.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered externally. The description adds one genuine behavioral note: planned work should not be reported as completed, which hints at a normalization/correctness contract, but it does not explain what 'authorized' scope means or how normalization behaves.

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?

It is a single sentence with no filler, which is good, but the dense abstract phrasing ('normalized authorized Project state plus a contract') front-loads jargon rather than the concrete outcome an agent needs. Short but not well-structured for scanning.

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

Completeness2/5

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

There is no output schema, the three parameters are undocumented, and the description does not describe the returned structure or the 'contract' it promises. For a read tool returning a complex normalized state object, this leaves the agent guessing at both inputs and outputs.

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

Parameters1/5

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

Schema description coverage is 0% and the description says nothing about owner, number, or first (including the max-100 pagination cap). With three undocumented parameters, the description fails to compensate for the schema gap entirely.

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

Purpose3/5

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

The verb 'Return' and resource 'Project state' are present, but 'contract for producing a team brief' is jargon that obscures what is actually returned, and the description never distinguishes this from the closely named sibling 'get_project_brief' or 'get_github_project_snapshot'. An agent cannot confidently route between these three.

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?

No when-to-use, when-not-to-use, or alternative routing is given, despite several sibling tools (get_project_brief, get_github_project_snapshot, list_github_project_items) that plausibly overlap. The phrase 'without treating planned work as completed work' implies a use case but is not framed as guidance.

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

get_github_project_bulk_planC
Idempotent

Read the durable state, immutable artifact, plan-level actor events and per-item results of an authorized M10 bulk plan. Project access and a bulk workflow capability are required.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdYes

TDQS

C2.8/5.0
Behavior1/5

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

The description's sole stated action is 'Read the durable state... of an authorized... bulk plan', i.e. a pure read, yet the annotations declare readOnlyHint=false. Nothing in the description discloses any write or side-effect behavior, so an agent would infer a safe read operation that the annotation explicitly denies.

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 compact sentences; the returned-data list is front-loaded and the requirement note follows. Every clause carries content, though the jargon could be trimmed or clarified.

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?

With no output schema, the description usefully enumerates the four data categories returned and states the access requirement, which is decent coverage. However it leaves the planId parameter unexplained and, critically, fails to reconcile the read framing with the non-read-only annotation.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions planId at all, so it adds no meaning beyond the schema. For a low-coverage single-parameter tool the description was expected to compensate (e.g. what a plan ID refers to, where to obtain it) and does not.

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 gives a specific verb ('Read') and enumerates the exact resources returned: durable state, immutable artifact, plan-level actor events, and per-item results of a bulk plan. This clearly separates it from the sibling plan-lifecycle tools (preview/approve/apply), though the undefined jargon 'M10' and 'immutable artifact' slightly cloud what the artifact actually is.

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?

It states a prerequisite ('Project access and a bulk workflow capability are required'), which is useful, but it never says when to call this versus siblings like preview_github_project_bulk_updates or list_github_project_write_audit_log, nor when not to. Usage is only implied by the resource name.

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

get_github_project_item_relationshipsA
Read-onlyIdempotent

Read native parent, sub-issue, blocks and blocked-by relationships for a GitHub Issue item in an authorized Project. Only same-Project, allowed-owner target details are returned; withheld counts and bounded coverage are explicit. Does not mutate GitHub or change get_blockers semantics.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
itemIdYes
numberYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real value beyond that: only same-Project, allowed-owner target details are returned, and partial results are surfaced via withheld counts and bounded coverage. With no output schema, this visibility into filtering and truncation behavior is genuinely useful.

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 tight sentences, front-loaded with the core purpose followed by return-scope caveats and a boundary disclaimer. Dense but every clause carries signal; only 'bounded coverage are explicit' borders on opaque phrasing.

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?

For a read-only tool with strong annotations and no output schema, the description covers scope and filtering reasonably well. It is incomplete on the undocumented parameter set, which an agent needs in order to call it correctly with owner/number/itemId.

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

Parameters2/5

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

Schema description coverage is 0% and there are four parameters (owner, number, itemId, first) that the description never explains. It does not say what itemId vs number mean, nor that 'first' is a page-size bound with a default of 50 and max of 100, so the description fails to compensate for the coverage gap.

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 (Read) and a specific resource (native parent, sub-issue, blocks and blocked-by relationships for a GitHub Issue item in a Project). The closing clause explicitly distinguishes it from a close sibling, get_blockers, which most agents would otherwise confuse it with.

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?

Usage is implied by the stated scope (fetching relationships for one item), and a negative boundary is given ('does not mutate GitHub'). However, there is no explicit when-to-use guidance versus alternatives such as get_blockers or the add/remove relationship tools, so the agent must infer the routing from the purpose sentence.

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

get_github_project_snapshotC
Read-onlyIdempotent

Return a normalized snapshot of an authorized Project for AI team-state analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered externally. The description adds only two small pieces of context: that the project must be 'authorized' (auth requirement) and that output is 'normalized'. Nothing is said about volume, pagination, or freshness.

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?

A single front-loaded sentence with no filler or redundancy. It is efficiently sized, though brevity here borders on under-specification rather than tight editing.

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

Completeness2/5

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

There is no output schema and 0% parameter documentation, so the description carries the full burden of explaining what a 'snapshot' contains and how owner/number/first scope it — and it does neither. An agent cannot predict the response shape or pagination behavior from this definition.

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

Parameters1/5

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

Schema description coverage is 0% across three parameters (owner, number, first), and the description supplies no parameter meaning whatsoever. It never explains what owner/number identify or that 'first' caps item count at 100, so an agent must guess from property names alone.

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 ('Return') and resource ('snapshot of an authorized Project'), so an agent can tell it is a read of project state. However, 'normalized snapshot' is vague about what data is returned, and the description does nothing to distinguish it from the sibling get_github_project or get_github_project_brief_context.

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?

No when-to-use guidance and no named alternatives are given; the sibling set contains several overlapping project-read tools (get_github_project, get_github_project_brief_context) that the description never routes between. 'for AI team-state analysis' gestures at a purpose but does not specify a selection condition.

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

get_identity_contextA
Read-onlyIdempotent

Return the current authenticated operator identity, role, permissions, and Project memberships without exposing access codes, bearer tokens, or secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds valuable context beyond annotations by promising that access codes, bearer tokens, and secrets are not exposed, and by listing the identity fields returned.

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?

The description is a single front-loaded sentence that states the return contents first, then the security caveat. Every phrase earns its place, with no redundant or filler text.

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 simple zero-parameter read tool with full annotation coverage and no output schema, the description gives the essential return categories and a redaction guarantee. It could be slightly more complete by indicating the shape or format of the returned identity context, but it is sufficient for correct invocation.

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 has zero parameters, so the baseline is 4. No parameter semantics need explaining, and the empty input schema is fully consistent with the description.

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 'Return' and names the exact resource: current authenticated operator identity, role, permissions, and Project memberships. No sibling tool provides identity context, so it is clearly distinguishable from the GitHub project and work-item tools.

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?

Usage is implied rather than stated: an agent can infer this tool is for checking the current user's identity and permissions. There are no explicit when-to-use or when-not-to-use instructions, and no alternatives are named, but with no overlapping sibling tool the guidance is minimally adequate.

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

get_my_workB
Read-onlyIdempotent

Return work assigned to the authenticated GitHub identity. The optional login is accepted only as a compatibility assertion and cannot override authenticated identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
loginNo
ownerYes
numberYes
includeDoneNo
includeArchivedNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive safety profile, so the description's real contribution is the semantic constraint that 'login' is a compatibility assertion that cannot override the authenticated identity. That is genuinely useful behavioral context an agent could otherwise get wrong.

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 tightly written sentences with the identity scoping front-loaded and no filler. It is efficient, though the extreme brevity is partly a consequence of the under-specified parameters rather than deliberate economy.

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, so the description should carry more of the load; it clarifies identity semantics well but leaves the required owner/number parameters and the result contents unexplained. Adequate for identity scoping, incomplete for invocation.

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

Parameters2/5

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

Schema description coverage is 0% and six parameters exist, yet the description only addresses one of them ('login'). The required owner/number and the pagination/filter parameters (first, includeDone, includeArchived) get no explanation in either the schema or the description, which is a substantial gap.

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 ('Return') and resource ('work assigned to the authenticated GitHub identity'), which distinguishes it from siblings like get_unassigned_work, get_review_queue, and get_blockers. 'Work' remains slightly abstract (items? issues? PRs?), 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?

The description implies the usage context (fetching the caller's own assigned work) but never states when to choose this over get_unassigned_work or get_blockers, nor any prerequisites. Usage is inferable rather than explicit.

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

get_project_briefC
Read-onlyIdempotent

Return a concise evidence-backed Project operating brief with status/priority counts, in-progress work, review queue, unassigned work, and explicit blockers.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes
includeArchivedNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds that the brief is "evidence-backed" and itemizes its sections, which is useful context, but says nothing about pagination via `first`, auth requirements, or freshness/staleness of the aggregates.

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?

A single dense sentence that front-loads the verb and resource before listing the brief contents; no filler or repetition. It is appropriately sized, though the content list is somewhat packed and would read better split from the transactional framing.

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

Completeness2/5

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

For an aggregate read tool with four undocumented parameters, no output schema, and no usage routing, the description leaves out critical invocation details. An agent cannot determine valid owner/number formats, how `fix`/`first` affects results, or how this brief relates to the more granular sibling tools that produce the same sections.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters: owner, number, first (default 100, max 100), and includeArchived. The description never explains that owner/number identify the target project, that `first` caps how many items feed the brief, or what includeArchived does. With no schema text to fall back on, the description fails to compensate for the coverage gap.

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 gives a specific verb ("Return") and a concrete resource ("Project operating brief") and enumerates what the brief contains (status/priority counts, in-progress work, review queue, unassigned work, blockers), which lets an agent distinguish it from generic siblings like get_github_project_snapshot. However it never differentiates itself from close siblings such as get_github_project_brief_context, get_review_queue, get_unassigned_work, and get_blockers, whose outputs it overlaps.

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 guidance, no when-not-to-use, and no mention of alternatives. An agent can only infer that this is an aggregate read because of the content enumeration; nothing tells it to prefer this over the individual review-queue/unassigned/blocker tools or vice versa.

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

get_project_changesC
Read-only

Compare the current Project snapshot with the latest configured checkpoint baseline and return semantic change groups without replacing that baseline. Production may use durable M10 persistence; local development may remain process-local. Can initialize a missing baseline explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes
initializeIfMissingNo

TDQS

C2.7/5.0
Behavior1/5

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

The description explicitly claims a write capability: 'Can initialize a missing baseline explicitly,' and notes durable M10 persistence in production where initialization would write state. This conflicts with the annotation readOnlyHint=true, which promises no environment modification. This is an annotation contradiction, which caps this dimension at 1 despite the otherwise useful persistence/baseline context.

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?

Three sentences, front-loaded with the core compare operation. The 'Production may use durable M10 persistence; local development may remain process-local' sentence is environment-implementation detail that adds little to tool selection and pads the definition.

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?

There is no output schema and 0% parameter documentation, so the description should carry more of the burden. It covers purpose and baseline behavior but omits return shape, pagination (the 'first' cap of 100), and the semantics of the required owner/number identifiers.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters. The description only partially illuminates one parameter ('Can initialize a missing baseline explicitly' for initializeIfMissing); owner, number, and first carry no explanation in either the schema or the description.

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: 'Compare the current Project snapshot with the latest configured checkpoint baseline and return semantic change groups.' This clearly conveys a diff/compare operation. However, it does not distinguish itself from the closely named sibling compare_github_project_state_checkpoint, leaving some ambiguity about which to pick.

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?

'Without replacing that baseline' implies the tool is for read-only diffing, and 'Can initialize a missing baseline explicitly' hints at the initializeIfMissing condition. But it never names an alternative tool or states when NOT to use this one, so routing guidance 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_review_queueC
Read-onlyIdempotent

Return items whose Project Status is explicitly In Review.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes
includeArchivedNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds one real behavioral nuance — items count only if their status is "explicitly" set, implying inferred/derived statuses are excluded. It says nothing about pagination (first defaults to 100, max 100) or what includeArchived changes.

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?

A single front-loaded sentence with no filler or repetition. It is efficient, though the extreme brevity is part of why other dimensions are starved.

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

Completeness2/5

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

For a four-parameter query with 0% schema description coverage and no output schema, one sentence is not enough. An agent cannot learn pagination limits, archive behavior, or the meaning of owner/number from this definition.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters, so the description carries the burden and fails: owner, number, first, and includeArchived are never mentioned. At best the phrase "items" weakly implies the owner/number project coordinates, but there is no explanation of pagination or archive inclusion.

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 ("Return") plus the exact filter that defines the result set ("Project Status is explicitly In Review"), which distinguishes it from queue-like siblings such as get_blockers, get_unassigned_work, and get_backlog. It stops short of naming an alternative, so it is clear but not sibling-routing.

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 get_my_work, get_backlog, get_blockers, or list_github_project_items. Usage is only inferable from the filter phrase, and no prerequisites or exclusions are given.

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

get_unassigned_workB
Read-onlyIdempotent

Return non-completed Project items with no repository or Project assignee evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes
includeArchivedNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds the meaningful scoping rule (excludes completed items and anything with assignee evidence), but says nothing about pagination, result size, or what 'evidence' means operationally.

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 tight sentence, front-loaded with the return scope and no filler. Every word carries meaning.

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

Completeness2/5

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

For a 4-parameter tool with no output schema and no parameter documentation, the description leaves required inputs (owner, number) and the includeArchived/pagination behavior unexplained. It defines the result set but not how to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters. The description explains none of them: owner, number, first (pagination cap), and includeArchived are left entirely to type/default inference, so it fails to compensate for the coverage gap.

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?

Names a specific retrieval action and its exact filter: non-completed Project items lacking repository or Project assignee evidence. This distinguishes it from get_my_work, get_backlog, and list_github_project_items, though it never explicitly says so.

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 filter semantics imply the use case (find orphaned/unassigned work), but there is no explicit when-to-use statement or named alternative among the many sibling list/get tools. Usage must be inferred from the filter definition.

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

list_github_project_fieldsB
Read-onlyIdempotent

List fields, single-select options, multi-select options, and iterations configured on an authorized GitHub Project v2.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
numberYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context by naming the 'authorized' access requirement and enumerating what the read exposes (options and iterations, not just fields), but says nothing about pagination, limits, or failure 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?

A single dense sentence with the resource scope front-loaded and no filler. It is efficient, though it spends words enumerating field types where a short clause on parameters would have paid off more.

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?

There is no output schema, and the description only partially compensates by listing the categories of configuration returned. It omits the two required parameters and any notion of return shape or ordering, leaving gaps for a tool whose whole job is to reveal project configuration.

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

Parameters2/5

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

Schema description coverage is 0% and both parameters (owner, number) are required, yet the description never mentions them. It leaves unresolved whether 'owner' is a user or organization login and what 'number' refers to (project number vs. node id), which are the exact ambiguities that block a correct call.

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?

Specific verb (List) plus a precisely enumerated resource (fields, single-select options, multi-select options, iterations) scoped to a GitHub Project v2. An agent can distinguish this from list_github_projects (projects) and list_github_project_items (items) without opening the schema, though 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 Guidelines2/5

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

No when-to-use guidance, no stated prerequisites beyond the vague phrase 'authorized GitHub Project v2', and no named alternatives. The agent must infer that this is a discovery/configuration-read step rather than an item-listing or mutation step.

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

list_github_project_itemsB
Read-onlyIdempotent

List issues, pull requests, draft issues, assignees, and field values in an authorized GitHub Project v2.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes
numberYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is covered. The description adds only the note that the project must be 'authorized', and omits pagination behavior despite a 'first' parameter, which the annotations do not cover.

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?

A single tight sentence with the returned entities front-loaded. Efficient, though its brevity is part of why usage and parameter guidance are absent.

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 is needed for a read-only list tool and annotations cover safety, but the description leaves parameter formats and pagination unexplained. It is minimally adequate for a list operation but misses context an agent needs to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters (owner, number, first). The description adds no meaning for any of them — no format for owner, no explanation of number, and no disclosure that 'first' controls pagination/batch size.

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?

Specific verb 'List' paired with a well-defined resource set (issues, pull requests, draft issues, assignees, field values) scoped to an authorized GitHub Project v2. An agent can distinguish it from list_github_projects and list_github_project_fields, though it never names a sibling 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?

The description states what the tool returns but gives no when-to-use guidance, no prerequisites, and no alternatives (e.g. resolve_github_project_item or get_github_project_snapshot). Selection must be inferred entirely from the name.

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

list_github_projectsB
Read-onlyIdempotent

List GitHub Projects v2 visible to the authenticated principal within the server owner/Project allowlists.

ParametersJSON Schema
NameRequiredDescriptionDefault
firstNo
ownerYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered structurally. The description adds the allowlist/principal-scoping constraint, which is genuine behavioral context, but says nothing about pagination behavior, access failures for non-allowlisted owners, or result shape.

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 front-loaded sentence with no filler; the scope qualifier follows the core verb+resource immediately.

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

Completeness2/5

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

With 0% parameter description coverage, no output schema, and a dense sibling ecosystem, the definition omits owner format, pagination semantics, and return shape. For a list tool in this context it is under-specified beyond the surface purpose.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden but adds none: it never explains that 'owner' is a user/org login identifier nor that 'first' is a page-size cap (default 20, max 100). The one clause about allowlists loosely constrains the owner parameter but not clearly enough to compensate.

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 ('List'), resource ('GitHub Projects v2'), and visibility scope ('visible to the authenticated principal within the server owner/Project allowlists'). This distinguishes it from siblings such as list_github_project_items and list_github_project_fields, though it never names those siblings 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 guidance on when to use this versus get_github_project (single project) or the list_github_project_items/list_github_project_fields siblings. The allowlist mention hints at scope but gives no when/when-not or alternative-routing instructions.

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

list_github_project_write_audit_logA
Read-onlyIdempotent

List recent bounded GitHub Project write audit records. Production uses the configured durable M10 governance store; local development may remain process-local. Records contain metadata, actor identity, and verification results, not tokens or raw mutation payloads.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
itemIdNo
projectIdNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive/closed-world, so the bar is lower, yet the description still adds real value: the production-vs-local persistence caveat warns that records may be process-local and thus incomplete, and it discloses what records do and do not contain (metadata, actor, verification results; no tokens or raw payloads). Only the 'bounded' size and ordering semantics are left vague.

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 tight sentences, front-loaded with purpose and then layering storage and content caveats. Slight cost from opaque jargon like 'M10 governance store', but nothing is redundant.

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?

With no output schema, the description usefully sketches the record shape, but it omits filtering behavior, default/max limit behavior, and ordering, which matter for a list tool with an optional itemId filter. Sufficient to understand intent, not quite sufficient to call it confidently.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, so the description must carry the meaning and largely fails: 'bounded' hints at limit, and 'GitHub Project' weakly implies projectId, but itemId filtering is never mentioned and neither is the default of 50 or max of 200. This is the definition's principal gap.

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 ... GitHub Project write audit records') and scopes it with 'recent bounded'. No sibling covers audit records, so an agent can distinguish this from the list_/get_/analyze_ project tools immediately.

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?

Usage is implied – an audit-trail reader for project mutations – but there is no explicit statement of when to reach for this versus the state/checkpoint or changes tools, and no exclusions. Adequate but leaves the routing decision to inference.

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

preview_github_project_bulk_updatesA

Create an immutable, expiring M10-5 preview for 1-20 Status/Priority updates in one authorized Project. This performs reads and stores a plan but never mutates GitHub.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
numberYes
operationsYes

TDQS

A3.6/5.0
Behavior4/5

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

Adds real context beyond the annotations: annotations give readOnlyHint=false and destructiveHint=false, and the description clarifies that despite writing a stored plan it 'never mutates GitHub', plus that the preview is 'immutable' and 'expiring'. That reconciles the non-readOnly hint with actual behavior. It does not state auth requirements or how long the preview lasts.

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 no filler; constraints (scope, cardinality, non-mutation) come early. The opaque 'M10-5' tag arguably does not earn its place, slightly weakening an otherwise tight sentence.

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?

There is no output schema, so the description should tell the agent what the preview returns and how to consume it (e.g., a plan handle to pass to approve/apply). Saying it 'stores a plan' gestures at this but never names the handoff, leaving a meaningful gap for a tool whose whole purpose is to precede a mutation.

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 0% schema description coverage, the description must carry the burden, and it partially does: '1-20' maps to the operations minItems/maxItems, 'Status/Priority' maps to the field enum, and 'one authorized Project' covers owner+number. However, itemId and value semantics remain entirely unexplained in both schema and description.

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 (Create) and a well-scoped resource (an immutable, expiring preview for 1-20 Status/Priority updates in one Project), so the agent knows exactly what it produces. The 'M10-5' token is opaque internal jargon and the description never names the sibling it feeds into (approve/apply_github_project_bulk_plan), so sibling differentiation is only implied by the word 'preview'.

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?

Usage is implied — the word 'preview' and 'stores a plan but never mutates' suggest this is a pre-flight step before apply_github_project_bulk_plan — but no alternative is named and no explicit when/when-not condition is given. The agent must infer the preview→approve→apply sequence from sibling names alone.

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

remove_github_project_blocked_byA
DestructiveIdempotent

Remove source's blocked-by relationship to target. Single relationship only. Both Issue items must belong to the same authorized Project. Requires an authenticated actor with project.write and item.relationship.write plus the global write gate. Re-reads both directions and persists audit, including no_change. Do not retry failures automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
numberYes
sourceItemIdYes
targetItemIdYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond annotations: it discloses required scopes (project.write, item.relationship.write), the global write gate, that it re-reads both directions, persists an audit record including no_change, and that failures should not be auto-retried. These are exactly the behavioral traits annotations alone (destructive/idempotent/openWorld) don't convey.

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?

Dense but front-loaded: the core action leads, followed by scope, preconditions, side effects, and retry guidance. Every sentence carries distinct information with no filler.

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 destructive, no-output-schema mutation tool, the description covers action, preconditions, side effects, and failure handling well. The only gap is that none of the four parameters are explained, which matters given 0% schema coverage.

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

Parameters2/5

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

Schema coverage is 0% with 4 required params. The description hints at source/target semantics via 'source's blocked-by relationship to target,' but owner and number are completely undocumented, and there is no format guidance for sourceItemId/targetItemId. It fails to compensate for the zero coverage.

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+resource: 'Remove source's blocked-by relationship to target.' This clearly distinguishes it from the sibling add_github_project_blocked_by. An agent can identify the operation 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 Guidelines4/5

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

Provides clear preconditions: both items must belong to the same authorized Project, requires an authenticated actor with specific scopes plus a global write gate, and 'do not retry failures automatically.' It doesn't explicitly name the add_ sibling as the inverse alternative, but the usage context is well constrained.

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

remove_github_project_sub_issueA
DestructiveIdempotent

Remove target from source's sub-issues. Does not delete either Issue. Single relationship only. Both Issue items must belong to the same authorized Project. Requires an authenticated actor with project.write and item.relationship.write plus the global write gate. Re-reads both directions and persists audit, including no_change. Do not retry failures automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
numberYes
sourceItemIdYes
targetItemIdYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint, idempotentHint, etc.): clarifies that neither Issue is deleted, that only a single relationship is affected, that it re-reads both directions, that it persists an audit record including no_change, and that automatic retries are discouraged. This is exactly the extra context a mutation tool needs.

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?

Purpose is front-loaded, followed by scope, constraints, and warnings. Every sentence carries information, though the density is high and could be slightly better segmented for scanning.

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 destructive, no-output-schema tool it covers the essentials: side effects, permission requirements, idempotency-aware audit behavior, and retry policy. Only the parameter-level detail is thin, which is a minor gap given the rich behavioral coverage.

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 0%, so the description must compensate. It conveys the source/target semantics that map to sourceItemId and targetItemId and implies owner/number via 'authorized Project', but gives no format, identifier, or validation detail for the four required params.

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 ('Remove') and resource ('target from source's sub-issues'), and immediately delimits scope with 'Does not delete either Issue. Single relationship only.' This clearly distinguishes it from siblings like add_github_project_sub_issue and remove_github_project_blocked_by.

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?

Provides strong operational context: both items must belong to the same authorized Project, and it warns 'Do not retry failures automatically.' It stops short of explicitly naming alternatives or stating when to prefer this over other relationship tools, but the preconditions are clear.

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

resolve_github_issue_or_pr_urlB
Read-onlyIdempotent

Resolve an allowed github.com Issue or Pull Request URL to its GraphQL content node ID and canonical metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds the behavioral fact that the URL must be an 'allowed' github.com URL and describes the transformation (URL to node ID + metadata), which is useful context, but it omits what happens for disallowed/malformed URLs.

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 front-loaded sentence with no filler. The verb and scope are established immediately and nothing is redundant.

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 carries the return-value burden and does so by naming the node ID and canonical metadata. Annotations cover safety, so the main residual gap is error/allowlist behavior for a 1-param resolver.

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 0% on a single parameter, so the description must compensate. It clarifies that the input is a github.com Issue or PR URL (narrowing beyond the generic string/uri schema) and must be 'allowed', but it never defines the allowlist rule or accepted URL forms.

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 (resolve) and resource (github.com Issue or Pull Request URL) plus the precise output (GraphQL content node ID and canonical metadata). It doesn't explicitly distinguish itself from the sibling resolve_github_project_item, so it falls short of a 5, but the name and description make the scope clear.

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?

The description gives no when-to-use guidance, no mention of the alternative resolve_github_project_item, and no conditions under which this is preferred. 'Allowed' hints at a constraint but no caller-facing usage rule is stated.

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

resolve_github_project_itemA
Read-onlyIdempotent

Resolve an allowed GitHub Issue or Pull Request URL to the matching item in an authorized GitHub Project, following Project item pagination when needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
projectOwnerYes
projectNumberYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond the annotations: it limits input to 'allowed' URLs and 'authorized' Projects and discloses that Project item pagination is followed when needed.

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?

The description is a single front-loaded sentence with no filler. Every element — verb, input type, target resource, authorization constraint, and pagination behavior — 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 read-only resolution tool with rich annotations and no output schema, the description covers purpose, authorization boundaries, and pagination behavior. It could be more complete by noting what happens when no matching item is found or when the URL is not allowed, but the core operational context is present.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the burden for all three required parameters. It refers generically to a URL and an authorized Project, but does not explain projectOwner versus projectNumber, nor clarify URL format expectations beyond the schema's uri type.

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: resolving a GitHub Issue or Pull Request URL to the matching item in a GitHub Project. It distinguishes the operation from generic URL resolution by specifying the Project item target, though it does not explicitly name a sibling alternative.

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 description implies when the tool is useful — when you have an allowed Issue or PR URL and need the corresponding Project item. However, it gives no explicit when-not guidance and does not contrast itself with the closely named sibling resolve_github_issue_or_pr_url, leaving the selection context only partially specified.

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

start_workB
Idempotent

Move one authorized GitHub Project work item to the exact 'In Progress' Status using the same Shared Core write path.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
itemIdYes
numberYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare it non-destructive, idempotent, and open-world, so the safety profile is covered. The description adds that exactly one item is affected and that it targets the literal 'In Progress' status, plus an authorization caveat ('authorized'), but says nothing about failure when unauthorized or the effect on the Shared Core write path.

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?

It is a single front-loaded sentence, which is good, but the trailing clause 'using the same Shared Core write path' is internal jargon that adds no actionable meaning and does not earn its place.

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

Completeness2/5

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

For a mutation tool with no output schema, 0% parameter coverage, and only annotations for safety, the description should carry more: it omits what the write returns, error/authorization behavior, and what the three identifiers mean. The definition is too thin for the tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0% across three required parameters (owner, itemId, number), so the description must compensate and does not. It only vaguely implies 'a GitHub Project work item' without mapping any parameter to owner/itemId/number or giving formats.

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 target state ('Move one ... work item to the exact \'In Progress\' Status') on a concrete resource (GitHub Project work item). The purpose is unambiguous, but it never distinguishes itself from the near-identical sibling update_github_project_item_status, 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?

Usage is only implied: the agent can infer this is for starting work / marking an item In Progress. There is no explicit when-to-use vs update_github_project_item_status or update_work_item_status, and no exclusions or prerequisites, leaving the routing decision to inference.

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

update_github_project_item_fieldA
Idempotent

Update one text, number, date, single-select, multi-select, or iteration field on an authorized Project v2 item. Disabled by default and requires an explicit Project allowlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
itemIdYes
fieldIdYes
projectIdYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=true). The description adds non-obvious operational context the annotations do not carry: the tool is disabled by default and requires an explicit Project allowlist, and it writes exactly one field per call. It stops short of describing failure modes or what non-target fields are left untouched.

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, no filler, with the scope of the mutation front-loaded and the enablement caveat immediately after. 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 mutation tool with no output schema and a mutually exclusive nested value object, the description covers the essentials: what gets written, the accepted value shapes, and the allowlist gate. Remaining gaps are the ID semantics for the three required identifiers and confirmation of whether multiple value branches may be combined.

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 0% across four required parameters and a six-branch nested value object, so the description carries real weight here. Its list of field types (text, number, date, single-select, multi-select, iteration) maps usefully onto the value object's keys, but projectId/itemId/fieldId are never explained (ID format, source of the IDs) and the one-key-per-call constraint on value is only implicit in "one ... field".

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 gives a specific verb (Update) plus resource (one field on a Project v2 item) and enumerates the field types it handles, which is more precise than a generic "update project item". It does not explicitly name its near siblings (update_github_project_item_status, update_github_project_item_priority), so an agent must infer the split from the field-type list rather than being routed.

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?

Usage is only implied: the field-type enumeration suggests this tool is the generic escape hatch when a dedicated sibling (status/priority) does not apply, but that is never stated. The availability precondition ("Disabled by default and requires an explicit Project allowlist") is a real gating signal but not an alternative-selection rule.

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

update_github_project_item_priorityB
Idempotent

Compatibility alias for the semantic Priority write path. Safely sets one item's exact Priority option by name with authorization, idempotency, verification, and actor-aware audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
itemIdYes
numberYes
priorityYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false. The description usefully adds that the write involves authorization, verification, and an actor-aware audit trail—genuine behavioral context beyond the structured hints, though delivered as a keyword list rather than specifics.

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?

Two sentences that are reasonably front-loaded with the alias/compatibility role, but the second sentence is a dense pile of buzzwords ('semantic', 'actor-aware audit') that crowds out actionable detail.

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

Completeness2/5

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

A four-required-parameter mutation with no output schema and 0% schema description coverage needs the description to explain the parameters and expected behavior; instead it explains none of them and only alludes to verification/audit outcomes.

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

Parameters2/5

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

Schema description coverage is 0% across all four required parameters (owner, number, itemId, priority), so the description carries the full burden. It only hints that priority is an exact option 'by name' and says nothing about owner, number, itemId, or accepted values, leaving most parameters undocumented.

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?

It states a clear verb (sets) and resource (one item's exact Priority option), and the word 'Priority' distinguishes it from sibling update_github_project_item_status. However, 'Compatibility alias for the semantic Priority write path' is opaque jargon that doesn't tell the agent what it aliases, adding noise rather than clarity.

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?

'Compatibility alias' implies a backward-compatibility use case, which is a weak usage signal. It never says when to choose this over update_work_item_priority or update_github_project_item_field, so the agent must infer precedence among several Priority-writing siblings.

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

update_github_project_item_statusB
Idempotent

Compatibility alias for the semantic Status write path. Safely sets one item's exact Status option by name with authorization, idempotency, verification, and actor-aware audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
itemIdYes
numberYes
statusYes

TDQS

B3/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's mention of "idempotency" is largely redundant. It does add useful context beyond the structured data: authorization is required, the write is verified, and there is an actor-aware audit trail. That is meaningful for a mutation tool, but verification and audit are asserted without detail on how they surface.

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 tight sentences with the behavioral guarantees front-loaded after the alias definition. No filler, though the phrase "compatibility alias for the semantic Status write path" is jargon that costs a small amount of clarity.

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?

For a mutation tool whose annotations already cover safety and idempotency, the description adds authorization, verification, and audit context. However, with no output schema and zero parameter coverage, an agent still lacks any indication of what owner/number/itemId reference or what a successful call confirms.

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

Parameters2/5

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

Schema description coverage is 0% across four required parameters, so the description carries the full burden. It clarifies that "status" is an option set by name, but owner, number, and itemId are entirely undocumented and their meaning must be inferred from the name alone.

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 gives a specific verb and resource: it "sets one item's exact Status option by name," and labels itself a compatibility alias for the semantic Status write path. This distinguishes it from the sibling field/priority writers, though it never names which tool it aliases, so the differentiation stays implicit.

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?

"Compatibility alias for the semantic Status write path" hints that a preferred alternative exists but does not say when to use this tool versus update_github_project_item_field, update_work_item_status, or its canonical counterpart. No prerequisites, no exclusions, no context beyond the alias framing.

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

update_work_item_priorityC
Idempotent

Semantically update one authorized GitHub Project work item's Priority by exact option name. Uses Shared Core authorization, idempotency, verification, and actor-aware audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
itemIdYes
numberYes
priorityYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, so mentioning 'idempotency' adds no new information. It does add useful context beyond annotations – authorization requirement ('one authorized'), verification, and actor-aware audit – but 'Shared Core' is unexplained jargon the agent cannot act on.

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?

A single front-loaded sentence that states the action first and the supporting mechanisms second. Efficient, though the trailing 'Shared Core authorization, idempotency, verification, and actor-aware audit' list is dense jargon.

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

Completeness2/5

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

A mutation tool with no output schema and 0% schema coverage needs more: the four required parameters are largely undefined, the exact-option-name format and project/owner conventions are not specified, and the mechanism for choosing this tool over its duplicate sibling is absent. Annotations cover the safety profile but not the operational details.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all four parameters. It clarifies only that priority must be an exact option name; owner, number, and itemId (all required) receive no semantic explanation whatsoever.

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: updating one GitHub Project work item's Priority field. The qualifiers 'semantically' and 'by exact option name' narrow intent, but with a near-identical sibling (update_github_project_item_priority) present, the description offers no differentiation between the two, leaving ambiguity about which twin to call.

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?

No when-to-use context, no prerequisites, and no guidance on choosing between this tool and its confusingly similar sibling update_github_project_item_priority. Only the scope constraint 'one ... work item' hints at usage.

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

update_work_item_statusB
Idempotent

Semantically update one authorized GitHub Project work item's Status by exact option name. Uses Shared Core authorization, idempotency, verification, and actor-aware audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYes
itemIdYes
numberYes
statusYes

TDQS

B3/5.0
Behavior4/5

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

Annotations already declare write, idempotent and non-destructive, so the description's restatement of idempotency adds nothing. It does earn credit for going beyond them by disclosing Shared Core authorization, built-in verification, and actor-aware audit — behavior an agent would otherwise not know.

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 tight sentences, front-loaded with the operation and its scope. Only mild waste in the jargon stack ('Shared Core', 'semantically'), which costs a point but not readability.

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?

For a mutation tool with no output schema and zero parameter coverage, the description covers the behavioral contract (auth, idempotency, verification, audit) reasonably but leaves critical call details unexplained: how to obtain a valid status option name, what owner/number/itemId identify, and how this differs from the near-identical sibling status tool.

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

Parameters2/5

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

Schema coverage is 0% across 4 required parameters, so the description must carry the load. 'By exact option name' usefully explains the status parameter (matching the field's option name, which matters because there are no enums), but owner, number and itemId are left entirely undocumented.

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

Purpose3/5

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

The verb+resource are stated specifically: updating one GitHub Project work item's Status field. However, the sibling set contains both 'update_github_project_item_status' and 'update_github_project_item_field', and the description offers no way to tell this tool apart from them; the 'Semantically' qualifier is jargon that does not clarify the distinction.

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?

The phrase 'one authorized ... work item' weakly signals single-item (not bulk) use, but there is no explicit when-to-use, when-not-to-use, or named alternative such as 'update_github_project_item_field' or the bulk-plan tools. The agent must infer scope from a single adjective.

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. 40 tool updatesv0.2.0
    • First observedadd_github_project_blocked_by
    • First observedadd_github_project_item
    • First observedadd_github_project_sub_issue
    • First observedanalyze_github_project_reconciliation
    • First observedanalyze_github_project_state_gaps
    • First observedapply_github_project_bulk_plan
    • First observedapprove_github_project_bulk_plan
    • First observedassign_work_item
    • First observedcapture_backlog
    • First observedcompare_github_project_state_checkpoint
    • First observedcreate_github_project_state_checkpoint
    • First observedcreate_work_item
    • First observedget_backlog
    • First observedget_blockers
    • First observedget_github_project
    • First observedget_github_project_brief_context
    • First observedget_github_project_bulk_plan
    • First observedget_github_project_item_relationships
    • First observedget_github_project_snapshot
    • First observedget_identity_context
    • First observedget_my_work
    • First observedget_project_brief
    • First observedget_project_changes
    • First observedget_review_queue
    • First observedget_unassigned_work
    • First observedlist_github_project_fields
    • First observedlist_github_project_items
    • First observedlist_github_project_write_audit_log
    • First observedlist_github_projects
    • First observedpreview_github_project_bulk_updates
    • First observedremove_github_project_blocked_by
    • First observedremove_github_project_sub_issue
    • First observedresolve_github_issue_or_pr_url
    • First observedresolve_github_project_item
    • First observedstart_work
    • First observedupdate_github_project_item_field
    • First observedupdate_github_project_item_priority
    • First observedupdate_github_project_item_status
    • First observedupdate_work_item_priority
    • First observedupdate_work_item_status

TDQS

C2.8/5.0

Scored across 40 tools

Disambiguation2/5

Several tools overlap heavily, especially compatibility aliases (update_github_project_item_status vs update_work_item_status, and similarly for priority) and multiple project-state readers (get_github_project_snapshot, get_github_project_brief_context, get_project_brief, get_project_changes). An agent could easily misselect among resolution, snapshot, and brief tools.

Naming Consistency3/5

All names use snake_case, but the surface mixes prefixed (github_project) and unprefixed (work_item, project_brief) conventions, and includes explicit alias pairs. This remains readable but not fully predictable.

Tool Count2/5

40 tools is heavy for a GitHub Projects MCP, with bulk operations, audit logging, and multiple analysis layers. Each earns some place, but the count is well above a well-scoped 10–15 tool surface.

Completeness3/5

Core read, write, relationship, bulk, and analysis coverage is strong, but notable lifecycle gaps remain: no remove/delete Project item, no Project or field creation/mutation beyond item fields, and no draft issue creation. Agents can cover many workflows but will hit dead ends for cleanup and schema changes.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    B
    maintenance
    A policy-aware MCP server for GitHub and GitHub Actions that enables safe AI-assisted infrastructure workflows—inspecting repositories, preparing branches and pull requests, and constrained remote mutations behind explicit preview-bound approval tokens.
    18
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    A security-first MCP gateway that enables AI assistants to safely inspect and interact with GitHub repositories through a controlled, auditable tool layer with policy enforcement and human approval for mutations.
    27
    MIT