<div align="center">
  <img src="assets/img/banner.png" alt="Kodegen AI Banner" width="100%" />
</div>

# kodegen-tools-introspection

> Memory-efficient, Blazing-Fast MCP tools for code generation agents

Introspection tools for monitoring and debugging tool usage in AI agent systems. Part of the [KODEGEN.ᴀɪ](https://kodegen.ai) ecosystem.

## Features 

This MCP server provides two essential introspection tools:

### 🔍 inspect_tool_calls 

Get chronological tool call history with full arguments and outputs.

**Use cases:**
- Onboard new chat sessions by reviewing completed work
- Recover context after chat history loss
- Debug tool call sequences and execution flow
- Navigate large tool histories with flexible pagination

**Pagination support:**
```rust
// First 50 calls (default)
{ "max_results": 50 }

// Last 20 calls (tail behavior)
{ "offset": -20 }

// Calls 50-99 (range)
{ "offset": 50, "max_results": 50 }

// Filter by tool name
{ "tool_name": "read_file", "offset": -10 }

// Filter by timestamp
{ "since": "2024-10-12T20:00:00Z" }
```

### 📊 inspect_usage_stats

Get comprehensive usage statistics and performance metrics.

**Returns:**
- Total tool calls (successful and failed)
- Success/failure rates
- Breakdown by category (filesystem, terminal, edit, search, etc.)
- Per-tool call counts
- Session information and timestamps

## Installation

Add to your `Cargo.toml`:

```toml
[dependencies]
kodegen_tools_introspection = "0.1"
```

## Usage

### Running the Server

```bash
# Development
cargo run

# Production
cargo build --release
./target/release/kodegen-introspection
```

### As a Library

```rust
use kodegen_tools_introspection::{InspectUsageStatsTool, InspectToolCallsTool};

// Create tools
let usage_tool = InspectUsageStatsTool::new(usage_tracker);
let history_tool = InspectToolCallsTool::new();

// Register with MCP routers
let (tool_router, prompt_router) = register_tool(
    tool_router,
    prompt_router,
    usage_tool,
);
```

### Example Client

```bash
cargo run --example introspection_demo
```

The example demonstrates:
- Connecting to the local HTTP server
- Calling both introspection tools
- Logging requests/responses
- Graceful shutdown

## Building

```bash
# Build
cargo build

# Run tests
cargo test

# Lint
cargo clippy

# Format
cargo fmt
```

## Architecture

- **Library** (`src/lib.rs`): Exports tool implementations
- **Binary** (`src/main.rs`): HTTP server using `kodegen_server_http`
- **History**: Persisted to `~/.config/kodegen-mcp/tool-history.jsonl` (last 1000 calls)

## Requirements

- Rust nightly toolchain
- Components: rustfmt, clippy
- Targets: x86_64-apple-darwin, wasm32-unknown-unknown

## License

Licensed under either of:

- Apache License, Version 2.0
- MIT License

at your option.

## Links

- [Homepage](https://kodegen.ai)
- [Repository](https://github.com/cyrup-ai/kodegen-tools-introspection)
