# Changelog

All notable changes to enrichmcp will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.4.6] - 2025-07-10

### Added
- `EnrichParameter` for attaching descriptions and examples to resource
  parameters.
- `DataModelSummary` object returned by the built-in data model explorat

  tool.
- Standardized tool descriptions via new `ToolDef` and `ToolKind` helper


### Changed
- Built-in data model tool description now instructs calling it once at

  start of a session.
- Improved `DataModelSummary` string formatting and explore endpoint out


### Fixed
- Correct typing for field descriptions returned by the explore endpoint

## [0.4.5] - 2025-07-02

### Added
- Context caching with `MemoryCache` and optional `RedisCache` backends.
- `EnrichMCP.get_context()` returns an `EnrichContext` instance mirroring the underlying FastMCP context.

## [0.4.4] - 2025-06-26

### Fixed
- README example now documents column descriptions via SQLAlchemy's `info`
  metadata.
- Correct return type annotations for automatically generated SQLAlchemy
  resources.

## [0.4.3] - 2025-06-24

### Added
- HTTP transport via `app.run(transport="streamable-http")`
- Basic memory example demonstrating `FileMemoryStore`
- `mcp_use` client for the hello_world example

### Changed
- SQLAlchemy relationship resolvers now return `PageResult` using
  `page` and `page_size` parameters without count queries.

### Fixed
- Correct path handling in the HTTP example

## [0.4.2] - 2025-06-19

### Changed
- Renamed `app.resource` decorator to `app.retrieve`. `app.resource` remains
  as a deprecated alias.

### Added
- Support for marking fields as mutable with `mutable=True` and CRUD example
- BigInteger column type handling for SQLAlchemy integration
- Example smoke tests and improved OpenAI chat example
- Optional cleanup for SQLAlchemy lifespans
- Detailed ROBOTS guide and CI improvements

## [0.4.1] - 2025-06-15

### Fixed
- Ensure autogenerated SQLAlchemy resource functions set the `ctx` annotation
  to `EnrichContext` before registration so FastMCP recognizes it as a class

## [0.4.0] - 2025-06-12

### Added
- Added shop_api_gateway example showing EnrichMCP as an API gateway
- SQLAlchemy integration with `EnrichSQLAlchemyMixin`,
  `include_sqlalchemy_models` and `sqlalchemy_lifespan`
- Automatic generation of resources and relationship resolvers from
  SQLAlchemy models
- Example project `examples/sqlalchemy_shop`

### Changed
- Development setup now uses `uv`

## [0.3.0] - 2025-06-11

### Added
- Context support
- Lifespan support
- Pagination

## [0.2.0] - 2025-01-15

### Added
- Initial release of enrichmcp
- Core entity and relationship system
- Automatic schema introspection via `explore_data_model()`
- Type-safe resolver pattern for relationships
- Built-in error types for semantic error handling
- Context management for dependency injection
- Comprehensive documentation and examples
- Support for `@app.entity` and `@app.resource` decorators

### Fixed
- Relationship resolver type validation now properly checks return types
- Fixed decorator patterns to work with and without parentheses

[Unreleased]: https://github.com/featureform/enrichmcp/compare/main...HEAD
[0.2.0]: https://github.com/featureform/enrichmcp/releases/tag/v0.2.0
