A backend agent service with RAG capabilities, custom tool management, and MCP server integration. Provides FastAPI endpoints for document processing, appointment scheduling, and AI-powered chat with support for multiple LLM providers.
DosiBridge Agent CE defines two tools with partial schema coverage and inconsistent description quality. Tool 1 (retrieve_dosiblog_context) has a minimal, generic description (54 chars) that lacks context on when/why to use it or what it returns. Tool 2 (schedule_appointment_or_contact) has a more substantial description (82 chars) and richer parameter set with enums, but still lacks output schema documentation and detailed parameter format guidance. Both tools show basic structure but fall short of production-grade definition standards. Input schemas are partially visible (query/name/email/message present with type strings), but return types are undocumented, and parameter descriptions vary widely in quality. No error handling guidance, no confirmation patterns for the write operation, and no evidence of pagination or result limiting for the search tool.
Retrieves relevant context about DOSIBridge projects, services, and related topics.
Schedule an appointment or send a contact request to the DOSIBridge team.
retrieve_dosiblog_context: description is vague and generic (54 chars: 'Retrieves relevant context about DOSIBridge projects, services, and related topics'). Does not explain WHEN to call it, WHAT it searches, or what the response structure is. LLM cannot determine tool selection criteria.
No output/return schema documented for either tool. LLMs cannot plan downstream calls or extract field values if they don't know what the response contains. retrieve_dosiblog_context should document: does it return a list? A single context blob? What fields (title, description, url, confidence_score)?
schedule_appointment_or_contact performs a write operation (sends contact request, schedules appointment) but has no confirmation/dry-run pattern or explicit error recovery guidance. Tool description does not state that this modifies state or warn about irreversible consequences.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
retrieve_dosiblog_context input schema shows only {query: string} but lacks constraints. No description of expected query format, length limits, or valid keywords. LLM may pass empty strings, 100+ char queries, or non-ASCII that breaks downstream search.
schedule_appointment_or_contact accepts optional 'preferred_date' and 'preferred_time' parameters with loose descriptions ('ISO format' and 'e.g. morning, afternoon...'). No guidance on what happens if preferred_date is in the past, or if time conflicts with availability. LLM must guess error handling.
Tool naming: 'schedule_appointment_or_contact' uses 'or' conjunction, signaling multiple responsibilities (scheduling vs sending contact request). Arcade patterns recommend splitting into two tools: 'schedule_appointment' and 'send_contact_request' so the agent can compose them independently.
Parameter descriptions for schedule_appointment_or_contact vary in specificity: 'name' is minimalist ('Contact person's name (required)'), while 'request_type' has an enum and description. Inconsistent description depth makes some params unclear. E.g., 'phone' says 'Optional phone number' but doesn't state format (E.164, (555) 123-4567, etc.).
retrieve_dosiblog_context: No pagination or result limiting documented. If the search returns 500+ context items, the response will bloat the context window. Baseline guidance suggests capping results at 20-50 items with pagination support.