Indexes any GitHub org or personal account (default: sandraschi) into a star-sorted, categorized MCP-oriented catalog. Auto-detects org vs user accounts. Refresh writes data/catalog.json and reports/catalog_standalone.html. Requires GITHUB_TOKEN for higher rate limits.
Three tools with clear verb-noun naming (iflow_catalog_refresh, iflow_catalog_snapshot, iflow_catalog_paths). All have descriptions and input schemas with types. However, descriptions are verbose and lack conciseness; parameter descriptions are minimal or missing context. Output schemas are documented in code but not formally declared in tool registration. Error handling is present but inconsistent, refresh returns structured errors with recovery hints, while snapshot's error response lacks actionable guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles (refresh is WRITE, others are READ_ONLY). Parameters lack constraints (enums, ranges) and validation guidance.
IFLOW_CATALOG_PATHS - Resolve on-disk locations for JSON, HTML, and repo root.
IFLOW_CATALOG_REFRESH - Fetch repos via GitHub API, classify, persist JSON (+ optional HTML). Works with both GitHub organisations and personal accounts -- auto-detected. PORTMANTEAU PATTERN RATIONALE: Single tool to refresh the entire local database from GitHub without a separate CLI step, so agents can update the catalog on demand.
IFLOW_CATALOG_SNAPSHOT - Return top repos from the last local refresh (no network). PORTMANTEAU PATTERN RATIONALE: Read-only inspection for agents without burning API quota.
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). refresh is destructive (WRITE), snapshot and paths are read-only, but no annotations present in tool registration.
Parameter descriptions lack actionable constraints. 'max_pages' has no guidance on valid range; 'limit' and 'min_mcp_score' lack bounds. LLMs cannot infer valid ranges without explicit min/max.
Tool descriptions are verbose (200+ chars) and include implementation rationale ('PORTMANTEAU PATTERN RATIONALE') rather than user-facing intent. Descriptions should be 50-200 chars and focus on WHAT, WHEN, and WHY for LLM selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Output schemas documented in docstrings but not formally declared in tool registration. LLMs cannot parse return types from docstrings alone, schemas must be explicit in the tool definition.
iflow_catalog_paths has no parameters but description is vague ('Resolve on-disk locations'). Does not explain what locations are returned or when to call it. Lacks actionable context for LLM selection.