AIForge exhibits significant definition quality gaps. Tool descriptions are present but often generic (e.g., 'List all available tools' for tools/list). Input schemas are visible for 11/20 tools but many lack parameter descriptions or type constraints. Critical issues: (1) tool names mix verb_noun (recommend, ingest) with slash-separated paths (tools/list, tools/call) creating inconsistency; (2) 9 tools have no visible input schema (initialize, ping, health, get_artifact, list_artifacts, get_environment, list_pending_discoveries lack explicit schema definitions in source); (3) descriptions are too brief (10-50 chars) for LLM disambiguation, 'Ping the MCP gateway server' and 'Get server health status' do not explain WHEN to use each; (4) no output schemas documented anywhere; (5) error handling guidance absent, tools return errors but do not guide recovery. The tools/call tool accepts 'arguments' as free-form object with no validation hints. Composition is reasonable (single responsibility per tool) but parameter naming inconsistencies (artifact_id vs discovery_id) and missing enum constraints on filter parameters (type, tag) invite hallucinated values.
Add a single tag to an artifact
Approve a pending skill discovery and trigger ingest
Get artifact details by ID
Get status of an autotag job
Get latest environment snapshot from server
Get server health status and skill count
Trigger ingestion of a GitHub skill repository
9 tools lack visible input schemas (initialize, ping, health, get_artifact, list_artifacts, get_environment, list_pending_discoveries).
Descriptions are too brief (10-50 chars) and lack LLM-optimized context. 'Ping the MCP gateway server' does not explain when to call it vs health. Descriptions should be 50-200 chars and answer WHAT, WHEN, and WHY.
Inconsistent tool naming: slash-separated paths (tools/list, tools/call) mixed with verb_noun style (recommend, ingest). LLMs parse tool names to infer intent, inconsistency causes confusion. Standardize to verb_noun (list_tools, call_tool).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
MCP protocol initialization handshake
List artifacts with optional type and tag filtering
List pending skill discoveries awaiting approval
List all skills with optional filtering and pagination
Ping the MCP gateway server
Push local environment scan snapshot to server
Get top-K skill recommendations for a given prompt
Reject a pending skill discovery
Remove a tag from an artifact
Replace all tags for an artifact
Call a tool on a downstream MCP server with namespace routing
List all available tools from aggregated downstream MCP servers
Trigger automatic tagging job for artifacts
No output schemas documented. LLMs cannot plan downstream calls or extract required fields without knowing response structure. Document return types for all tools.
Missing enum constraints on filter parameters. list_artifacts accepts 'type' and 'tag' as free-form strings with no enum values documented. LLMs will hallucinate invalid values. Add enums: type=[mcp|plugin|skill], tag=[user-provided list].