# List field sets

> list_field_sets: Lists the field sets an order can deliver, such as standard or standard_telephone, with their exact columns.

Source: https://emailmovers.com/mydatahub/docs/reference/mcp/list_field_sets

Lists the field sets an order can deliver, such as standard or standard_telephone, with their exact columns. Every field set costs 1 credit a record, with no telephone, download or API surcharge. Use it to pick the field_set for quote_order; it is free and needs no account. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences include corporate subscribers only by default (PECR), so sole traders and ordinary partnerships are left out unless the toggle is changed.

| Property | Value |
| --- | --- |
| Tool name | `list_field_sets` |
| Position in tools/list | 12 of 22 |
| Cost | Free |
| Scope | None. Works without an account. |
| Annotations | readOnlyHint true, destructiveHint false, idempotentHint true, openWorldHint false |
| Kind | Read only; idempotent, not destructive, closed world |
| REST equivalent | [`GET /v1/field-sets`](https://emailmovers.com/mydatahub/docs/reference/rest/list-field-sets.md) |

> **Not yet live.** MyDataHub v2 is built and tested locally and is not yet live. The v2 hosts open at launch, date to confirm. This is what `tools/list` returns from https://mydatahub.emailmovers.com/mcp once v2 launches.

## Input

The schema sets `additionalProperties` to false, so a member that is not listed is refused.

| Member | Type | Required | Description |
| --- | --- | --- | --- |
| `limit` | integer (1 to 100) | no | Items per page, 1 to 100. Default 25. Default `25`. |
| `cursor` | string | no | An opaque cursor from next_cursor. Pass it back unchanged. |

## Example call

The `params` of a `tools/call` request:

```json
{
  "name": "list_field_sets",
  "arguments": {}
}
```

## Output

The result carries `structuredContent` that matches this schema, and one line of text that leads with the number.

| Member | Type | Always present | Description |
| --- | --- | --- | --- |
| `data` | array of `FieldSet` | yes |  |
| `data[].id` | string | yes | Such as standard, standard_telephone or full. |
| `data[].name` | string | yes |  |
| `data[].description` | string | yes |  |
| `data[].credits_per_record` | number (0 or more) | yes | Every field set costs 1 credit a record. |
| `data[].columns` | array of object | yes |  |
| `has_more` | boolean | yes | Whether another page follows. |
| `next_cursor` | string or null | yes | Pass as cursor to fetch the next page; null on the last page. |

## Errors

A failed call returns `isError` true. The text content leads with the sentence a person acts on, then the whole problem as JSON, with `code`, `detail`, `next_step` and `did_you_mean`. A 401 and a step-up 403 are answered at HTTP level so the client can start authorisation. See [Errors](https://emailmovers.com/mydatahub/docs/errors.md).
