reelee's MCP connector redesign (thorwhalen/reelee#284, ADR in reelee docs/adr_connector_tool_surface.md §4 Move 4b) records ir as the retrieval substrate of record for tool search over its catalogue, with adoption deferred behind a measured trigger (ir_01 Recommendations Stage 1: Recall@5 < ~0.8 on a held-out set).
When that fires, the clean home for the corpus construction is an ir factory alongside from_skills:
CorpusSource.from_mcp_tools(tools) where each tool contributes name + description only — never the parameter schema in the dense text (ir_02 §4 "the body carries no retrieval responsibility"; §8 "Expose arg names to BM25; keep them out of the dense vector").
- Invalidation key: SHA-256 over
(name + description + parameters) per tool (ir_02 §6, ScaleMCP's CRUD pipeline) — parameters participate in the hash (a schema change must re-embed) even though they stay out of the embedded text.
- Input shape: duck-typed records (
{name, description, parameters}) rather than fastmcp types, so ir takes no MCP dependency; a fastmcp adapter can live with the consumer.
Until this exists the consumer-side workaround is CorpusSource.from_mapping({name: name + " " + description}), which loses the schema-aware invalidation. No urgency — reelee will not adopt before its description-hardening pass lands and the Recall@5 measurement is taken.
reelee's MCP connector redesign (thorwhalen/reelee#284, ADR in reelee
docs/adr_connector_tool_surface.md§4 Move 4b) recordsiras the retrieval substrate of record for tool search over its catalogue, with adoption deferred behind a measured trigger (ir_01 Recommendations Stage 1: Recall@5 < ~0.8 on a held-out set).When that fires, the clean home for the corpus construction is an
irfactory alongsidefrom_skills:CorpusSource.from_mcp_tools(tools)where each tool contributesname + descriptiononly — never the parameter schema in the dense text (ir_02 §4 "the body carries no retrieval responsibility"; §8 "Expose arg names to BM25; keep them out of the dense vector").(name + description + parameters)per tool (ir_02 §6, ScaleMCP's CRUD pipeline) — parameters participate in the hash (a schema change must re-embed) even though they stay out of the embedded text.{name, description, parameters}) rather than fastmcp types, soirtakes no MCP dependency; a fastmcp adapter can live with the consumer.Until this exists the consumer-side workaround is
CorpusSource.from_mapping({name: name + " " + description}), which loses the schema-aware invalidation. No urgency — reelee will not adopt before its description-hardening pass lands and the Recall@5 measurement is taken.