Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 48 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,33 @@
# Thulp
# thulp

[![CI](https://github.com/dirmacs/thulp/actions/workflows/ci.yml/badge.svg)](https://github.com/dirmacs/thulp/actions/workflows/ci.yml)
[![crates.io](https://img.shields.io/crates/v/thulp-core.svg)](https://crates.io/crates/thulp-core)
[![docs.rs](https://docs.rs/thulp-core/badge.svg)](https://docs.rs/thulp-core)
[![License](https://img.shields.io/crates/l/thulp-core.svg)](LICENSE-MIT)

**Execution Context Engineering Platform for AI Agents**
## Execution Context Engineering Platform for AI Agents

Thulp is a Rust-based toolkit for building AI agents with rich execution contexts. It provides abstractions for tool discovery, execution, workspace management, and integration with the Model Context Protocol (MCP).
Thulp is a Rust-based toolkit for building AI agents with rich execution
contexts. It provides abstractions for tool discovery, execution, workspace
management, and integration with the Model Context Protocol (MCP) via the
[UTCP](https://github.com/universal-tool-calling-protocol/rs-utcp)
(Universal Tool Calling Protocol) implementation.

## Overview

Thulp enables AI agents to interact with external tools and services through a unified interface. It handles the complexity of tool discovery, validation, execution, and result handling while providing extensibility through adapters and custom integrations.
Thulp enables AI agents to interact with external tools and services through a
unified interface. It handles the complexity of tool discovery, validation,
execution, and result handling while providing extensibility through adapters
and custom integrations.

### Key Features

- **Unified Tool Abstraction**: Consistent interface for defining, validating, and executing tools
- **MCP Integration**: Full Model Context Protocol support via `rs-utcp` (tools, resources, prompts)
- **Type-Safe Parameters**: Strongly-typed parameter validation with JSON Schema support
- **Unified Tool Abstraction**: Consistent interface for defining, validating,
and executing tools
- **MCP Integration**: Full Model Context Protocol support via `rs-utcp` UTCP
Copy link

Copilot AI Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Redundant wording: using both "rs-utcp" (the Rust implementation) and "UTCP" (the protocol) creates awkward phrasing. Consider simplifying to either "via the rs-utcp implementation" or "via UTCP (Universal Tool Calling Protocol)" to avoid the repetition.

Suggested change
- **MCP Integration**: Full Model Context Protocol support via `rs-utcp` UTCP
- **MCP Integration**: Full Model Context Protocol support via the `rs-utcp`

Copilot uses AI. Check for mistakes.
implementation (tools, resources, prompts)
- **Type-Safe Parameters**: Strongly-typed parameter validation with JSON
Schema support
- **Query DSL**: Powerful query language for filtering and searching tools
- **Skill Workflows**: Compose multi-step tool workflows with variable interpolation
- **Async by Design**: Built on `tokio` for efficient async execution
Expand All @@ -31,28 +41,28 @@ Thulp is organized as a Cargo workspace with 10 crates:

### Core Crates

| Crate | Description |
|-------|-------------|
| **thulp-core** | Core types and traits (`ToolDefinition`, `Parameter`, `ToolCall`, `Transport`) |
| **thulp-mcp** | MCP transport implementation (STDIO/HTTP, tools, resources, prompts) |
| **thulp-adapter** | OpenAPI v2/v3 to tool definition conversion |
| **thulp-registry** | Async thread-safe tool registry with tagging |
| Crate | Description |
| ------------------ | ------------------------------------------------- |
| **thulp-core** | Core types and traits (`ToolDefinition`, etc.) |
| **thulp-mcp** | MCP transport (STDIO/HTTP, tools, resources) |
| **thulp-adapter** | OpenAPI v2/v3 to tool definition conversion |
| **thulp-registry** | Async thread-safe tool registry with tagging |

### Feature Crates

| Crate | Description |
|-------|-------------|
| **thulp-query** | Query DSL for searching and filtering tools |
| **thulp-skills** | Multi-step tool workflow composition and execution |
| **thulp-workspace** | Workspace and execution context management |
| **thulp-browser** | Web fetching, HTML parsing, optional CDP support |
| **thulp-guidance** | Template rendering and LLM guidance primitives |
| Crate | Description |
| ------------------ | ------------------------------------------------- |
| **thulp-query** | Query DSL for searching and filtering tools |
| **thulp-skills** | Multi-step workflow composition and execution |
| **thulp-workspace**| Workspace and execution context management |
Copy link

Copilot AI Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing space after the pipe character in the table. The formatting should be "| thulp-workspace |" with a space before the closing pipe to match the formatting of other rows in the table.

Suggested change
| **thulp-workspace**| Workspace and execution context management |
| **thulp-workspace** | Workspace and execution context management |

Copilot uses AI. Check for mistakes.
| **thulp-browser** | Web fetching, HTML parsing, optional CDP support |
| **thulp-guidance** | Template rendering and LLM guidance primitives |

### CLI

| Crate | Description |
|-------|-------------|
| **thulp-cli** | Command-line interface with JSON output and shell completions |
| Crate | Description |
| ------------- | -------------------------------------------------- |
| **thulp-cli** | CLI with JSON output and shell completions |

## Installation

Expand Down Expand Up @@ -106,7 +116,11 @@ use thulp_mcp::McpClient;
let client = McpClient::connect_http("server", "http://localhost:8080".to_string()).await?;

// Or via STDIO
let client = McpClient::connect_stdio("server", "path/to/mcp-server".to_string(), None).await?;
let client = McpClient::connect_stdio(
"server",
"path/to/mcp-server".to_string(),
None
).await?;

// List available tools
let tools = client.list_tools().await?;
Expand Down Expand Up @@ -260,11 +274,11 @@ cargo fmt --all -- --check

### Feature Flags

| Crate | Flag | Description |
|-------|------|-------------|
| thulp-mcp | `ares` | Ares server integration |
| thulp-browser | `cdp` | Chrome DevTools Protocol support |
| thulp-examples | `mcp` | MCP example |
| Crate | Flag | Description |
| -------------- | ------ | --------------------------------- |
| thulp-mcp | `ares` | Ares server integration |
| thulp-browser | `cdp` | Chrome DevTools Protocol support |
| thulp-examples | `mcp` | MCP example |

## Contributing

Expand All @@ -282,8 +296,8 @@ Contributions are welcome! Please follow these guidelines:

Licensed under either of:

- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)

at your option.

Expand All @@ -293,9 +307,10 @@ at your option.
- [Crates.io](https://crates.io/search?q=thulp)
- [Documentation](https://docs.rs/thulp-core)
- [MCP Specification](https://modelcontextprotocol.io/)
- [rs-utcp](https://github.com/anthropics/utcp-rs)
- [rs-utcp](https://github.com/universal-tool-calling-protocol/rs-utcp)

## Acknowledgments

- **rs-utcp**: MCP protocol implementation
- **rs-utcp**: UTCP protocol implementation (includes MCP transport)
- **Anthropic**: Model Context Protocol specification
- **UTCP**: Universal Tool Calling Protocol
Copy link

Copilot AI Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The acknowledgment entry for "UTCP: Universal Tool Calling Protocol" is unusual. Acknowledgments typically credit people, organizations, or specific projects/implementations, not protocols themselves. Consider removing this line since UTCP is already acknowledged through the rs-utcp entry above.

Suggested change
- **UTCP**: Universal Tool Calling Protocol

Copilot uses AI. Check for mistakes.
4 changes: 2 additions & 2 deletions docs/PROJECT_OVERVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,5 +83,5 @@ MIT/Apache-2.0 dual license (standard Rust ecosystem licensing)

## Links

- **Dirmacs Organization**: https://github.com/dirmacs
- **rs-utcp** (core dependency): https://github.com/universal-tool-calling-protocol/rs-utcp
- **Dirmacs Organization**: <https://github.com/dirmacs>
- **rs-utcp** (core dependency): <https://github.com/universal-tool-calling-protocol/rs-utcp>