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

# Install Tool

> Install a Tool Hub tool into your organization

Tool install endpoints use:

```text theme={null}
https://tools.runtools.ai/v1
```

## Path Parameters

<ParamField path="slug" type="string" required>
  Tool slug, such as `github`, `gmail`, or `slack`.
</ParamField>

## Response

<ResponseField name="slug" type="string">
  Tool slug.
</ResponseField>

<ResponseField name="installed" type="boolean">
  Whether the tool is installed.
</ResponseField>

<ResponseField name="credentialsRequired" type="boolean">
  Whether the tool requires OAuth, stored secrets, or explicit credentials.
</ResponseField>

<ResponseField name="credentialMode" type="string">
  `oauth`, `secret`, `none`, or a tool-specific mode.
</ResponseField>

<ResponseField name="requiredCredentialFields" type="array">
  Required credential field names.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://tools.runtools.ai/v1/tools/github/install \
    -H "X-API-Key: $RUNTOOLS_API_KEY"
  ```

  ```typescript SDK theme={null}
  const installed = await rt.tools.install('github');
  ```
</RequestExample>

<ResponseExample>
  ```json 201 Created theme={null}
  {
    "data": {
      "slug": "github",
      "installed": true,
      "credentialsRequired": true,
      "credentialMode": "oauth",
      "requiredCredentialFields": []
    }
  }
  ```
</ResponseExample>

## Credentials

OAuth-enabled tools resolve connected accounts automatically. Secret-backed tools can use stored credentials:

```typescript theme={null}
await rt.tools.storeCredentials('my-tool', {
  apiKey: process.env.MY_TOOL_API_KEY!,
});

const status = await rt.tools.credentials('my-tool');
await rt.tools.clearCredentials('my-tool');
```
