---
title: get_entity
description: Fetch the full raw provider payload for one ad entity by provider, type, and id.
---

Returns the complete, raw provider payload for a single entity — every provider-native field, not just the lean metadata [`list_entities`](/mcp/tools/list-entities) surfaces. Use `list_entities` to discover the `provider`, `type`, and `id` first.

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `provider` | `'meta' \| 'gads' \| 'tiktok' \| 'snapchat' \| 'dv360'` | yes | The provider that owns the entity. |
| `type` | `string` | yes | Provider-native entity type, e.g. `campaign`, `adset`, `ad`, `creative`. |
| `id` | `string` | yes | Bare provider-native entity id (no prefix). |

## Output

`{ entity: … }` — the raw provider payload as stored, exactly as the provider returned it (budgets, targeting, creative bodies, and every other native field). The shape varies by provider and entity type.

## Example

> _"Show me everything about that ad."_

After finding the ad via `list_entities`, Claude calls `get_entity({ provider: 'meta', type: 'ad', id: '123456' })` and reads back the full Meta ad object.

:::tip[list vs. get]

`list_entities` returns lean metadata for many entities; `get_entity` returns the full native payload for exactly one. Reach for `get_entity` only when you need fields beyond name / status / type.

:::

## Errors

- **Entity not found** — no such entity, or it isn't owned by your organization (the two are indistinguishable by design, so a wrong ID and a foreign ID look the same).
- **Payload unavailable** — the entity is known but its stored payload is temporarily missing.
- `401` or `403` — see [Errors](/mcp/errors), which every tool shares. This one needs `observe:read`.
