diff --git a/content/trading/swapping-api/agent-attribution.mdx b/content/trading/swapping-api/agent-attribution.mdx
new file mode 100644
index 000000000..3e74dd735
--- /dev/null
+++ b/content/trading/swapping-api/agent-attribution.mdx
@@ -0,0 +1,82 @@
+---
+title: Agent Attribution (X-Agent-Info)
+description: Send the optional X-Agent-Info header to attribute agent-driven Trading API traffic, and check x-agent-info-status to confirm it was recognized.
+---
+
+If your integration is built or operated by an AI agent, the Uniswap API accepts an optional `X-Agent-Info` request header so that agent-driven traffic can be measured separately from human-driven traffic.
+
+
+
+`X-Agent-Info` is purely for analytics. Humans and human-facing clients can ignore it entirely. Omitting it, sending it, or sending it incorrectly has no effect on your request — it never changes the response status, body, or any swap behavior.
+
+
+
+## Sending the header
+
+Send `X-Agent-Info` alongside your usual [authentication](/docs/trading/swapping-api/integration-guide#authentication) headers, with a JSON object value containing up to three fields:
+
+| Field | Type | Required | Notes |
+| --- | --- | --- | --- |
+| `decision_origin` | string | Yes | Must be exactly `autonomous` or `human_mediated` (case-sensitive). Any other value marks the header malformed. |
+| `integration_name` | string | No | Name of your integration or agent, e.g. `my-trading-bot`. Up to 256 characters. |
+| `version` | string | No | Version identifier for your integration. Up to 256 characters. |
+
+Any other keys in the object are silently dropped rather than rejected, so it's safe to reuse an object that carries additional fields for your own purposes — only the three fields above are ever attributed.
+
+```bash
+curl -X POST https://trade-api.gateway.uniswap.org/v1/quote \
+ -H "x-api-key: YOUR_API_KEY" \
+ -H "Content-Type: application/json" \
+ -H 'X-Agent-Info: {"decision_origin":"autonomous","integration_name":"my-trading-bot","version":"1.4.0"}' \
+ -d '{"tokenIn":"0x...","tokenOut":"0x...","amount":"1000000",...}'
+```
+
+## What makes a header malformed
+
+A header is dropped (marked malformed) rather than rejected outright if any of the following hold. The request still succeeds either way — see [Confirming it was received](#confirming-it-was-received) below for how to tell the difference.
+
+- The raw header value is larger than **1024 bytes** (UTF-8), measured before parsing.
+- The value isn't valid JSON, or is valid JSON that isn't a plain object (an array, string, number, boolean, or `null`).
+- `decision_origin` is missing, or is anything other than exactly `autonomous` or `human_mediated`.
+- `integration_name` or `version` is present but isn't a string, or exceeds 256 characters.
+- `integration_name` or `version` contains control characters or unpaired surrogate code points.
+
+Not sending the header at all, or sending it with an empty value, isn't an error condition — both are simply "no attribution," the same outcome as a header that's out of scope for your client.
+
+## Confirming it was received
+
+Because the request succeeds regardless of whether `X-Agent-Info` parsed, check the `x-agent-info-status` response header to confirm your header was actually recognized:
+
+- **`x-agent-info-status: malformed`** — the header was received but failed one of the checks above and was dropped. This value is a fixed string; it never echoes anything from your request.
+- **No `x-agent-info-status` header at all** — this happens when your `X-Agent-Info` header parsed successfully, when you didn't send one, or when the request's response wasn't itself successful (the diagnostic header is only stamped on successful responses). If you're debugging a request that also failed for an unrelated reason (rate limiting, request validation, no route found), the absence of this header doesn't confirm your `X-Agent-Info` header was fine — retry against a request that otherwise succeeds. Attribution is a side channel: on a successful response, a working integration looks identical, from the response alone, to one that sent nothing.
+
+```typescript
+const response = await fetch('https://trade-api.gateway.uniswap.org/v1/quote', {
+ method: 'POST',
+ headers: {
+ 'x-api-key': 'YOUR_API_KEY',
+ 'Content-Type': 'application/json',
+ 'X-Agent-Info': JSON.stringify({
+ decision_origin: 'autonomous',
+ integration_name: 'my-trading-bot',
+ version: '1.4.0',
+ }),
+ },
+ body: JSON.stringify({
+ /* ...quote request... */
+ }),
+});
+
+if (response.headers.get('x-agent-info-status') === 'malformed') {
+ // Received but dropped — check field names, decision_origin value, and length limits above.
+ console.warn('X-Agent-Info was sent but not recognized.');
+}
+
+const quote = await response.json();
+```
+
+
+
+A malformed or missing `X-Agent-Info` header never changes the response status, body, or swap behavior. The worst case is that your traffic isn't attributed to your integration.
+
+
diff --git a/content/trading/swapping-api/common-errors.mdx b/content/trading/swapping-api/common-errors.mdx
index 0aef420b6..bb30c1044 100644
--- a/content/trading/swapping-api/common-errors.mdx
+++ b/content/trading/swapping-api/common-errors.mdx
@@ -9,6 +9,8 @@ description: Troubleshoot common Uniswap API request, quoting, authentication, a
The API is specific about request header validation. In particular, ensure that your `accept` and `content-type` headers only include the value `application/json`. For a complete example of properly formatted request headers, see the authentication section of the [Developer Dashboard](https://developers.uniswap.org/dashboard).
+If you're sending the optional `X-Agent-Info` attribution header and it isn't being picked up, check the response for an `x-agent-info-status: malformed` header — see [Agent Attribution](/docs/trading/swapping-api/agent-attribution#confirming-it-was-received) for the full set of rules that make the header malformed.
+
### Rate limits
Most API keys have a default rate limit of 6 requests per second (RPS). If you exceed the rate limit supported by an API key you can expect to receive an HTTP 429 error. If you receive a 429 error, we recommend pausing all requests from your API key and then retrying your requests. If you require a higher rate limit than what your API key is currently provisioned for, please reach out to [Uniswap Developer Support](https://support.uniswap.org/hc/en-us/requests/new). For more information on rate limits, see the [Developer Dashboard](https://developers.uniswap.org/dashboard).
diff --git a/content/trading/swapping-api/integration-guide.mdx b/content/trading/swapping-api/integration-guide.mdx
index b8ff37079..3c4ff7673 100644
--- a/content/trading/swapping-api/integration-guide.mdx
+++ b/content/trading/swapping-api/integration-guide.mdx
@@ -48,6 +48,8 @@ const quote = await response.json();
AI builders can consume the full Open API Specification (OAS) at [https://trade-api.gateway.uniswap.org/v1/api.json](https://trade-api.gateway.uniswap.org/v1/api.json).
+If your integration is built or operated by an AI agent, also consider sending the optional [`X-Agent-Info` attribution header](/docs/trading/swapping-api/agent-attribution) alongside your request.
+
Full code examples for completing a basic swap workflow are available in [Swapping Code Examples](/docs/trading/swapping-api/swapping-code-examples).
## Architecture
diff --git a/content/trading/swapping-api/meta.json b/content/trading/swapping-api/meta.json
index df804dcbe..1ef124c66 100644
--- a/content/trading/swapping-api/meta.json
+++ b/content/trading/swapping-api/meta.json
@@ -5,6 +5,7 @@
"concepts",
"supported-chains",
"integration-guide",
+ "agent-attribution",
"chained-actions",
"chained-actions-integration",
"amm-vs-uniswapx-routing",
diff --git a/content/uniswap-ai/overview.mdx b/content/uniswap-ai/overview.mdx
index 2a2061062..eb0bf8fb5 100644
--- a/content/uniswap-ai/overview.mdx
+++ b/content/uniswap-ai/overview.mdx
@@ -5,6 +5,8 @@ description: Get started with Uniswap AI plugins, skills, and LLM context.
Use Uniswap AI to speed up swap integration, hook development, and EVM workflows with tools designed for builders on Uniswap.
+If your agent talks to the Trading API directly, send the optional [`X-Agent-Info` attribution header](/docs/trading/swapping-api/agent-attribution) so agent-driven traffic is measured separately from human-driven traffic.
+
## Uniswap AI
The [Uniswap AI repository](https://github.com/Uniswap/uniswap-ai) is an open-source collection of plugins and skills for coding agents. It provides protocol-specific guidance for Uniswap APIs and smart contracts.