All notable changes to machine-core.
Mixed-mode tool filtering
- Added
filter_mcp_toolsets()standalone function — wraps MCP toolsets withToolFilterWrapperto hide irrelevant tools based on a set of relevant names - Added
toolsets=parameter toAgentCore.rebuild_agent()— allows swapping MCP toolsets alongside dynamic tools in a single call - Exported
filter_mcp_toolsetsfrom the top-level package
This enables a "mixed mode" where both OpenAPI tools and MCP toolsets can be RAG-filtered per request.
Commit: 57a2eaa
Shared infrastructure migration from ai-accounting-agent
Migrated reusable components from ai-accounting-agent into machine-core as shared infrastructure:
- FileProcessor (
core/file_processor.py) — static utility for PDF text extraction (pdfplumber + PyPDF2 fallback), image OCR (pytesseract), VLM data URL preparation, and batch file upload processing - ProcessedFile — dataclass for file processing results (text, data_url, mime_type, pages, error)
- generate_tools_from_openapi (
core/openapi_tools.py) — generates pydantic-aiToolobjects from OpenAPI 3.x specs with automatic$refresolution, schema depth limiting (3 levels for Gemini), and auth header injection - fetch_openapi_spec — async function to fetch OpenAPI specs from API endpoints
- VectorStore (
core/vector_store.py) — LanceDB-backed vector database with table management, single-table and cross-table similarity search - Embedder — wrapper around embedding providers (supports
ResolvedEmbeddingand raw providers) - SearchResult — dataclass for vector search results
- ToolFilterManager (
core/tool_filter.py) — RAG-based tool filtering that indexes OpenAPI and MCP tool descriptions, then filters by task prompt relevance - ToolFilterResult — dataclass for filter results with tool names grouped by source
- DocumentStore (
core/document_store.py) — high-level facade for document storage with automatic embedding and natural language search
Additional changes:
BaseAgent._process_image()now delegates toFileProcessor.prepare_for_vlm()- Updated
__init__.pyto export all 16 public symbols - New dependencies:
lancedb>=0.20.0,pdfplumber,PyPDF2,Pillow,pytesseract,httpx
Commit: 6d70e4a
Dynamic tools support
- Added
rebuild_agent(tools=, system_prompt=, retries=)method toAgentCore— allows recreating the agent with new tools per request without re-initializing MCP connections or model providers - Extracted
_build_agent()from__init__()to make agent creation reusable - Added
run_query_iter()toBaseAgent— async generator yielding(node, step_num)tuples for step-by-step execution control - Added
_validate_agent_tools()for schema validation on dynamically-created tools
This enables the "dynamic tools mode" where tools can be swapped per request, used by ai-accounting-agent for per-prompt OpenAPI tool generation.
Commit: fc8721a
Provider-agnostic model objects
- Simplified
AgentCore.__init__()to useResolvedProvider.modeldirectly — AgentCore no longer importsOpenAIChatModel,GoogleModel, orAnthropicModel - All model construction logic now lives entirely in
model-providers AgentCorestoresself.provider_typefor downstream logic that needs to know (e.g., schema depth limiting for Gemini)
Commit: 5a1f772
- Updated version in pyproject.toml and uv.lock
- Updated model-providers dependency to v0.0.8
Commits: d286ea9, 12f4fca
- Bumped dependencies
ToolFilterWrapperextended to inherit fromAbstractToolsetand implement all abstract methods (get_tools,id,call_tool)- Fixed
ToolFilterWrapper.idproperty to handle missing wrapped toolset ID gracefully - Fixed
BaseAgent.run_query()to let pydantic-ai handle tool errors properly instead of interfering with retry logic
Commits: d4e4685, a43fbb0, df35141, 6661e7e, a55cbcc
- Updated Dockerfile for Python 3.13
- Enhanced deployment documentation
- Refactored code structure for readability
Commits: ce758dd, 1700581, 835ce34
- Added support for Google model in AgentCore
- Updated model-providers Git source URL
- Various improvements for Google/Vertex provider support
Commits: 5480123, 6b236ab, e5c0357, c80e0f6
Initial release
AgentCore— core infrastructure for model/embedding resolution and MCP toolset loadingBaseAgent— abstract base class withrun_query()andrun_query_stream()- MCP toolset integration with
ToolFilterWrapperfor schema validation - Configuration via
AgentConfigand environment variables - 6 built-in agents: ChatAgent, CLIAgent, ReceiptProcessorAgent, TwitterBotAgent, RAGChatAgent, MemoryMasterAgent
- FastAPI service with Prometheus metrics (
/metrics), health check, and static frontend - Docker and Docker Compose deployment support
- Integration with
model-providersfor 7 LLM + 3 embedding backends
Commits: 2c4749d through 027aeed