# Leads tools

> MCP tools for Leads: leads_create.

- `leads_create`: Send a sales enquiry to Ownrecord

## `leads_create`

**Send a sales enquiry to Ownrecord.** Operation [`leads.create`](https://ownrecord.io/docs/reference/leads-create.md) · Brand level · permission `customers:write` · risk tier `write` · since M12

Records a sales enquiry for Ownrecord itself (the /contact form of ownrecord.io) and emails it to Ownrecord's
sales team. It works only on the platform brand (`ownrecord`); any other brand slug answers `resource_not_found`.

The enquiry keeps the name, email, company, a monthly volume range, the optional message, the page it was sent
from and what the visitor agreed to: `consent.contact` (required, Ownrecord may use the details to answer) and
`consent.marketing` (optional opt-in to product updates), with the version of the consent text. No IP address is
stored.

Requests are limited per client IP (5 an hour) and per address (3 a day), whether or not they succeed
(`rate_limited`). The website form also has a honeypot field and drops what bots send before calling this.

Public: the website calls it, no API key needed.

Annotations: `readOnlyHint: false` · `destructiveHint: false` · `idempotentHint: false` · `openWorldHint: true`

### Arguments

| Argument          | Type                                                                       | Required | Description                                                                                                                                                                                              |
| ----------------- | -------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`            | string                                                                     | yes      | The person to answer. (1–200 characters)                                                                                                                                                                 |
| `email`           | string                                                                     | yes      | Where sales answers. (at most 254 characters)                                                                                                                                                            |
| `company`         | string                                                                     | yes      | The company the request is for. (1–200 characters)                                                                                                                                                       |
| `volumeRange`     | one of `not_live_yet`, `under_30k`, `30k_to_175k`, `175k_to_1m`, `over_1m` | yes      | Monthly live volume, roughly.                                                                                                                                                                            |
| `message`         | string                                                                     | no       | What the request is about (optional). (at most 5000 characters)                                                                                                                                          |
| `sourcePage`      | string                                                                     | yes      | The site page the form was sent from, e.g. `/contact`. (at most 200 characters)                                                                                                                          |
| `consent`         | object                                                                     | yes      | `contact` must be true: the visitor agrees that Ownrecord uses the details to answer. `marketing` opts in to product updates (default false).                                                            |
| `brandSlug`       | string                                                                     | yes      | The platform brand's slug (`ownrecord`): leads belong to Ownrecord's own brand. (1–64 characters)                                                                                                        |
| `entity_id`       | ID (`ent_…`)                                                               | no       | Optional: the brand's legal entity (ent\_…); `brand_id` alone is enough.                                                                                                                                 |
| `brand_id`        | ID (`brd_…`)                                                               | no       | The brand to act on (brd\_…), inside your API key's reach. Needed with an organization or entity key; a brand key acts on its own brand.                                                                 |
| `idempotency_key` | string                                                                     | no       | A unique string for this change. Retrying with the same key and arguments never acts twice. When left out, the server generates one and returns it in the result's `idempotency_key`. (1–255 characters) |

- **Brand:** pass `brand_id` with an organization or entity key; a brand key acts on its own brand.
- **Idempotency:** the result returns the `idempotency_key` used, yours or one the server generated. Retry with it: a call with the same key and arguments never acts twice (keys are kept for 24 hours).
- **Dry run:** not supported. `dry_run: true` fails with `dry_run_not_supported`.

### Errors

- [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed): A field is missing or malformed: an empty name or company, an email that isn't an address, an unknown `volumeRange`, a `sourcePage` that isn't a site path, or `consent.contact` not true.
- [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found): `brandSlug` isn't the platform brand (leads exist only on Ownrecord's own brand).
- [`rate_limited`](https://ownrecord.io/docs/reference/errors.md#rate_limited): Too many enquiries from this client IP (5 an hour) or for this address (3 a day); wait `retry_after_ms`.

### Example

**Ask sales about Enterprise**

Arguments:

```json
{
  "brandSlug": "ownrecord",
  "name": "Ana Kovač",
  "email": "ana@example.com",
  "company": "Acme Digital d.o.o.",
  "volumeRange": "175k_to_1m",
  "message": "We run two brands from two EU entities and want to talk about Enterprise.",
  "sourcePage": "/contact",
  "consent": {
    "contact": true,
    "marketing": false
  },
  "brand_id": "brd_01jbx4m3v8e9t0s6k2c5n7q1wz",
  "idempotency_key": "8d0c5f8e-4b7a-4e43-9b0f-2f6a0c1d9e21"
}
```

Result `output`:

```json
{
  "object": "lead",
  "id": "lead_01m4tx5nj8emwbyf7y9vcf48c0",
  "createdAt": "2026-10-26T09:30:00.000Z",
  "message": "Thanks. We've received your request and will answer at ana@example.com."
}
```
