AgentTools

March 31, 2026 ยท View on GitHub

A Swift package that provides shared system prompts, tool definitions, and API provider management for macOS AI agents. Single source of truth for tool schemas across 10 LLM providers.

Requirements

  • macOS 26+
  • Swift 6.2+
  • No external dependencies (Foundation only)

Installation

Add to your Package.swift:

dependencies: [
    .package(path: "../AgentTools")
]

Usage

import AgentTools

// Get system prompt for an agent session
let prompt = AgentTools.systemPrompt(
    userName: "todd",
    userHome: "/Users/todd",
    projectFolder: "/Users/todd/MyProject"
)

// Get tool definitions for a specific provider
let tools = AgentTools.tools(for: .claude)

// Generate Ollama/OpenAI-format tool schemas
let ollamaTools = AgentTools.ollamaTools(
    isEnabled: { _ in true },
    mcpTools: [],
    compact: false
)

// Check provider info
let name = APIProvider.claude.displayName  // "Claude"

Supported Providers

ProviderEnum Case
Claude (Anthropic).claude
OpenAI.openAI
DeepSeek.deepSeek
Z.ai.zAI
Hugging Face.huggingFace
Ollama Cloud.ollama
Local Ollama.localOllama
vLLM.vLLM
LM Studio.lmStudio
Apple Intelligence.foundationModel

Tool Categories

The package defines 86+ tools across these categories:

CategoryToolsExamples
File Operationsfile_managerread, write, edit, list, search, diff, undo
Version Controlgitstatus, diff, log, commit, branch
Xcodexcodebuild, run, analyze, snippet, add/remove files
Scriptingagent, applescript_tool, javascript_toolcreate, run, list, delete scripts
Shellexecute_agent_command, execute_daemon_commanduser and root command execution
Accessibilityaccessibilitylist_windows, click, type_text, find_element, screenshot
Websafari, web_search, seleniumopen, click, type, read_content, google_search
Conversationconversation, plan_mode, memorytext generation, planning, persistent memory

Public API

APIProvider

public enum APIProvider: String, CaseIterable, Codable, Sendable
  • displayName -- Human-readable provider name
  • selectableProviders -- Providers available in the settings UI

AgentTools

MethodDescription
systemPrompt(userName:userHome:projectFolder:)Full system prompt for desktop agents
compactSystemPrompt(userName:userHome:projectFolder:)Compact version for small context windows
codingModePrompt(projectFolder:)Minimal prompt for coding iterations
tools(for:)Tool definitions for a given provider
ollamaTools(isEnabled:mcpTools:compact:)Ollama/OpenAI-format tool schemas
claudeTool(name:description:properties:required:)Anthropic-format tool schema
commonToolsAll standard tool definitions
toolNamesAll tool name strings
textFormatPlain-text tool reference for text-based models

ToolDef

public struct ToolDef

Generic tool definition with name, description, properties dictionary, and required parameter list.

License

MIT