A Dart/Flutter SDK for building AI applications with support for multiple LLM providers, tool calling, structured outputs, and agentic workflows
Two tools with minimal definitions. Both have basic schemas with single required string parameters, but descriptions are extremely terse (10-14 chars each, well below the 20-char minimum). No parameter descriptions provided. No output schemas documented. No error handling guidance. Tool names lack action verbs (getWeather, calculate are imperative but not verb_noun pattern). This is a basic example implementation, not production-grade tooling.
Evaluate a simple math expression (e.g. 2+3*4).
Get the current weather for a city.
Tool descriptions are critically short (10-14 chars). Rubric requires 20-1024 chars; descriptions under 20 chars must score 0-20. LLMs cannot determine when/why to select these tools.
No parameter descriptions provided. 'city' and 'expression' parameters lack context. Rubric requires every parameter to have a non-empty description explaining what it controls.
No output schemas documented. LLMs cannot plan downstream calls or extract data without knowing what fields to expect. Rubric requires documented return types for all tools.
No error handling guidance. If getWeather fails (invalid city, API down), the tool provides no recovery path. Rubric requires error responses to tell the LLM what to do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 28 | 2026-07-28+ | v2 |
Tool names do not follow verb_noun convention. 'getWeather' and 'calculate' are camelCase imperative; production tools use snake_case verb_noun (get_weather, evaluate_expression). Naming clarity is critical for LLM tool selection.