> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toolshed.philo.ventures/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Get started with Toolshed in 5 minutes.

## Install and build

```bash theme={null}
git clone https://github.com/Philo-Studio/toolshed.git
cd toolshed
pnpm install
pnpm build
```

## Configure the server

Copy the environment template and add your credentials:

```bash theme={null}
cp apps/server/.env.example apps/server/.env.local
```

At minimum, you need `DATABASE_URL` (Neon Postgres) and `BETTER_AUTH_SECRET`. See [Environment Variables](/reference/environment-variables) for all options.

## Run the database migration

```bash theme={null}
npx @better-auth/cli migrate -y
```

This creates Better Auth's tables (user, session, account, verification) in your Neon database.

## Start the server and web app

```bash theme={null}
# Terminal 1 — API server
pnpm --filter @toolshed/server dev

# Terminal 2 — Web dashboard
pnpm --filter @toolshed/web dev
```

The server runs at `http://localhost:3000`, the web app at `http://localhost:5173`.

## Sign in

Open `http://localhost:5173` and create an account with your `@philo.ventures` email, or sign in with Google.

## Connect tools

1. Go to the **Tools** tab
2. Connect personal tools (GitHub, Google) via OAuth
3. Connect team tools (Slack, Linear, etc.) by entering API keys
4. Toggle built-in tools (Firecrawl, Perplexity, etc.) on/off

## Create an MCP endpoint

1. Go to the **MCP URLs** tab
2. Click **New endpoint** and give it a name
3. Copy the stdio config into your AI tool's MCP config

For Claude Desktop, add to `claude_desktop_config.json`:

```json theme={null}
{
  "mcpServers": {
    "toolshed": {
      "command": "npx",
      "args": ["toolshed", "serve"],
      "env": { "TOOLSHED_TOKEN": "ts_mcp_..." }
    }
  }
}
```

## First interaction

Once connected, an agent interacts through the MCP tools:

```
Agent: "What tools are available for GitHub?"

→ calls search_tools({ query: "github" })
→ finds github.issues.list, github.issues.create, github.repos.search

Agent: "Create an issue for the login bug"

→ calls run({ script: `...tools.github.issues.create(...)...` })
→ execution PAUSES — returns { paused: { executionId: "abc123", ... } }
→ agent calls resume({ execution_id: "abc123", approved: true })
→ issue is created
```

## Development commands

| Command          | Description                      |
| ---------------- | -------------------------------- |
| `pnpm build`     | Build all packages via Turborepo |
| `pnpm dev`       | Start dev mode                   |
| `pnpm test`      | Run all tests (Vitest)           |
| `pnpm typecheck` | Type-check all packages          |
| `pnpm lint`      | Lint with Biome                  |
| `pnpm lint:fix`  | Lint and auto-fix                |
