Execution context engineering for AI agents. One interface for tool discovery, validation, execution, and multi-step workflows. Pure Rust. 11 crates.
One interface for local functions, MCP servers, and OpenAPI endpoints. Type-safe parameters with JSON Schema validation. Builder pattern APIs.
Full Model Context Protocol support via rs-utcp. STDIO and HTTP transports. Tools, resources, and prompts. Drop-in for any MCP-compatible agent.
Compose multi-step tool chains with variable interpolation, timeout/retry policies, execution hooks, and pluggable executors. Load from SKILL.md files.
Filter and search tools with a powerful query language. Wildcards, boolean operators, parameter constraints. name:search and min:2
| Crate | Description | Tests |
|---|---|---|
| thulp-core | Core types, traits, parameter validation | 70 |
| thulp-mcp | MCP transport (STDIO/HTTP), tools, resources | 39 |
| thulp-skills | Multi-step workflows, executor, hooks, retry | 54 |
| thulp-skill-files | SKILL.md parsing, YAML frontmatter, scope priority | 23 |
| thulp-query | Query DSL with nom parser | 19 |
| thulp-workspace | Sessions, persistence, turn counting | 6 |
| thulp-adapter | OpenAPI v2/v3 to tool conversion | 10 |
| thulp-registry | Async thread-safe tool registry with tagging | 8 |
| thulp-browser | Web fetching, HTML parsing, optional CDP | 7 |
| thulp-guidance | Template rendering, LLM guidance primitives | 6 |
| thulp-cli | CLI with JSON output and shell completions | 32 |
use thulp_core::{ToolDefinition, Parameter, ParameterType};
let tool = ToolDefinition::builder("search")
.description("Search for information")
.parameter(
Parameter::builder("query")
.param_type(ParameterType::String)
.required(true)
.build()
)
.build();
use thulp_mcp::McpClient;
let client = McpClient::connect_stdio("server", "mcp-server", None).await?;
let tools = client.list_tools().await?;
let result = client.call(&ToolCall::builder("search")
.arg_str("query", "rust async")
.build()).await?;
thulp tools list --output json
thulp tools validate search --args '{"query": "rust"}'
thulp convert openapi spec.yaml --output tools.yaml
thulp completions bash > ~/.local/share/bash-completion/completions/thulp