> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Exist

The Exist connector lets your AI agent act in each user's Exist account. Each user signs in to Exist once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 15 tools.

**Authentication:** OAuth 2.0
**Categories:** Analytics, Productivity
**Tools:** 15: 10 read, 5 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Exist app
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=EXIST)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Exist connection

   In **AgentKit > Connections**, create an Exist connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Exist connections use your own OAuth app. Register one with Exist and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Exist connection.

5. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'exist'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Exist:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'exist_attribute_templates_list',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "exist"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Exist:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="exist_attribute_templates_list",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'exist_attribute_templates_list',
  toolInput: {},
  connector: 'exist',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="exist_attribute_templates_list",
    tool_input={},
    connection_name="exist",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `exist_attribute_templates_list`

List Attribute Templates · Read-only

List the attribute templates Exist supports (its built-in attribute types, such as steps, sleep or mood).
Returns a paged object with count, next, previous and results; each template has name, label, group, priority, value_type and value_type_description.
Use exist_attribute_templates_list to find a template name to pass to exist_attributes_create or exist_attributes_acquire. Use exist_attributes_list for the attributes this user actually has.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `groups` (`string`, optional): Comma-separated attribute group names to filter by, such as activity, productivity, mood, sleep, workouts, events, finance, food, health, location, media, social, weather, symptoms, medication or custom. Example: activity,workouts.
- `include_low_priority` (`boolean`, optional): Set to true to also return low-priority attributes (priority 10 or higher). Leave empty to leave them out.
- `limit` (`integer`, optional): Number of results per page. Leave empty to use Exist's default page size. Example: 50.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Leave empty for the first page. Use the 'next' URL's page number from the previous response to fetch the next page. Example: 2.

Example input: `{}`

### `exist_attribute_values_get`

Get Attribute Values · Read-only

