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.
- macOS 26+
- Swift 6.2+
- No external dependencies (Foundation only)
Add to your Package.swift:
dependencies: [
.package(path: "../AgentTools")
]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"| Provider | Enum 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 |
The package defines 86+ tools across these categories:
| Category | Tools | Examples |
|---|---|---|
| File Operations | file_manager |
read, write, edit, list, search, diff, undo |
| Version Control | git |
status, diff, log, commit, branch |
| Xcode | xcode |
build, run, analyze, snippet, add/remove files |
| Scripting | agent, applescript_tool, javascript_tool |
create, run, list, delete scripts |
| Shell | execute_agent_command, execute_daemon_command |
user and root command execution |
| Accessibility | accessibility |
list_windows, click, type_text, find_element, screenshot |
| Web | safari, web_search, selenium |
open, click, type, read_content, google_search |
| Conversation | conversation, plan_mode, memory |
text generation, planning, persistent memory |
public enum APIProvider: String, CaseIterable, Codable, SendabledisplayName-- Human-readable provider nameselectableProviders-- Providers available in the settings UI
| Method | Description |
|---|---|
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 |
commonTools |
All standard tool definitions |
toolNames |
All tool name strings |
textFormat |
Plain-text tool reference for text-based models |
public struct ToolDefGeneric tool definition with name, description, properties dictionary, and required parameter list.
MIT