MCP server built on top of ACI.dev by Aipolabs, providing access to ACI functions and tools through the Model Context Protocol
This server has 4 tools with mixed quality. Two tools (ACI_SEARCH_FUNCTIONS, ACI_EXECUTE_FUNCTION) are explicitly defined in unified_server.py with schemas, but parameter descriptions are minimal or generic. ACI_SEARCH_DOCS has a schema but vague description. GET_PROJECT_STATE has no visible input schema (appears to accept empty object) and lacks context. Tool names follow verb_noun convention, which is good. However, descriptions are too brief (under 150 chars in most cases), parameter constraints are missing (no enums, no ranges, no validation hints), and output schemas are completely undocumented. Error handling is implicit (success/error flags) but provides no recovery guidance. The server dynamically generates tools from the ACI SDK via list_tools(), which means the core ACI function tools are not directly visible in the source, only the three wrapper/meta tools are explicitly defined. This limits visibility into downstream tool quality.
Execute an ACI function with the provided arguments
Search for ACI.dev concepts, documentation, Python & TypeScript SDK documentation, and usage examples
Search for available ACI functions across configured apps
Get the current state of your project, including the GitLab, Vercel, and Supabase deployments. Always first call this tool to get the state of your project, you would need to know the state of your project to execute other functions using the aci_execute_function tool. Remember to run this tool every once in a while to get the latest state of your project or after you have executed any function that may alter the state of your project.
GET_PROJECT_STATE has no visible input schema (empty properties {}) and lacks documentation. This violates the schema requirement, every tool must document its input structure.
Parameter descriptions are generic or missing for most tools. 'List of app names to search functions in' (ACI_SEARCH_FUNCTIONS) lacks guidance on valid app names, formats, or limits. 'Whether to limit search to allowed apps only' (ACI_SEARCH_FUNCTIONS) does not explain what 'allowed apps' means or when to use true vs false.
No output schemas are documented. Callers cannot know what structure to expect. ACI_EXECUTE_FUNCTION returns execution_result.data as JSON string (via json.dumps), but the LLM has no hint about the structure. ACI_SEARCH_DOCS has no documented return format.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Error handling provides no recovery guidance. When ACI_EXECUTE_FUNCTION fails, it returns 'Failed to execute tool, error: {error}' with no hint about whether the error is retryable, user-fixable, or fatal. LLM cannot decide next step.
Tool description for ACI_EXECUTE_FUNCTION does not clarify when to call it vs alternatives. 'Execute an ACI function with the provided arguments' is a generic statement that fails to explain preconditions (e.g., must call ACI_SEARCH_FUNCTIONS first?), side effects (does it modify state?), or constraints.
ACI_SEARCH_DOCS parameter 'q' has no constraints (length, format, special characters). LLM could pass empty strings, extremely long queries, or special characters that break the search backend.
No pagination support documented for search tools. If ACI_SEARCH_FUNCTIONS or ACI_SEARCH_DOCS return large result sets, no limit or offset mechanism is visible. LLMs cannot control result size, risking context window exhaustion.
Tool descriptions do not clarify dependencies or prerequisites. GET_PROJECT_STATE says 'Always first call this tool', but ACI_EXECUTE_FUNCTION does not explain whether it requires GET_PROJECT_STATE state or ACI_SEARCH_FUNCTIONS discovery first.
Workaround for multi-user support ('aci_override_linked_account_owner_id' injected into arguments) is not documented. This hidden parameter is not in the tool schema and LLMs cannot discover it without reading source code.