Get the daily values of one Exist attribute, newest first.
Returns a paged object with count, next, previous and results, where each result is a {date, value} pair (date in YYYY-MM-DD, value typed by the attribute's value_type, null for days without data).
Use exist_attribute_values_get to read the history of a single attribute, paging back with page and date_max. Use exist_attributes_with_values_list for recent values across many attributes. Results are limited to the connection's read scopes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attribute` (`string`, required): Name of the attribute to read values for (its 'name' field from exist_attributes_list, not the label). Example: steps.
- `date_max` (`string`, optional): Most recent date to include, inclusive, in YYYY-MM-DD format (the user's local date). Example: 2026-05-16.
- `limit` (`integer`, optional): Number of results per page, at most 100. Leave empty to use Exist's default page size. Example: 50.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Leave empty for the first page. Use the 'next' URL's page number from the previous response to fetch the next page. Example: 2.

Example input: `{"attribute":"<attribute>"}`

### `exist_attributes_list`

List Attributes · Read-only

List the user's Exist attributes (the things they track, such as steps, mood or sleep), without values.
Returns a paged object with count, next, previous and results; each attribute has name, label, template, group, service (the app that owns it), active, priority, manual, value_type, value_type_description and available_services.
Use exist_attributes_list to find attribute names, value types and owners. Use exist_attributes_with_values_list for recent values, exist_attribute_values_get for one attribute's history, and exist_owned_attributes_list for only the attributes this app owns. Results are limited to the connection's read scopes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attributes` (`string`, optional): Comma-separated attribute names to filter by. Use the 'name' field from exist_attributes_list, not the label. Example: steps,mood,sleep.
- `exclude_custom` (`boolean`, optional): Set to true to return only templated attributes and leave out custom ones (such as custom tags). Leave empty to include both.
- `groups` (`string`, optional): Comma-separated attribute group names to filter by, such as activity, productivity, mood, sleep, workouts, events, finance, food, health, location, media, social, weather, symptoms, medication or custom. Example: activity,workouts.
- `include_inactive` (`boolean`, optional): Set to true to also return inactive attributes (active = false), which Exist usually hides. Leave empty to return active attributes only.
- `include_low_priority` (`boolean`, optional): Set to true to also return low-priority attributes (priority 10 or higher). Leave empty to leave them out.
- `limit` (`integer`, optional): Number of results per page. Leave empty to use Exist's default page size. Example: 50.
- `manual` (`boolean`, optional): Set to true to return only manually tracked attributes, or false to leave them out. Leave empty to include both.
- `owned` (`boolean`, optional): Set to true to return only attributes owned by this app (client). Leave empty to return all of the user's attributes.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Leave empty for the first page. Use the 'next' URL's page number from the previous response to fetch the next page. Example: 2.

Example input: `{}`

### `exist_attributes_with_values_list`

List Attributes With Values · Read-only

List the user's Exist attributes together with their most recent daily values.
Returns a paged object with count, next, previous and results; each attribute has name, label, template, group, service, priority, manual, active, value_type, value_type_description and a values array of {date, value} pairs, newest first, with null for days without data.
Use exist_attributes_with_values_list for a dashboard of recent days (up to 31) across many attributes. Use exist_attribute_values_get for the full history of one attribute. Results are limited to the connection's read scopes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attributes` (`string`, optional): Comma-separated attribute names to filter by. Use the 'name' field from exist_attributes_list, not the label. Example: steps,mood,sleep.
- `date_max` (`string`, optional): Most recent date to include, inclusive, in YYYY-MM-DD format (the user's local date). Example: 2026-05-16.
- `days` (`integer`, optional): Number of days of values to include for each attribute, from 1 to 31. Exist's default is 1 (today only). Example: 7.
- `groups` (`string`, optional): Comma-separated attribute group names to filter by, such as activity, productivity, mood, sleep, workouts, events, finance, food, health, location, media, social, weather, symptoms, medication or custom. Example: activity,workouts.
- `limit` (`integer`, optional): Number of results per page. Leave empty to use Exist's default page size. Example: 50.
- `manual` (`boolean`, optional): Set to true to return only manually tracked attributes. Leave empty to include all.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Leave empty for the first page. Use the 'next' URL's page number from the previous response to fetch the next page. Example: 2.
- `templates` (`string`, optional): Comma-separated attribute template names to filter by, such as steps,sleep,mood. Use this instead of attributes when you only care about templated attributes; use one or the other, not both.

Example input: `{}`

### `exist_averages_list`

List Averages · Read-only

List the user's weekly Exist averages (actually medians over the last 60 days) per attribute, broken down by day of the week.
Returns a paged object with count, next, previous and results; each result has attribute, date, overall, and monday through sunday.
Use exist_averages_list for the user's typical values and goals. Set include_historical with attributes to get past weeks' averages for trend lines. Results are limited to the connection's read scopes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attributes` (`string`, optional): Comma-separated attribute names to filter by. Use the 'name' field from exist_attributes_list, not the label. Example: steps,mood,sleep.
- `date_max` (`string`, optional): Most recent date to include, inclusive, in YYYY-MM-DD format (the user's local date). Example: 2026-05-16.
- `date_min` (`string`, optional): Oldest date to include, inclusive, in YYYY-MM-DD format (the user's local date). Example: 2026-04-01.
- `groups` (`string`, optional): Comma-separated attribute group names to filter by, such as activity, productivity, mood, sleep, workouts, events, finance, food, health, location, media, social, weather, symptoms, medication or custom. Example: activity,workouts.
- `include_historical` (`boolean`, optional): Set to true to return past weekly averages too, newest first, instead of only the latest set. Best combined with attributes to limit it to one attribute.
- `limit` (`integer`, optional): Number of results per page. Leave empty to use Exist's default page size. Example: 50.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Leave empty for the first page. Use the 'next' URL's page number from the previous response to fetch the next page. Example: 2.

Example input: `{}`

### `exist_correlation_get`

Get Correlation · Read-only

Get the correlation Exist found between two specific attributes, if there is one.
Returns a single correlation object with attribute, attribute2, value (from -1 to 1), p, percentage, stars, second_person, strength_description, stars_description and rating; Exist returns HTTP 404 when it has found no correlation for the pair.
Use exist_correlation_get to answer whether two things are related, such as sleep and workouts. Use exist_correlations_list to browse all correlations. At least one of the two attributes must be in the connection's read scopes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attribute` (`string`, required): Name of the first attribute (its 'name' field, not the label). Order doesn't matter. Example: sleep.
- `attribute2` (`string`, required): Name of the second attribute (its 'name' field, not the label). Order doesn't matter. Example: workouts_min.

Example input: `{"attribute":"<attribute>","attribute2":"<attribute2>"}`

### `exist_correlations_list`

List Correlations · Read-only

List the correlations Exist found between the user's attributes in the last week (for example "you sleep more when you go to bed earlier").
Returns a paged object with count, next, previous and results; each correlation has attribute, attribute2, value (from -1 to 1), p, percentage, stars (confidence, 5 is highest), second_person (a plain-English sentence), strength_description, stars_description, period, offset, date and rating.
Use exist_correlations_list to browse relationships, filtered by attribute, strength or confidence. Use exist_correlation_get to check one specific pair. Correlations are generated weekly on Sundays; they show relationships, not causes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attribute` (`string`, optional): Attribute name to limit correlations to (its 'name' field, not the label). Example: sleep.
- `confident` (`integer`, optional): Set to 1 to return only correlations with five-star confidence. Leave empty to return all. One of: `1`.
- `limit` (`integer`, optional): Number of results per page, at most 100. Leave empty to use Exist's default page size. Example: 50.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Leave empty for the first page. Use the 'next' URL's page number from the previous response to fetch the next page. Example: 2.
- `strong` (`integer`, optional): Set to 1 to return only correlations above Exist's strength threshold. Leave empty to return all. One of: `1`.

Example input: `{}`

### `exist_insights_list`

List Insights · Read-only

List the insights Exist generated from the user's data, such as a record step count or a monthly summary.
Returns a paged object with count, next, previous and results; each insight has created, target_date, type (name, period, priority and the related attribute), html and text.
Use exist_insights_list to surface notable events in the user's data, filtered by date or priority. Use exist_correlations_list for relationships between attributes. Results are limited to the connection's read scopes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `date_max` (`string`, optional): Most recent date to include, inclusive, in YYYY-MM-DD format (the user's local date). Example: 2026-05-16.
- `date_min` (`string`, optional): Oldest date to include, inclusive, in YYYY-MM-DD format (the user's local date). Example: 2026-04-01.
- `limit` (`integer`, optional): Number of results per page, at most 100. Leave empty to use Exist's default page size. Example: 50.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Leave empty for the first page. Use the 'next' URL's page number from the previous response to fetch the next page. Example: 2.
- `priority` (`integer`, optional): Insight priority to filter by: 1 today (real time), 2 day level, 3 week level, 4 month level. Leave empty for all. One of: `1`, `2`, `3`, `4`.

Example input: `{}`

### `exist_owned_attributes_list`

List Owned Attributes · Read-only

List the user's Exist attributes that this app (client) currently owns, without values.
Returns a paged object with count, next, previous and results; each attribute has name, label, template, group, service, active, priority, manual, value_type, value_type_description and available_services.
Use exist_owned_attributes_list to check which attributes this app can write to. Use exist_attributes_list for all of the user's attributes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attributes` (`string`, optional): Comma-separated attribute names to filter by. Use the 'name' field from exist_attributes_list, not the label. Example: steps,mood,sleep.
- `exclude_custom` (`boolean`, optional): Set to true to return only templated attributes and leave out custom ones (such as custom tags). Leave empty to include both.
- `groups` (`string`, optional): Comma-separated attribute group names to filter by, such as activity, productivity, mood, sleep, workouts, events, finance, food, health, location, media, social, weather, symptoms, medication or custom. Example: activity,workouts.
- `include_inactive` (`boolean`, optional): Set to true to also return inactive attributes (active = false), which Exist usually hides. Leave empty to return active attributes only.
- `include_low_priority` (`boolean`, optional): Set to true to also return low-priority attributes (priority 10 or higher). Leave empty to leave them out.
- `limit` (`integer`, optional): Number of results per page. Leave empty to use Exist's default page size. Example: 50.
- `manual` (`boolean`, optional): Set to true to return only manually tracked attributes, or false to leave them out. Leave empty to include both.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Leave empty for the first page. Use the 'next' URL's page number from the previous response to fetch the next page. Example: 2.

Example input: `{}`

### `exist_profile_get`

Get Profile · Read-only

Get the authenticated Exist user's profile and preferences.
Returns username, first and last name, avatar URL, timezone, current local time, the imperial_* unit flags (distance, weight, energy, liquid, temperature), and trial and delinquent account status.
Use exist_profile_get to learn the user's timezone and today's local date before reading or writing daily values, and which units to display. No scope is required.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `exist_attribute_values_increment`

Increment Attribute Values · Write

Add an amount to the current daily value of one or more numeric Exist attributes (up to 35 increments per call).
Returns an object with success and failed arrays; each successful item includes current, the new total for that day, and each failed item carries error and error_code. HTTP 200 means all succeeded, 202 means some failed.
Use exist_attribute_values_increment to count events as they happen without tracking the running total. Use exist_attribute_values_update to set a total. String, scale and time-of-day attributes can't be incremented.
Prerequisites: the attribute must already exist and be owned by this app (exist_attributes_acquire or exist_attributes_create).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `increments` (`array`, required): The amounts to add, one object per attribute and day, at most 35. Each needs the attribute name and a numeric value (integer or float, matching the attribute's type); the date in YYYY-MM-DD is optional and defaults to today. Example: [{"name": "steps", "date": "2026-05-20", "value": 700}, {"name": "steps_active_min", "value": 5}].

Example input: `{"increments":[{"name":"steps","date":"2026-05-20","value":700},{"name":"steps_active_min","value":5}]}`

### `exist_attribute_values_update`

Update Attribute Values · Write

Set the total daily value of one or more Exist attributes, overwriting any existing value for that day (up to 35 updates per call).
Returns an object with success and failed arrays; each failed item carries error and error_code. HTTP 200 means all succeeded, 202 means some failed.
Use exist_attribute_values_update to write a day's total. Use exist_attribute_values_increment to add to the current value instead. Non-null values can't be set back to null.
Prerequisites: the connection needs the matching write scope, and this app must own each attribute first (exist_attributes_acquire or exist_attributes_create).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `updates` (`array`, required): The values to write, one object per attribute and day, at most 35. Each needs the attribute name, the date in YYYY-MM-DD (the user's local date, see exist_profile_get for their timezone), and a value that matches the attribute's value type: a string, an integer or a float. Example: [{"name": "mood", "date": "2026-05-20", "value": 7}, {"name": "mood_note", "date": "2026-05-20", "value": "Great day"}].

Example input: `{"updates":[{"name":"mood","date":"2026-05-20","value":7},{"name":"mood_note","date":"2026-05-20","value":"Great day"}]}`

### `exist_attributes_acquire`

Acquire Attributes · Write

Take ownership of one or more of the user's Exist attributes so this app can write their values (up to 35 per call). Acquiring a templated attribute the user doesn't have yet creates it.
Returns an object with success and failed arrays; each failed item carries error and error_code. HTTP 200 means all succeeded, 202 means some failed. Set success_objects to 1 to get full attribute objects back.
Use exist_attributes_acquire once per attribute before writing with exist_attribute_values_update or exist_attribute_values_increment. Use exist_attributes_create for a new custom attribute, and exist_attributes_release to give ownership back. The user isn't asked to approve, so tell them.
Prerequisites: the connection needs the write scope for each attribute's group.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `attributes` (`array`, required): The attributes to acquire, at most 35. Identify each one by template (a template name from exist_attribute_templates_list, which creates the attribute if the user doesn't have it) or by name (an existing attribute's name from exist_attributes_list). Optionally set manual to true or false to mark it as manually tracked or not. Example: [{"template": "mood"}, {"name": "mood_note", "manual": false}].
- `success_objects` (`integer`, optional): Set to 1 to get the full attribute object for each successful item in the response, instead of an echo of what you sent. Leave empty for the echo. One of: `1`.

Example input: `{"attributes":[{"template":"mood"},{"name":"mood_note","manual":false}]}`

### `exist_attributes_create`

Create Attributes · Write

Create one or more new Exist attributes for the user, from a template or fully custom, owned by this app (up to 35 per call).
Returns an object with success and failed arrays; each failed item carries error and error_code. HTTP 200 means all succeeded, 202 means some failed. Read the created attribute's name from the response, since a custom attribute's name may differ from its label; set success_objects to 1 to get full attribute objects.
Use exist_attributes_create to add an attribute the user doesn't track yet. Use exist_attributes_acquire to take over an existing attribute.
Prerequisites: the connection needs the write scope for the attribute's group, or manual_write for manual attributes in any group.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `attributes` (`array`, required): The attributes to create, at most 35. For a templated attribute give only template (a name from exist_attribute_templates_list). For a custom attribute give label (the user-facing title), group (an existing group name such as mood, health or custom) and value_type: 0 integer, 1 decimal, 2 string, 3 duration in minutes, 4 time of day in minutes from midnight, 5 percentage from 0.0 to 1.0, 7 boolean, 8 scale from 1 to 9 (6 is reserved for templates). manual is optional and defaults to true. Example: [{"template": "facebook_reactions"}, {"label": "Glasses of water", "group": "food", "value_type": 0, "manual": true}].
- `success_objects` (`integer`, optional): Set to 1 to get the full attribute object for each successful item in the response, instead of an echo of what you sent. Leave empty for the echo. One of: `1`.

Example input: `{"attributes":[{"template":"facebook_reactions"},{"label":"Glasses of water","group":"food","value_type":0,"manual":true}]}`

### `exist_attributes_release`

Release Attributes · Write

Give up this app's ownership of one or more Exist attributes (up to 35 per call). Ownership passes to another connected service that can supply the attribute, or the attribute becomes inactive.
Returns an object with success and failed arrays; each failed item carries error and error_code (for example when this app doesn't own the attribute). HTTP 200 means all succeeded, 202 means some failed.
Use exist_attributes_release when the user stops syncing an attribute from this app. Use exist_attributes_acquire to take ownership.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `names` (`array`, required): Names of the attributes to release, at most 35. Use each attribute's 'name' field, not its label. Example: ["mood", "mood_note"].

Example input: `{"names":["mood","mood_note"]}`

## Related

Other Analytics connectors ([all 109](/agentkit/connectors/?category=analytics)):

- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Snowflake](/agentkit/connectors/snowflake/): Scalekit connector, OAuth, 42 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
