Standard-library CLI toolkit for GitHub Projects v2 CRUD operations with OAuth 2.0 support.
Server has 7 tools with consistent naming (verb_noun pattern: list_, create_, update_, archive_, link_) and descriptions present for all. However, parameter descriptions are generic and lack actionable constraints. Input schemas are visible but lack enums, ranges, and format specifications. Output is unstructured JSON strings rather than typed objects. No error recovery guidance. Missing tool annotations (readOnlyHint, destructiveHint). Baseline: 549 production tools average 18-char names (these are 18-24 chars, good); 100% of A+ tools have param descriptions (this server has them but they're minimal); 94% of A+ tools have docstrings (present here but brief).
Archive (soft-delete) an item from the project board.
Create a new draft item on a GitHub Project board.
Add an existing GitHub Issue to a project board.
Add an existing Pull Request to a project board.
List all fields available on a GitHub Project board.
List all items in a GitHub Project board.
Output is unstructured JSON string, not typed object. LLMs cannot parse field names reliably and waste tokens deserializing. Should return structured objects with explicit field types.
Parameter descriptions lack actionable constraints. 'owner_type' says '"org" or "user"' but not as enum; 'field_type' has no enum constraint; 'value' has no format guidance. LLMs hallucinate invalid values.
No error recovery guidance. Error responses are bare strings ('Error: {e}'). LLM cannot determine if error is retryable, user-fixable, or fatal. No actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Update a field on an existing project item.
Missing tool annotations. Destructive tools (archive_project_item, create_project_item, update_project_item_field, link_*) lack destructiveHint. Read-only tools (list_*) lack readOnlyHint. Agents cannot infer safety profile.
No pagination support. list_project_items and list_project_fields return all results as JSON string. Large boards will blow context window. Missing limit, offset, and total_count.