Dubbl is an accounting and financial management MCP server that provides tools for bookkeeping, invoicing, reporting, and business operations management.
Dubbl demonstrates solid tool definition quality with well-structured schemas, clear naming conventions, and comprehensive parameter descriptions. All 10 tools follow verb_noun naming patterns (create_, list_, update_, delete_, trigger_). Input schemas are complete with proper type definitions and parameter descriptions. However, output schemas are not documented in the source code, error handling guidance is minimal, and there is no evidence of tool annotations (readOnlyHint/destructiveHint/idempotentHint) which would improve protocol alignment. The server shows strong fundamentals (naming, parameter constraints, enum usage) but lacks the polish of A-grade implementations.
Create an approval workflow with ordered steps. Each step specifies a member who must approve.
Create a scheduled report that will be emailed to recipients on a recurring basis. Requires a saved report ID.
Soft-delete an approval workflow.
Soft-delete a report schedule by ID. The schedule will no longer run but the record is preserved.
List approval requests, optionally filtered by entity type and/or status.
List approval workflows for the organization, optionally filtered by entity type.
Output schemas are not documented. Tools return structured data but the response shape (fields, types, pagination metadata) is not declared in the tool descriptions or visible schemas. LLMs cannot predict downstream tool chaining or extract required fields.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) declared. The MCP spec supports these annotations to help clients understand tool safety properties. delete_report_schedule, delete_approval_workflow, and trigger_report_schedule should be marked destructive; list tools should be marked readOnly.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
List all report schedules for the current organization with pagination. Returns schedules with their associated saved report details.
Immediately trigger a report schedule by ID, sending the report to all configured recipients regardless of the next scheduled run time.
Update an existing approval workflow. Provide only the fields to change. If steps are provided, they replace all existing steps.
Update an existing report schedule by ID. Only provided fields will be changed.
Error handling lacks recovery guidance. Source code shows wrapTool() error wrapping but no visible specification of error categories, retryable conditions, or actionable next steps. Errors should indicate whether the agent should retry, ask the user, or escalate.
Pagination limits not enforced in list tools. list_report_schedules and list_approval_workflows accept limit up to 100, and list_approval_requests similarly. No cap prevents context window exhaustion.
delete_report_schedule and delete_approval_workflow lack confirmation or dry-run support. Soft-delete is reversible, but LLMs cannot predict the consequence without explicit 'reversible' or 'confirmation_required' metadata. Destructive tools should declare their reversibility or offer a preview step.
trigger_report_schedule description does not warn about side effects (emails sent to all recipients). Destructive/irreversible operations must declare their consequences in the description.