Three well-named tools with clear descriptions and complete input schemas. Tool names follow verb_noun convention (search_actions, execute_read_action, execute_write_action). All parameters have type definitions and descriptions. Org parameter is well-documented with explicit guidance on when it's required. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no guidance on recovery paths or retryability. Missing idempotency declarations on write operations.
Execute a read-only (GET) Kosli API action by its ID with the given parameters. Use search_actions first to find the action ID and required parameters. Set 'org' to say which organization the call runs against; there is no default.
Execute a write (POST, PUT, PATCH, DELETE) Kosli API action by its ID with the given parameters. Use search_actions first to find the action ID and required parameters. Set 'org' to say which organization the write lands in; there is no default, so check it before approving.
Search for available Kosli API actions by natural-language query. Returns matching actions with their IDs, descriptions, and parameter schemas. Use this to discover what actions are available before calling execute_read_action or execute_write_action.
Output schemas not documented. LLMs cannot predict response structure or plan downstream tool calls. search_actions returns 'matching actions with their IDs, descriptions, and parameter schemas' but the exact JSON structure is not specified.
No error handling guidance. Tools do not document what errors are retryable, what errors require user intervention, or how to recover. E.g., 'actionId not found' or 'org required but missing' should guide the LLM to search_actions or ask the user.
execute_write_action lacks idempotency declaration. Destructive operations (POST, PUT, PATCH, DELETE) should document whether they are idempotent or require deduplication. Agents retry on ambiguous failures, non-idempotent tools risk duplicate side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
params parameter accepts arbitrary objects with no validation hints. LLMs cannot know what keys are valid, required, or what types they should hold. Consider documenting common param patterns or requiring search_actions first.
fields parameter (array of strings) lacks guidance on valid field names. LLMs will guess field names, causing silent failures or incomplete responses. Document available fields or reference the search_actions output.