Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.6.2] - 2026-06-15¶
Changed¶
- mcp_server: Default
is_executabletoTrueinTransactionRunAnalysis. - mcp_server: Expand
LiteralValuetype to include a list of dicts. - mcp_server: Add support for
dictandlistorigins in transaction annotation classification.
[1.6.1] - 2026-06-10¶
Added¶
- nlquery: Added Files Model support for files handling.
- mcp_server: Added
DATEandDATETIMEtoAnnotationTypeNameandPRIMITIVE_TYPE_NAMESfor correct mapping to primitive transaction arguments. - mcp_server: Restored explicit mapping for
Literalannotations to primitive type to prevent them from falling intoUNKNOWN.
Fixed¶
- nlquery: Fixed an issue in
NLQueryCreatorwhereclass_namewas missing in reference generation; implemented strictentity_typeenforcement for robust$refcreation.
[1.6.0] - 2026-05-22¶
Added¶
- AMSDAL Skills: Added the
AmsdalSkillmodel for skill management with tools for skill discovery (list_available_skills). Includesuse_when(which allows defining conditions for when a skill should be used) andrequires_user_approval(which allows requiring manual user confirmation before execution). In the MCP flow, skills are now called first in the chat. - Updated
get_model_schemaMCP tool flow: The LLM is now instructed to call the tool every time a model is mentioned to maintain accurate context.
Changed¶
- Replaced property extraction mechanism: Switched from
get_property_sourcetomodel_to_object_schemaand removed the unusedget_property_sourcefunctions entirely. - Removed cell length truncation limits in the NLQ Retriever, allowing the full content of database records and columns to be returned without being cut off.
- Enhanced MCP tool prompts and descriptions, specifically for entity resolution, synthesis, and transaction tools.
[1.6.0-rc1] - 2026-05-12¶
Added¶
- Expanded Query Support: Added support for queries using primary keys (PK), including full support for composite keys.
- NLQuery Retriever Enhancements:
- Introduced stage-aware retriever analysis with confidence scoring and field pruning.
- Added support for complex query filters with
AND/ORlogical conditions viafilter_group.
- NLQuery Updater Improvements:
- Enhanced preview support for related (nested) model updates.
- Improved robustness for update operations by validating related changes in empty payloads.
- Agent & MCP Refactoring:
- Introduced
MCPServerConfigand unifiedBaseToolhierarchy inml_models/primitives.py. - LLM models now accept tools inheriting from the common
BaseToolbase class and MCP servers viaMCPServerConfig. - Provider-specific parameters for MCP and tools are now encapsulated in
extra_params. - Updated
perform_crud_operationtool descriptions and enforced stricter analysis payload validation.
- Introduced
Changed¶
- Model Adapters: Refactored
ClaudeAdapterandOpenAIAdapterto support the newBaseToolandextra_paramsarchitecture. - MCP Connectors: Unified connector logic and removed redundant provider-specific implementations in favor of
MCPServerConfig.
[1.5.0] - 2026-04-29¶
Added¶
- Added attachment and message history support (
ChatMessage,MessageBuffer) toFunctionalCallingAgent, allowing attachments to persist across LLM turns. - Enhanced ML Models to handle and pass attachment inputs as segmented parts during API calls, preserving accurate message history natively.
- Exposed explicit
object_idfields innlq_retrieveroutputs, enablingnlquery/creator,updater, anddeleterto directly reference, link, update, or remove existing records by ID. - Added robust validation, schemas, and error handling for NLQ components.
Changed¶
- NLQ Refactoring: Extracted Natural Language Query (NLQ) logic from
ml_retrieversinto a new, dedicatedamsdal_ml/nlquery/package, organized into phase-specific sub-packages (creator/,updater/,deleter/,retriever/), with structured core modules and a shared NLQ base class. - ML Models Restructuring: Unified model primitives (
base_model.py,base_adapter.py,primitives.py) and relocated schema adapters into provider-specific model packages (amsdal_ml/ml_models/openai/,amsdal_ml/ml_models/claude/). - Agents Reorganization: Cleaned up
amsdal_ml/agents/into a domain-driven structure (core logic, schemas, memory, and specialized tooling/integration categories likestructured_toolsandmcpconnectors). - Reorganized prompt files into structured subdirectories matching the codebase architecture.
- Standardized Foreign Key/M2M Discovery processes utilizing official AMSDAL introspection utilities.
- Extracted and grouped AMSDAL-specific utility functions into a dedicated
amsdal_ml/utils/amsdal_internalpackage (previously scattered inamsdal_ml/utils).
Removed¶
- Removed deprecated
MultipleRecordsErrorand outdated query retriever/updater components. - Removed deprecated tool adapters and retriever adapters, merging their functionality into the new adapter architecture.
- Removed the
get_model_field_values_by_idsMCP tool, as its functionality is now supported natively byCRUDoperations via the enhancednlq_retriever.
[1.4.0] - 2026-04-10¶
Added¶
- Added MCP connector support in
FunctionalCallingAgent, so remote MCP servers can be attached directly to function-calling flows. - Added file attachment support in
FunctionalCallingAgent(including provider file IDs for images and documents). - Added provider-specific MCP connectors in
amsdal_ml/agents/mcp_connectors.pyfor both OpenAI and Claude payload formats. - Added
amsdal_ml/agents/message_buffer.pywith canonical message history types (AgentMessage,MessageBuffer) and MCP event models. - Added
MCPItemhierarchy for structured MCP request/response handling in agent adapters and connector flows. - Added new Anthropic model implementation in
amsdal_ml/ml_models/claude. - Added Claude file loader in
amsdal_ml/fileio/claude_loader.py. - Added Claude adapters for function/tool calling and structured response schema handling.
Changed¶
- Reorganized model implementations into provider-specific subpackages; OpenAI model code now lives under
amsdal_ml/ml_models/openai. - Fully rewrote
OpenAIModelto use the OpenAI Responses API as the single pathway for sync/async and streaming calls. setup()in model implementations is now asynchronous (await model.setup()) via theMLModelbase interface.- Agents now support passing chat history between LLM calls in a normalized, provider-agnostic format.
Fixed¶
- Fixed NLQ retriever behavior and related query execution edge cases.
[1.3.0] - 2026-03-25¶
Added¶
- Added
list_available_transactionsMCP tool to discover available transactions by scope (user,contrib,all) with parameter metadata. - Added
perform_transaction_operationMCP tool for natural language transaction execution with model argument modes (existing_ref,new_object,explicit_id) and primitive/dict support.
Changed¶
- Transaction execution now follows strict two-step confirmation: run analysis with
confirm=false, then execute withconfirm=trueusing the returnedanalysispayload.
[1.2.1] - 2026-03-06¶
Changed¶
- Replaced
pymupdfwithpypdfin PDF ingestion loader implementation. - Updated project dependencies and lockfile to remove
pymupdfand usepypdf. - Updated documentation references for
PdfLoaderto reflectpypdfusage.
[1.2.0] - 2026-03-04¶
Added¶
- Added MCP OAuth integration in
amsdal_ml/mcp_server/mcp_oauth, enabling MCP server authorization via AMSDAL authentication.
Security¶
- MCP OAuth flow now preserves AMSDAL permission checks during authenticated MCP access.
[1.1.0] - 2026-02-25¶
Changed¶
- Upgraded to
amsdal[cli]>=0.8.0, consolidatingamsdal,amsdal_cli, andamsdal_serverinto a single dependency.
[1.0.1] - 2026-02-18¶
Changed¶
- Documentation: recommend Chatbox AI (desktop) as the primary MCP client and document setup steps (provider token + custom MCP server + auth headers).
- Documentation: clarify LibreChat usage as local-only via
ngroktunnel (deployed server URLs may fail), and notengrok-skip-browser-warning=1header for tunnels.
[1.0.0] - 2026-02-17¶
Added¶
- First MCP server release for AMSDAL apps via
server_model_explorer, including:list_available_modelsfor model discovery,get_model_schemafor full JSON schema + computed property source,get_model_relationshipsfor outgoing and incoming FK graph inspection,get_model_field_values_by_idsfor id-based field inspection (with history support),perform_crud_operationfor NL-driven read/create/update/delete with two-step confirmation.
- Added
NLQueryCreatorExecutorwith a 3-phase create pipeline:- resolution planning for nested entities,
- context retrieval for candidate related objects,
- payload synthesis + persistence with required-field checks and reference/file preprocessing.
- Added
NLQueryUpdaterExecutorwith advanced update flow:- split of natural language into
find_query+update_query, - filter generation + preview of direct/FK/JSONB changes,
- intent detection (
UPDATE_DIRECT,REASSIGN_FK,UPDATE_RELATED,MIXED), - related-entity update handling and transactional apply.
- split of natural language into
- Added
NLQueryDeleterExecutorwith split/analyze/execute delete flow, preview support, and transactional deletion. - Expanded
NLQueryExecutor(retriever) behavior for robust filter parsing, related-queryset application, preview summaries, and strict single-record execution checks. - Added support for ingester workflows with new HTTP MCP functionality.
Changed¶
- This is the first major MCP release line (
1.x) for AMSDAL ML. - Query execution in
perform_crud_operationuses an explicit two-step confirmation flow:confirm=falsereturns analysis/preview only,confirm=trueexecutes using the returned analysis payload.
- Context resolution pipeline was reworked to better resolve nested entities and references in NLQ payloads.
get_model_field_values_by_idsis the primary MCP tool for explicit "show object by id" verification before user confirmation.- Dynamic dimension sizing for embeddings is now configurable from environment variables.
- Improved flexible-filter behavior in the React agent.
- Global improvements:
- Dynamic dimension sizing in the embedding model (env),
- Improvements to the flexible filter in the React agent,
- Fixes for the MCP stdio client,
- Support for the ingester with new HTTP MCP functionality,
- Tenacity-based retry logic in the OpenAI model / OpenAI retriever,
- New tests added.
Security¶
- Permission checks are enforced at two levels in MCP operations:
- class-level authorization before operation planning/execution,
- object-level authorization while objects are loaded, saved, or deleted.
- Request context bridging (
with_amsdal_context) propagates MCP request user/auth into AMSDAL context for permission evaluation in execution hooks.
[0.3.2] - 2026-02-06¶
Added¶
- AMSDAL EULA license
- CHANGELOG.md in Keep a Changelog format
- Consolidated CI/CD workflows
[0.3.1] - 2026-02-06¶
Fixed¶
- Fixed on_setup for AppConfig
[0.3.0] - 2026-02-06¶
Changed¶
- Update to amsdal v0.6.0
[0.2.2] - 2026-01-19¶
Fixed¶
- Added support for
JSON_SCHEMAresponse format when using attachments in OpenAI Responses API - Support for images in OpenAI Responses API (automatically selects
input_imagebased on MIME type) - Added
mime_typesupport toFileAttachmentandOpenAIFileLoader
[0.2.1] - 2025-12-23¶
Changed¶
- Upgraded dependencies: pydantic~=2.12, pydantic-settings~=2.12
[0.2.0] - 2025-12-16¶
Added¶
PythonTool: Tool for executing Python functions within agentsFunctionalCallingAgent: Agent specialized in functional calling with configurable toolsNLQueryRetriever: Retriever for natural language queries on AMSDAL querysetsDefaultIngestionPipeline: Pipeline for document ingestion including loader, cleaner, splitter, embedder, and storeModelIngester: High-level ingester for processing models with customizable pipelines and metadataPdfLoader: Document loader using pymupdf for PDF processingTextCleaner: Processor for cleaning and normalizing textTokenSplitter: Splitter for dividing text into chunks based on token countOpenAIEmbedder: Embedder for generating embeddings via OpenAI APIEmbeddingDataStore: Store for saving embedding data linked to source objects
[0.1.4] - 2025-10-15¶
Fixed¶
- Fixed lazy initialization of OpenAIRetriever to ensure env vars are loaded
- Added missing env parameter to stdio_client for non-persistent sessions
- Environment variables now properly passed to MCP stdio subprocesses
- Updated README.md to be production-ready
- Added RELEASE.md with step-by-step release guide
[0.1.3] - 2025-10-13¶
Fixed¶
- Pass env vars into stdio server
- Cleanup of app.py
[0.1.2] - 2025-10-08¶
Fixed¶
- Fix for UserWarning: Field name "object_id" in "EmbeddingModel" shadows an attribute in parent "Model"
[0.1.1] - 2025-10-08¶
Added¶
- BaseFileLoader interface and OpenAI Files API implementation
[0.1.0] - 2025-09-22¶
Added¶
- Interfaces and default OpenAI-based implementations