install_pack
Install all skills from a curated agent pack in a single call. Choose a pack like 'research-agent' to set up multiple tools for a specific role.
Instructions
Install all skills from a curated Agent Pack in a single call. Returns a formatted text response listing each skill in the pack with its name, type, slug, and platform-specific install config. Packs are pre-built collections for specific workflows (e.g., 'research-agent' has browser, search, and memory tools). Use this instead of installing skills individually when setting up for a specific role. Do not use this if you only need one specific skill (use install_skill instead).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Pack slug. Examples: 'research-agent', 'full-stack-developer', 'devops-engineer', 'data-engineer', 'browser-automation' | |
| agent | Yes | Target agent platform |
Implementation Reference
- src/src/index.ts:1012-1058 (handler)The handler function that executes the install_pack tool logic. It calls the API endpoint /pack/{slug} with the agent parameter and formats the result showing pack name, outcome, skills list, and install command.
async function handleInstallPack(args: { slug: string; agent: string; }): Promise<string> { const params = new URLSearchParams({ agent: args.agent }); const result = (await fetchJSON( `${API_BASE}/pack/${encodeURIComponent(args.slug)}?${params.toString()}` )) as { name?: string; slug?: string; target_outcome?: string; skills?: Array<{ slug?: string; name?: string; type?: string; install_config?: Record<string, unknown>; }>; install_all_command?: string; error?: string; }; if (result.error) { return `Pack not found: ${result.error}`; } const packSkills = result.skills ?? []; const lines = [ `Agent Pack: ${result.name ?? result.slug}`, `Outcome: ${result.target_outcome ?? "N/A"}`, `Skills: ${packSkills.length}`, `Install all: ${result.install_all_command ?? `npx loaditout add-pack ${args.slug}`}`, "", "Skills in this pack:", "", ]; packSkills.forEach((s, i) => { lines.push(`${i + 1}. ${s.name ?? s.slug} (${s.type ?? "unknown"})`); lines.push(` Slug: ${s.slug}`); if (s.install_config) { lines.push(` Config: ${JSON.stringify(s.install_config)}`); } lines.push(""); }); return lines.join("\n"); } - src/src/index.ts:424-442 (schema)Input schema definition for the install_pack tool, specifying slug (string) and agent (enum with values: claude-code, cursor, codex-cli, windsurf, generic) as required parameters.
name: "install_pack", description: "Install an entire Agent Pack (curated skill bundle). Returns install configs for all skills in the pack. Use this to quickly set up your agent for a specific role like research, full-stack development, DevOps, etc.", inputSchema: { type: "object" as const, properties: { slug: { type: "string", description: "Pack slug. Examples: 'research-agent', 'full-stack-developer', 'devops-engineer', 'data-engineer', 'browser-automation'", }, agent: { type: "string", enum: ["claude-code", "cursor", "codex-cli", "windsurf", "generic"], description: "Target agent platform", }, }, required: ["slug", "agent"], }, - src/src/index.ts:1360-1363 (registration)Registration of the install_pack tool in the main switch/case dispatch block, routing tool calls to handleInstallPack with typed args.
case "install_pack": resultText = await handleInstallPack( toolArgs as { slug: string; agent: string } ); - src/src/index.ts:42-56 (helper)The fetchJSON helper used by handleInstallPack to make HTTP GET requests to the API.
function fetchJSON(url: string, extraHeaders?: Record<string, string>): Promise<unknown> { return new Promise((resolve, reject) => { const headers: Record<string, string> = { "User-Agent": `loaditout-mcp/${SERVER_VERSION}`, ...extraHeaders, }; https .get( url, { headers }, (res) => { if (res.statusCode === 301 || res.statusCode === 302) { const location = res.headers.location; if (location) { fetchJSON(location).then(resolve, reject); - src/src/index.ts:10-10 (helper)The API_BASE constant (https://loaditout.ai/api/agent) used to construct the pack API endpoint URL.
const API_BASE = "https://loaditout.ai/api/agent";