Comprehensive Zakat calculation MCP server for Islamic finance. Handles calculation of Zakat obligations across diverse asset types (crypto, stocks, retirement accounts, real estate), document parsing, madhab comparison, reporting, and legal guidance.
ZakatFlow MCP server exhibits severe definition quality issues. While it claims 11 tools, the actual input schemas are largely absent or inferred from parameter descriptions in a generic format. Tool descriptions are present but often vague and lack actionable detail for LLM selection. Critical problems: (1) No visible explicit tool registration with proper JSON Schema in the source code provided. (2) Parameter definitions show type hints (object, string, array) but lack specificity, enums, and validation constraints. (3) Several tools (parse_blob, interactive_tools, agent_protocol, market_tools, discovery_tools, widget_template) have extremely generic descriptions that fail to distinguish their purpose from related tools. (4) The delete_data tool presents a DESTRUCTIVE operation with no confirmation pattern or dry-run capability. (5) No visible error handling guidance or recovery patterns in any tool. (6) The 'market_tools' description is identical in structure to others, suggesting copy-paste rather than domain-specific documentation. (7) Parameter descriptions like 'User's asset holdings (cash, gold, silver, stocks, crypto, real estate, etc.)' use examples in the description text, which LLMs tend to reuse literally. This is a low-maturity toolset that would struggle in production agentic scenarios.
Protocol handler for AI agents to interact with Zakat calculation engine
Calculates Zakat obligation based on user assets and liabilities
Compares Zakat calculation results across different Islamic legal schools (Hanafi, Maliki, Shafi'i, Hanbali)
Deletes user calculation history and stored data from database
Discovers available Zakat calculation methodologies, asset types, and supported madhabs
Interactive tools for guided Zakat calculation with real-time validation and user input
Provides Islamic legal guidance on Zakat obligations, exemptions, and special cases
Fetches current market prices for gold, silver, cryptocurrencies, and stocks for Nisab determination
No visible explicit JSON Schema definitions for tool inputs. Parameter definitions exist as bare type hints (object, string, array) without structured schema documentation, validation rules, or property definitions. This violates core MCP tool registration requirements.
Tool names lack clear action verbs or are ambiguous. 'interactive_tools', 'agent_protocol', 'market_tools', 'discovery_tools', 'legal_tools', 'widget_template' are nouns or compound phrases rather than verb_noun patterns (get_*, search_*, create_*, etc.). LLMs cannot infer intent from these names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 37 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 19 | - | v1 |
Parses financial documents (statements, PDFs, images) to extract asset and liability line items for Zakat calculation
Generates Zakat calculation reports in various formats (PDF, JSON, summary)
Provides interactive widget templates for embedding Zakat calculator in ChatGPT and other platforms via OpenAI Apps SDK
Vague, generic descriptions that fail to distinguish tools from similar ones. Example: 'Interactive tools for guided Zakat calculation' could apply to many tools. No clear 'WHEN to use this tool vs. calculate_zakat or compare_madhabs' guidance. Expected 50-200 character descriptions with actionable context.
Example values embedded in parameter descriptions (e.g., 'cash, gold, silver, stocks, crypto, real estate'). LLMs treat these as literal valid values and may reuse them, causing hallucinated examples in actual tool calls. Replace with enums or formal constraints.
delete_data tool is DESTRUCTIVE but lacks confirmation pattern, dry-run capability, or permission checks. No error guidance on how to undo accidental deletion. Violates pattern:confirmation-request and pattern:permission-gate.
No visible error handling guidance in any tool. Error responses should tell LLMs what to do next (retry, ask user, fail gracefully). None of the tool descriptions include recovery patterns or error classification.
Output schemas not documented. LLMs need to know what fields will be returned to plan downstream calls. For example, 'calculate_zakat' should document whether it returns zakat_amount, breakdown, madhab_comparison, timestamps, etc.
parse_blob accepts 'blobData' as a string (Base64 or URL), but no guidance on size limits, supported formats, timeout behavior, or what happens when parsing fails. Agents will call this blindly on untrusted input.
Tool 'compare_madhabs' returns results for 4 madhabs but provides no guidance on how LLMs should present or interpret differences. Should include an 'explain_summary' field or recommendations on which madhab to highlight.
market_tools promises to fetch prices but no indication of: data freshness, rate limits, what happens if a commodity is not tradeable in a currency, fallback behavior. Agents cannot retry intelligently without this.