Skip to content
Back to skills

Mcp Tool Auditor

ASecurity

Audit builtin MCP tool implementations against the Tool Design Manifesto. Use when reviewing builtin tools for compliance, checking context_prompt usage, validating text-first MCPResult design, or auditing canonical naming and session isolation correctness.

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 28, 2026
ai-agentsrust

Works with

  • mcp

Security analysis

A100/100

Scanned September 28, 2026

npx -y skills add fritzprix/libr-agent --skill mcp-tool-auditor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mcp Tool Auditor?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mcp Tool Auditor
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fritzprix-mcp-tool-auditor/badge)](https://www.skillsdirectory.com/skills/fritzprix-mcp-tool-auditor)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: mcp-tool-auditor
description: Audit builtin MCP tool implementations against the Tool Design Manifesto. Use when reviewing builtin tools for compliance, checking context_prompt usage, validating text-first MCPResult design, or auditing canonical naming and session isolation correctness.
---

# MCP Tool Auditor

Audit builtin MCP tool implementations in LibrAgent for compliance with the Tool Design Manifesto.

## Audit Checklist

### 1. context_prompt vs structured_state

- [ ] `context_prompt` contains all information the AI needs (readable text, short IDs ok)
- [ ] `structured_state` is NOT relied upon for AI decision-making (AI never sees it)
- [ ] Critical IDs (full session IDs, process IDs, file paths) are in `context_prompt` text

### 2. MCPResult Text-First Design

- [ ] Critical data appears in `content` (text), not just `structured_content`
- [ ] Process IDs, file paths, status messages are copy-pasteable from text
- [ ] Error details are in text output
- [ ] `structured_content` is supplementary for UI rendering only

### 3. Canonical Naming

- [ ] Tool names follow project conventions (no alias proliferation)
- [ ] No redundant tools that could be consolidated

### 4. Session Isolation

- [ ] No global state in builtin server implementations
- [ ] Per-session state is scoped to session ID
- [ ] `MCPServiceProxy` instances are session-specific

### 5. Error Handling

- [ ] Errors return `Result<MCPResult, String>` consistently
- [ ] Error messages are actionable with next steps
- [ ] No `unwrap()` in production code paths

## Usage

Run audits against:

- `src-tauri/src/mcp/builtin/` - All builtin MCP servers
- `src-tauri/src/mcp/` - MCP integration layer
- `docs/guides/builtin_tool_bp.md` - Design standard reference

## Anti-Patterns to Flag

```rust
// ❌ WRONG: Critical ID only in structured_content
let result = MCPResult {
    content: vec![text("Background process started")],
    structured_content: Some(json!({
        "process_id": "7573a69b",  // AI can't see this!
    })),
    is_error: Some(false),
};

// ✅ CORRECT: ID visible in text output
let result = MCPResult {
    content: vec![text("Background process started (ID: 7573a69b)\nUse pollProcess(\"7573a69b\") to check status")],
    structured_content: Some(json!({
        "process_id": "7573a69b",  // Redundant but useful for UI
    })),
    is_error: Some(false),
};
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…