Model Context Protocol server exposing a crowdfunding platform API as tools for autonomous AI agents to create startup projects and invest in them.
This server exposes 4 crowdfunding tools with mixed quality. Tool naming is verb-driven and clear (get_projects, search_projects, invest, create_project), following convention. Descriptions are present but generic and lack depth, they do not explain WHEN to use each tool, dependencies between them, or constraints. Input schemas are well-formed with proper types and required fields, but parameter descriptions are terse (5-20 chars) and fail to provide actionable guidance. Output schemas are not documented at all, LLMs cannot infer what fields are returned or how to chain tools. Error handling in the server code (mcp_server/server.py) validates inputs and returns McpError with context, which is good, but tool descriptions do not guide recovery. The invest and create_project tools modify state but their descriptions do not explicitly warn of irreversibility. Overall, this is a functional but below-average implementation, typical of community servers that focus on happy-path definitions and neglect production-grade documentation.
Create a new crowdfunding project.
Fetch all crowdfunding projects.
Invest an amount into a project.
Search projects by name or category.
No output schemas documented. LLMs cannot infer what fields get_projects, search_projects, invest, or create_project return, preventing intelligent chaining and data extraction.
Parameter descriptions are too terse (5 - 20 characters). 'Search term.' and 'Target project ID.' do not explain constraints, format, or what makes a valid input. Parameter description baseline is 72 chars; these fall 70% short.
Tool descriptions lack depth and do not guide LLM selection. 'Fetch all crowdfunding projects.' does not explain when to call get_projects vs search_projects, what the difference is, or whether results are paginated. Descriptions should be 50 - 200 chars with context.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Destructive tools (invest, create_project) do not declare their irreversibility in descriptions. No mention of confirmation, dry-run, or recovery paths. LLMs may apply these tools without understanding the consequences.
Parameter 'amount' in invest accepts a number but lacks min/max bounds. Description states '(> 0)' only in natural language; JSON Schema has no minimum constraint, allowing 0, negative, or absurd values if validation fails.
Parameter 'funding_goal' in create_project is listed as required but no minimum value enforced in schema. Description says 'Funding goal in USD' without stating if 0 is allowed or what range is valid.
No pagination parameters (limit, offset, page_size) on get_projects. If there are thousands of projects, the entire list is returned, exhausting context and wasting tokens. Tool description does not mention how many results to expect.