Updated: 2026-08-09 Baseline:
mainafter the 0.38 trace-observability changes Scope: provider-neutral tool ingestion, retrieval, planning contracts, and evidence. Product auth, model-provider lifecycle, and UI remain outside the library.
graph-tool-call is no longer only a BM25 tool retriever. The current public surface covers the path from heterogeneous API/tool metadata to an auditable, planner-facing candidate bundle.
| Layer | Current capability |
|---|---|
| Ingest | OpenAPI 2/3.0/3.1, GraphQL introspection, MCP tools, Python functions, structured catalogs |
| Contract | request/response preservation, auth/security metadata, consumes/produces, links, response envelopes |
| Graph | structural, API-contract, OpenAPI-link, manual, LLM-curated, and run-observed evidence |
| Search | BM25, graph expansion, optional embedding/reranking, Korean tokenization, evidence output |
| Selection | deterministic target guard, sibling control, target/producer role separation |
| Planning | dependency closure, contract-projected schemas, token-budget admission, PathSynthesizer |
| Execution | PlanRunner.run_stream, structured events/errors, host-supplied execution adapters |
| Learning | scrubbed trace records and observe-shadow-promote suggestions |
| Operations | OpenAI/Anthropic middleware, LangChain v1 middleware, MCP server/proxy, Docker/Kubernetes |
| Validation | Python 3.10-3.14 CI, 1,200+ tests, deterministic release evidence, public research harnesses |
The old roadmap described several of these features as missing. It is retained in git history rather than repeated here as current work.
Goal: a clean install should match the README, docs, package metadata, and published evidence.
- keep the README short and executable;
- freeze a versioned release-evidence artifact;
- verify wheel/sdist, public examples, Docker startup, and MCP initialize/search;
- keep GitHub Release, tag, CHANGELOG, PyPI, and documentation on one version;
- publish only claims backed by committed case-level output.
Exit gate: make release-check, clean-wheel smoke, container smoke, and the
Python version matrix all pass for the release commit.
Goal: move important integrations from protocol compatibility to repeatable application-level smoke tests.
- OpenAI Agents SDK through remote MCP.
- PydanticAI
MCPToolsetthrough remote MCP. - Google ADK
McpToolsetthrough remote MCP. - One account-owned AWS AgentCore or Microsoft Foundry gateway smoke.
- A compatibility manifest recording package version, transport, scenario, result, and last verification date.
Framework-specific execution policy stays in the framework. The library should not copy provider auth or agent lifecycle code.
Goal: answer "why was this tool selected, expanded, admitted, or rejected?" without reconstructing the engine offline.
- stable retrieval trace schema for score channels and rank transitions;
- target-selector and dependency-closure spans;
- token-budget admission decisions and dropped-schema reasons;
- OpenTelemetry export behind an optional dependency;
- secret-safe CLI trace output and MCP request correlation;
- latency histograms for ingest, retrieve, expand, select, and plan.
Exit gate: one query can be replayed from a scrubbed trace and every final candidate has a machine-readable reason.
Goal: keep latency predictable when tools and MCP backends change at runtime.
- incremental BM25 and optional embedding add/remove;
- cached category/module indexes with explicit invalidation;
- backend reconnect and tool mutation handling;
- large-catalog memory and p50/p95 latency gates;
- deterministic serialization after incremental updates.
Optimization work starts from profiles, not a Rust rewrite. Native extensions are considered only after a measured Python bottleneck remains.
Goal: connect fields and workflows across independently owned specs and MCP servers without domain-specific hardcoding.
- provenance-preserving cross-source contract matching;
- collision-safe tool identity and human-readable aliases;
- direct/required edges before indirect/optional edges;
- uncertainty and unresolved-field diagnostics;
- negative controls against generic IDs, paging, auth, and context fields.
Exit gate: improvements reproduce on multiple unseen API families, not only XGEN or one commerce fixture.
Goal: make enterprise deployment failures explicit before model execution.
- tool-schema mutation fingerprints and provenance;
- prompt-injection and suspicious-description diagnostics;
- annotation-aware exposure policy;
- executable vs metadata-only capability gates;
- policy hooks for destructive, open-world, and untrusted tools;
- no raw secrets in graph, trace, learning, or benchmark artifacts.
The engine reports facts and policy signals; the host application makes the authorization decision.
The canonical experiment rules remain in
paper-readiness-design.md. The immediate
research sequence is:
- audit BFCL V4, MCP-Atlas, Toolathlon, ToolRet, Re-Invoke, and TGR licenses and reproducibility boundaries;
- run and review the frozen three-repeat B0-L vs B6c train/dev experiment;
- complete contamination-sensitivity and prospective power analyses;
- run the frozen full ablation matrix on train/dev;
- obtain an independent protocol review;
- open the held-out split only after the preregistered gates pass.
The paper is about model-independent retrieval middleware, not LLM fine-tuning. The candidate contribution is the combination of:
- normalized tool contracts from heterogeneous sources;
- explicit target discovery separated from prerequisite completion;
- typed graph evidence;
- token-budgeted contract projection;
- model-loop evaluation with full-schema hydration before argument generation.
Trace learning remains a controlled follow-up unless its causal contribution is isolated with shadow and promotion gates.
- training or fine-tuning an LLM;
- embedding XGEN-specific DB, auth, cookie, SSE, or user-ID logic;
- becoming a general model-provider router;
- exposing a public unauthenticated MCP execution endpoint;
- claiming official BFCL or state-of-the-art results without parity evidence;
- direct TypeScript/Java SDKs before MCP adoption data justifies them.
| Release | Focus | Required evidence |
|---|---|---|
| 0.37 | adoption readiness and public-surface cleanup | release evidence, framework adapter tests, Docker/MCP smoke |
| 0.38 | trace schema and optional OpenTelemetry | replay test, secret scrub, latency overhead (delivered) |
| 0.39 | ecosystem smoke matrix and dynamic-catalog profiling | real framework runs, p50/p95 scale report |
| 0.40 | cross-source dependency hardening | unseen-family paired evaluation and negative controls |
Version numbers after 0.38 are planning targets, not commitments. A release is cut only when its evidence gate passes.
- Use fast deterministic tests for each edit; run model loops only at a frozen release or paper gate.
- Do not tune against the held-out split.
- Keep product-neutral logic in graph-tool-call and application adapters in their owning repositories.
- Add public API fields additively unless a major version explicitly permits a breaking change.
- Preserve raw human metadata and manual/trace evidence during rebuilds.
- Prefer structured parsers and schemas over string heuristics.
- Record limitations next to every benchmark claim.