22 tools with consistent verb_noun naming (kanka_list_*, kanka_get_*, kanka_create_*, kanka_update_*, kanka_delete_*). All tools have descriptions (10-80 chars, mostly adequate). Input schemas present for all tools with type definitions and parameter descriptions. However, descriptions are terse (avg ~40 chars vs baseline 194 chars), lack WHEN/WHY context, and omit dependency hints. Object parameters ('data' fields) lack nested schema documentation. Error handling guidance absent. No tool annotations (readOnlyHint, destructiveHint). Output schemas not documented in tool definitions.
Get the current authentication status
Create a new entity in a campaign
Create a new post (journal entry) for an entity
Create a new relation between entities
Delete an entity
Delete a post (journal entry)
Delete a relation
Object parameters ('data' fields in create/update tools) lack nested schema documentation. LLMs cannot infer valid field names or types for entity_data, post_data, or relation_data payloads.
Descriptions are terse (avg 40 chars vs baseline 194 chars) and lack WHEN/WHY context. E.g., 'Get the current authentication status' does not explain when to call it or what it returns. LLMs cannot distinguish between similar tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Destructive tools (delete_entity, delete_post, delete_relation) lack explicit marking. LLMs cannot distinguish safe reads from irreversible writes.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Get the schema for creating/updating a specific entity type
Get details of a specific campaign
Get a specific entity by entity_id (resolves to the correct type automatically)
Get a specific post (journal entry)
Get a specific relation
List all campaigns accessible to the authenticated user
List entities of a specific type in a campaign
List posts (journal entries) for an entity
List relations for an entity
Clear stored OAuth tokens
Authenticate via OAuth 2.0 flow
Search for entities in a campaign
Update an existing entity
Update an existing post (journal entry)
Update an existing relation
Output schemas not documented in tool definitions. LLMs do not know what fields to expect from list_campaigns, get_entity, or search results, forcing them to guess field names for downstream tool calls.
No error recovery guidance. Tools lack descriptions of failure modes, retryability, or next steps. E.g., 'Campaign not found' does not suggest calling list_campaigns to discover valid IDs.