A Go framework for building AI agents with tool use, multi-provider LLM support, and MCP (Model Context Protocol) integration
Graft has severe definition quality issues. Only 2 unique tools are actually defined (greet, lookup_weather, add); the other 4 entries are duplicates of 'greet'. Descriptions are minimal (10-30 chars, well below the 50-200 char baseline for LLM-optimized tools). Schemas are auto-generated from Go struct tags but lack explicit parameter descriptions in the schema itself. No output schemas documented. Error handling is present in the code but not surfaced in tool definitions. Tool names lack action verbs (greet is acceptable, but lookup_weather and add are generic). No evidence of pagination, batching, or composition patterns.
Add two numbers
Greet someone by name
Greet someone by name.
Greet someone by name
Greet someone by name.
Greet someone by name
Look up the weather for a city
Duplicate tool definitions: 'greet' appears 5 times in the tool list, indicating either a registration bug or test artifact pollution. This wastes schema space and confuses tool discovery.
Descriptions are too short (10-30 chars). Baseline for LLM-optimized tools is 50-200 chars. 'Greet someone by name' and 'Look up the weather for a city' lack context on WHEN to use these tools or what they return.
No output schemas documented. LLMs cannot plan downstream calls or extract results without knowing the return type structure. Tool definitions only show input schemas.
Parameter descriptions in schemas are minimal. 'The person's name' and 'The city to look up' are bare; they lack format hints, constraints, or examples of valid input.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Tool names lack action verbs. 'add' is generic (add what? to where?). 'lookup_weather' is acceptable but 'greet' is vague, does it send a message, return a greeting string, or log output?