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

# Working with Claude

> Prompt patterns for designing schemas, loading data, querying, and cleaning up with Claude and Auxilian.

Claude decides which Auxilian tools to call based on what you ask. These patterns help it get the schema right the first time and keep destructive changes deliberate.

## How Claude approaches a request

Auxilian tells connected assistants to work in this order:

1. Call `list_projects` to find the project and your permission on it.
2. Call `list_tables` or `describe_table` to learn the current schema.
3. Read or write rows.

It also tells them that `delete_rows` and the `drop_*` tools cannot be undone, and to prefer small, reversible steps. Naming the project in your request saves a step.

## Design a schema

Describe the data in your own words, and say how records relate:

```text theme={null}
In my "Studio CRM" project, set up tables for companies, contacts, and deals.
A contact belongs to one company. A deal belongs to one company and has an
amount, a stage (lead, proposal, won, lost), and an expected close date.
Deleting a company should delete its contacts but not its deals.
```

Claude creates `companies` first, then `contacts` and `deals` with `uuid` foreign key columns such as `company_id`. It sets `onDelete` to `cascade` for contacts and leaves deals at the default, `restrict`, which blocks deleting a company that still has deals.

<Tip>
  Ask Claude to show you the planned tables before it creates them: "Propose the schema first and wait for my OK." Tables are easy to change while they are empty.
</Tip>

Keep in mind:

* Table and column names use lowercase letters, digits, and underscores. Claude converts "Close Date" to `close_date`. See [Naming rules](/reference/naming-rules).
* A foreign key always points at the other table's `id`. Create the referenced table first.
* There is no enum type. Use `text` and tell Claude the allowed values, or keep a small lookup table.

## Load data

Paste data straight into the chat or attach a file, and say where it goes:

```text theme={null}
Add these to the contacts table in Studio CRM. Match each company by name and
create any company that doesn't exist yet.

Ada Lovelace, ada@analytical.example, Analytical Engines Ltd
Grace Hopper, grace@cobol.example, Compiler Co
```

Claude inserts up to 100 rows per call, so it splits larger batches. Each value must fit its column type. For example, a `timestamptz` column takes an ISO 8601 string such as `2026-11-03T09:00:00Z`.

## Ask questions

Claude reads rows with `list_rows`, which supports filters, sorting, and paging. It does not run arbitrary SQL, so it answers aggregate questions by reading the relevant rows and computing the result:

```text theme={null}
Which deals in Studio CRM are in the proposal stage with an expected close
date before the end of November? Sort them by amount, largest first.
```

For large tables, ask a narrower question so Claude can filter instead of paging through everything. Each call returns at most 100 rows.

## Update and clean up

Updates and deletes apply to every row that matches the filters, so be specific:

```text theme={null}
In the deals table, mark the deal with id 7d1f... as won.
```

```text theme={null}
Delete the test contacts I added today. Show me which rows match before
deleting anything.
```

<Warning>
  `delete_rows`, `drop_column`, and `drop_table` cannot be undone. Auxilian has no trash or point-in-time restore for your data. Export a table to CSV first if you might need it back. See [Export to CSV](/app/export).
</Warning>

## Review what Claude did

Open the project's **Activity** tab in the web app. Every change Claude made is listed with the surface `mcp`, the action, and details such as the table name and row count. See [Activity log](/app/activity).

## When something fails

Auxilian returns errors that say what went wrong and how to fix it, and Claude usually corrects itself and retries. Common cases:

| Message | What to do |
| - | - |
| `Column "rating" expects a integer value` | The value doesn't fit the column type. Fix the value or change the column. |
| `Table "books" does not exist` | Check the table name with `list_tables`. |
| `This project has reached its limit of 25 tables` | Drop a table you don't need, or use another project. |
| `Write budget exhausted (60 per minute); wait a minute and retry` | Wait a minute. Batch inserts into fewer calls. |

See [Responses and errors](/mcp/responses-and-errors) for the full list.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.