# tools-rs

> Serialize your functions with tools-rs!

- **URL**: https://www.freshcrate.ai/projects/tools-rs
- **Author**: EggerMarc
- **Category**: Frameworks
- **Latest version**: `0.3.3` (2026-04-14)
- **License**: MIT
- **Source**: https://github.com/EggerMarc/tools-rs
- **Homepage**: https://crates.io/crates/tools-rs
- **Language**: Rust
- **GitHub**: 7 stars, 2 forks
- **Registry**: github
- **Tags**: `ai`, `function-calling`, `llm`, `llm-agent`, `llm-framework`, `rust`

## Description

Serialize your functions with tools-rs!

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `0.3.3` | 2026-04-14 | High | Don't like rust tools? No problems. You may now add Python tools and rust's runtime will call them as you please  ## What's Changed * Feat/builder by @EggerMarc in https://github.com/EggerMarc/tools-rs/pull/35 * Feat/ffi by @EggerMarc in https://github.com/EggerMarc/tools-rs/pull/36 * Feat/python by @EggerMarc in https://github.com/EggerMarc/tools-rs/pull/37   **Full Changelog**: https://github.com/EggerMarc/tools-rs/compare/0.3...0.3.3 |
| `0.3` | 2026-04-12 | High | ## What's Changed * feat: add context (ctx) as reserved param for shared services via Arc<T> by @EggerMarc in https://github.com/EggerMarc/tools-rs/pull/34   **Full Changelog**: https://github.com/EggerMarc/tools-rs/compare/0.2...0.3 |
| `0.2` | 2026-04-11 | High | Human In the Loop update!  You can now add metadata fields on your tools, typed by a Policy struct. This enables downstream applications to control the flow given how the tool is tagged.  ## What's Changed * Feat/hitl by @EggerMarc in https://github.com/EggerMarc/tools-rs/pull/33   **Full Changelog**: https://github.com/EggerMarc/tools-rs/compare/v0.1.5...0.2 |
| `v0.1.5` | 2025-11-17 | Low | ## Updates  Added `#[derive(Clone)]` to `ToolCollection` Export `CallId` in `prelude` (in `v0.1.4`) |
| `0.1.3` | 2025-10-18 | Low | Added `Clone` derives for `FunctionCall` and `FunctionResponse` |
| `v0.1.2` | 2025-09-21 | Low | ## Changelog  1. Added `FunctionResponse` as the response struct of a successful `tool` call. This struct will hold `id: Option<CallId>`, `name: String`, `result: Value` as fields and implements serde serialization, as display, and PartialEq. The idea behind is to be able to further down the road add tracing to function calls for better management of calls, as well as improved control in serialization.   2. Added `CallId` in both `FunctionResponse` (as stated above) and `FunctionCall`. Att |
| `v0.1.1` | 2025-06-09 | Low | We're pre-releasing tools-rs! Serialize your rust functions and easily build function calling workflows for your llm-agents in rust. |

## Citation

- HTML: https://www.freshcrate.ai/projects/tools-rs
- Markdown: https://www.freshcrate.ai/projects/tools-rs.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/tools-rs/deps

_Generated by freshcrate.ai. Indexes github releases for AI-agent ecosystem packages._
