Agent discoverability pass: differentiate the three MCP tool descriptions and sharpen README selection boundaries #162
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
P1
P2
P3
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Creatidy/scarcity-router#162
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bounded representation-only pass (no semantics, contracts, architecture or maturity changes). Baseline: canonical
develop@59538e9(2026-09-29, clean).Diagnosis (repository evidence)
All public identity surfaces except one are already accurate and well-differentiated:
examples/agent-routing-prompt.mdalready states the exact intent split: select = the dispatch decision, status = diagnose capacity, simulate = explicit what-if analysis.llms.txt/.well-knownexists (nothing stale to fix; none will be added — it would duplicate the README).The one material defect is the MCP tool metadata — the primary surface retrieval systems rank on (tool name + short description + schema). All three tools share one generic prefix and differ only by which REST endpoint they mirror:
Problems:
selectvssimulateare not distinguishable by intent from metadata alone (both just "mirror a REST contract").scarcity_status's description says "reports or recommends" — false for status, which never recommends — and never mentions capacity/quota/providers, the only thing it returns.Secondary gap: README boundaries exist in prose but not as a compact scannable "use when / do not use when" block.
Stable intent baseline (evaluation set, used verbatim)
scarcity_selectmust be the obvious callable surface.scarcity_statuspreferred.scarcity_simulatepreferred.Baseline before the change: intents 1, 2, 6, 7, 8 pass on README/repo-description evidence; intents 3, 4, 5 are AMBIGUOUS at the MCP surface (the only interface whose metadata a tool-selection system sees).
Exact bounded changes
scarcity_router/mcp.py— rewrite the three tooldescriptionstrings only. Tool names, input schemas, property names/types, required flags, envelopes and error payloads unchanged. D-028 preserved: names stay simple/unversioned; every description still opens stating it exposes "Scarcity Router machine-interface contract v1" and still states it never executes model inference (both pinned bytests/test_mcp.py). Each description gains: the intent it serves, what it returns, when to choose it, and which tool is preferable for the neighbouring intent (grounded in the existingagent-routing-prompt.mdsemantics and implemented output).tests/test_mcp.py— extend the existing description test (no new framework) to pin the per-tool differentiation substrings so the intent split cannot silently regress.README.md— add one compact "Use it when / Do not use it when" block near the top (product-selection boundaries from actual capabilities) and one honest maturity line. No README restructuring; existing prose depth preserved.Explicit exclusions
llms.txt, no ARD, no registry/dashboard/analytics/telemetry).Acceptance criteria
make check,uv run basedpyright,git diff --checkgreen on the exact PR head.scarcity_router/mcp.py,tests/test_mcp.py,README.md.