A Backend-For-Frontend demo whose aggregation logic serves both a web UI and an AI agent via MCP.
Single tool with minimal definition quality. Output schema is defined in code but not exposed in tool registration metadata. No parameter descriptions exist because there are no parameters. Tool naming is clear (get_profile, verb_noun pattern). Overall definition is sparse and would not meet production standards for agent tool composition.
Returns the aggregated user profile (name, location, joined/last-seen dates, and unread counts for messages, notifications, and friend requests) shaped by the BFF — the same data the web UI displays.
Input schema is empty object ({}). This prevents LLMs from understanding what parameters the tool accepts and blocks schema validation.
Output schema defined in code (profileOutputSchema) but not registered in tool metadata. Tool registration only includes outputSchema as a Zod object, not a documented JSON Schema. LLMs cannot see the output structure before calling the tool.
Tool description (194 chars) is adequate but lacks actionable context. Does not explain WHEN to call this tool vs alternatives, what prerequisites exist, or how the returned data should be used by the agent.
No error handling guidance. Tool returns structured content on success but provides no documentation of failure modes, error codes, or recovery steps for the LLM.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2025-06-18+ | v2 |
Single tool limits agent composition. A BFF should expose multiple granular tools (get_user, get_messages, get_notifications, get_friend_requests) so agents can compose them independently, not force a monolithic get_profile call.