Self-organizing retrieval fabric for AI memory with MCP integration
Flux Memory exposes 7 tools with complete JSON Schema definitions and descriptions. All tools have proper input schemas with typed parameters and enums. Descriptions are present and substantive (100-200 chars typical). However, output schemas are not documented, LLMs cannot predict return structure. Parameter descriptions are good but some lack actionable constraints (e.g., 'strength' field in flux_feedback lacks min/max bounds). Error handling is absent from visible code, no recovery guidance or categorization. Tool naming is clear and verb-driven (flux_store, flux_retrieve, flux_feedback). Composition is sound: tools chain logically (retrieve → feedback → store). Security concern: caller_id and client/role parameters are user-provided but lack validation guidance in descriptions.
Apply feedback on a retrieved grain. Call once per grain after using the result of flux_retrieve. This is how Flux learns.
Return current health status and signal values for Flux Memory.
List all grains in the store with optional filtering by provenance, decay_class, or status.
Return onboarding instructions for first-connect integration.
List pending (un-fed-back) retrievals for a caller. Returns each pending trace_id with its grain IDs so you can call flux_feedback on each.
Retrieve memory grains most relevant to a query.
Store a new memory grain into Flux Memory.
Output schemas not documented. LLMs cannot predict return structure for any tool. flux_retrieve should document grain fields (id, content, provenance, trace_id); flux_health should document health metrics structure; flux_list_grains should document grain array schema.
No error handling guidance. Tools lack recovery hints (e.g., 'If query returns no results, try a broader search'). No error categorization (retryable vs user-fixable vs fatal). No actionable error messages defined.
Parameter 'strength' in flux_feedback lacks bounds. Description says '0-1' but no min/max schema constraints. LLMs may pass invalid values (e.g., 2.5, -1). Add 'minimum': 0, 'maximum': 1 to schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
flux_health description is vague ('Return current health status and signal values'). Does not explain what 'signal values' are, when to call it, or what structure is returned. Expand to 100+ chars with actionable context.
Caller identity parameters (caller_id, client, role) lack validation guidance. Description says 'Prefer <client>:<role>' but does not specify format constraints, allowed characters, or length limits. LLMs may pass invalid identities.