ExD Accelerator MCP Server
The ExD Accelerator MCP Server provides 39 MCP tools to automate the full lifecycle of Adobe Journey Optimizer's Experience Decisioning (ExD) setup — from CSV analysis to placements — without leaving your MCP client.
CSV Analysis & Schema Management
Parse CSV files to infer XDM types and get suggestions for schema fields, eligibility rules, and ranking formulas (read-only, no data written)
Create XDM fieldgroups from CSV column names and attach them to the decisioning schema
Add, deprecate (custom or OOB), and detach fields/fieldgroups
Inspect the full resolved decisioning schema, list fieldgroups, view field definitions, audit logs, and descriptors
Offer Management
Bulk-create offers from CSV rows (with
dry_runpreview mode)Full CRUD: create, list, fetch by ID, and update (JSON Patch) individual offer items
Collections
Full CRUD: create collections with flexible filter constraints (by name, category, custom field, priority, or all offers), list, fetch, update, and delete
Eligibility Rules
Full CRUD: create PQL-based eligibility rules, list, fetch, update, and delete
Ranking Formulas
Full CRUD: create ranking formulas (static priority, custom field, recency-hybrid, or custom PQL), list, fetch, update, and delete
Selection Strategies
Full CRUD: wire collections, eligibility rules, and ranking formulas into selection strategies; list, fetch, update, and delete
Placements
Create and manage channel placements (web, email, push, mobile, in-app); list, fetch, and update
Inventory & Safety
Fetch a full read-only snapshot of all ExD resources in the sandbox (offers, collections, rules, formulas, strategies, placements)
All write operations require explicit
confirmed: true— every tool previews changes before executing, preventing accidental modificationsAutomatically mints and caches IMS tokens from Adobe credentials (Client ID, Client Secret, Org ID, etc.)
Deployment
Run locally as a stdio server (e.g., Claude Desktop) or deploy to Vercel as a Streamable HTTP endpoint for team-shared access, with each user supplying their own Adobe credentials via headers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ExD Accelerator MCP ServerCreate a new offer from my CSV data for premium users"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ExD Accelerator — MCP Server
AI-native Experience Decisioning lifecycle automation for Adobe Journey Optimizer. End-to-end ExD setup from a single chat conversation: CSV → schema fields → offers → collections → eligibility rules → ranking → selection strategy → placements.
39 MCP tools wrapping AEP Schema Registry and Decisioning APIs. Every write operation previews what it will do and requires explicit confirmed: true before executing.
Live endpoint: https://exd-mcp-server-without-auth.vercel.app/api/mcp
Health: https://exd-mcp-server-without-auth.vercel.app/api/health
Two ways to run this
A. Local stdio (Claude Desktop)
npm install
cp .env.example .env # fill in CLIENT_ID, CLIENT_SECRET, sandbox, schema, catalog
npm start # runs src/stdio.jsThen point Claude Desktop at it (%APPDATA%\Claude\claude_desktop_config.json on
Windows, ~/Library/Application Support/Claude/claude_desktop_config.json on
macOS):
{
"mcpServers": {
"exd-accelerator": {
"command": "node",
"args": ["/absolute/path/to/exd-mcp-server/src/stdio.js"],
"env": {
"CLIENT_ID": "…",
"CLIENT_SECRET": "…",
"ORG_ID": "…@AdobeOrg",
"SANDBOX_NAME": "…",
"TENANT_ID": "…",
"DECISIONING_SCHEMA_URI": "https://ns.adobe.com/…/schemas/…",
"DECISIONING_SCHEMA_ALT_ID": "_….schemas.…",
"ITEM_CATALOG_ID": "xcore:decision-catalog:…"
}
}
}
}Restart Claude Desktop. You'll see the 🔧 tool icon — ExD Accelerator is live.
B. Vercel deployment (for sharing with Adobe coworkers)
Push this repo to GitHub.
Import it in vercel.com/new. Framework preset: Other.
Deploy — Vercel auto-detects
api/mcp.jsas the serverless route.Do not add Adobe credentials to Vercel environment variables. Each coworker supplies their own credentials via HTTP headers when they connect.
Adobe coworker setup
Once deployed at https://your-app.vercel.app, each coworker adds this in their
MCP client config (Claude Desktop, Adobe AO Chat, Claude.ai, etc.):
Setting | Value |
Server URL |
|
Transport | Streamable HTTP |
Auth | None at the transport level — credentials go in headers |
Custom headers (one-time, in the MCP client config — NOT in chat messages):
x-adobe-client-id: <Adobe Dev Console: Client ID>
x-adobe-client-secret: <Adobe Dev Console: Client Secret>
x-adobe-org-id: <IMS Org ID>@AdobeOrg
x-adobe-sandbox: <sandbox name>
x-adobe-tenant-id: <tenant id, e.g. acssandboxgdcthree>
x-adobe-schema-uri: https://ns.adobe.com/<tenant>/schemas/<id>
x-adobe-schema-alt-id: _<tenant>.schemas.<id>
x-adobe-catalog-id: xcore:decision-catalog:<id>The server uses client_credentials to mint a token automatically, caches it per
client_id, and refreshes on expiry. The marketer never sees the token.
Related MCP server: IBM Decision Intelligence MCP Server
Is Vercel a good fit for a production MCP endpoint?
Yes, for this workload. Each MCP tool call is a single short HTTP roundtrip to Adobe Platform APIs — no long-running state, no streaming required, no WebSocket. Vercel's serverless model maps cleanly:
Concern | Verdict |
Stateless requests | ✅ Each MCP call is independent. No session state. |
Cold-start latency | ⚠️ ~300–500ms on first call after idle. Subsequent calls reuse the warm container. |
60s function timeout (Pro tier) | ⚠️ |
10s timeout (Hobby tier) | ⚠️ |
Auto-scaling | ✅ Each coworker's request gets its own invocation. |
HTTPS, custom domain, env-per-deploy | ✅ Built in. |
SSE / long-polling | ❌ Not used here — we run Streamable HTTP with |
When Vercel isn't right: if you need server-initiated notifications, very large bulk operations (hundreds of writes), or stateful sessions across many calls, deploy to a long-lived host (Railway, Render, Fly, ECS) and run the same codebase. The transport layer is the only difference.
All 39 tools
Read-only (no confirmation needed)
# | Tool | What it does |
1 |
| Parses CSV, infers XDM types per column, suggests eligibility rules and ranking formulas. Always call first. No API calls. |
9 |
| Fetches a single offer item by DPS ID |
10 |
| Lists all offers in catalog with pagination |
16 |
| Full inventory: offers, collections, rules, formulas, strategies, placements |
17 |
| Full resolved schema with OOB + tenant fields; accepts |
18 |
| Lists all tenant fieldgroups for the offer item class |
19 |
| Full field definitions inside a specific fieldgroup |
20 |
| Chronological change history for the decisioning schema |
21 |
| Identity, deprecation, display name, relationship descriptors |
27 |
| Fetches a single item collection by DPS ID |
28 |
| Lists all item collections with pagination |
30 |
| Fetches a single eligibility rule by DPS ID |
31 |
| Lists all ExD eligibility rules with pagination (filters to exdRule==true) |
33 |
| Fetches a single ranking formula by DPS ID |
34 |
| Lists all ExD ranking formulas with pagination (filters to exdFunction==true) |
36 |
| Fetches a single selection strategy by DPS ID |
37 |
| Lists all selection strategies with pagination |
39 |
| Fetches a single channel placement by DPS ID |
Write (require confirmed: true)
# | Tool | What it does |
2 |
| Creates XDM fieldgroup from CSV columns, attaches to decisioning schema. Checks for duplicates first. |
3 |
| Creates offer items from CSV rows. Supports |
4 |
| Creates offer collection with filter constraint |
5 |
| Creates PQL eligibility rule |
6 |
| Creates ranking formula (static, custom field, recency-hybrid, custom PQL) |
7 |
| Wires collection + rule + formula into a selection strategy |
8 |
| Creates channel placement via |
11 |
| JSON Patch update on any offer field |
12 |
| Adds a single field to an existing tenant fieldgroup |
13 |
| Sets |
14 |
| Creates |
15 |
| Removes fieldgroup from schema |
22 |
| JSON Patch update on an existing item collection |
23 |
| JSON Patch update on an existing eligibility rule |
24 |
| JSON Patch update on an existing ranking formula |
25 |
| JSON Patch update on an existing selection strategy |
26 |
| Full-replace (PUT) update on an existing channel placement |
29 |
| Permanently deletes an item collection |
32 |
| Permanently deletes an eligibility rule |
35 |
| Permanently deletes a ranking formula |
38 |
| Permanently deletes a selection strategy |
Full CRUD (create/list/lookup/update/delete) is now available for offers, collections, eligibility rules, ranking formulas, and selection strategies. Placements support create/list/lookup/update — no delete endpoint exists for placements in the DPS API.
Confirmation pattern
Every write tool shows a preview and blocks with:
⚠️ CONFIRMATION REQUIRED — no changes made yet
[preview of what will happen]
✅ To proceed, call this tool again with confirmed: trueCall the same tool again with confirmed: true to execute.
Recommended workflow from a fresh CSV
1. parse_csv_and_suggest → analyse CSV, no writes
2. list_schema_fieldgroups → check if fieldgroup already exists
3. create_offer_metadata_fieldgroup → push schema fields (confirmed: true)
4. lookup_decisioning_schema → verify fields attached
5. bulk_create_offers (dry_run) → preview offer payloads
6. bulk_create_offers (confirmed) → create offers
7. list_offer_items → verify
8. create_collection → group offers (confirmed: true)
9. create_eligibility_rule → targeting (confirmed: true)
10. create_ranking_formula → ranking logic (confirmed: true)
11. create_selection_strategy → wire it all together (confirmed: true)
12. create_placement → define channel (confirmed: true)
13. get_setup_summary → verify full setupSample CSV for testing
name,description,category,brand,discount_percent,price,region,priority,start_date,end_date
Summer Glow Kit,Complete summer skincare set,Skincare,GlowCo,20,49.99,US,1,2024-06-01,2024-08-31
SPF Starter Bundle,SPF 30 and 50 combo,Skincare,GlowCo,15,29.99,US,2,2024-06-01,2024-09-30
Loyalty 20% Off,Exclusive 20% for gold members,Discount,GlowCo,20,0,Global,1,2024-01-01,2024-12-31Column mapping:
name→itemName(OOB),description→itemDescription,priority→itemPriority,start_date/end_date→itemCalendarConstraintseverything else →
_<tenant>.<column>(custom fieldgroup)
File layout
exd-mcp-server-without-auth/
├── src/
│ ├── server.js ← buildMcpServer(config) + 21 tool definitions
│ ├── stdio.js ← stdio entry (npm start) — for Claude Desktop
│ └── http-local.js ← local HTTP server for testing the Vercel route
├── api/
│ └── mcp.js ← Vercel serverless route (Streamable HTTP)
├── scripts/
│ └── smoke.js ← smoke test for stdio + HTTP transports
├── vercel.json
├── package.json
├── .env.example
└── .gitignoreSmoke testing
npm install
cp .env.example .env # fill in
npm run smoke # runs stdio + HTTP transport tests, calls real Adobe APIsExpected output ends with All smoke checks passed.
Troubleshooting
Symptom | Likely cause | Fix |
| CLIENT_ID/CLIENT_SECRET not set | Add to |
| Credentials invalid or revoked | Regenerate the OAuth Server-to-Server credential in Adobe Developer Console |
| Credential lacks AEP access | The OAuth credential's product profile needs |
| Wrong org/sandbox | Check |
List offers returns 0 | Wrong | Each sandbox has its own catalog ID |
Tool call exceeds 10s on Vercel Hobby | Bulk operation too large | Upgrade to Pro (60s) or chunk the CSV |
| Resolved by 2.0 — file an issue if you still see this | — |
What this MCP does NOT do (future scope)
Decisioning policy / campaign creation — creates components but not the final AJO policy that ties strategy + placement.
Delete operations — AEP recommends archive over delete.
Audience creation — eligibility rules reference profile attributes but don't create AEP segments.
Cross-channel coherence scoring — would require AEP Query Service integration.
Available Tools
21 toolsadd_schema_fieldC
Add a single new field to an existing tenant fieldgroup. Requires confirmed: true to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed | No | ||
| field_name | Yes | ||
| field_type | No | string | |
| field_title | Yes | ||
| access_token | No | ||
| fieldgroup_id | Yes | ||
| definition_key | No | offerMetadata | |
| field_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. It mentions a confirmation requirement but fails to describe side effects, permission needs, or what happens when confirmation is false. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters and no output schema, but the description provides minimal context. It does not explain the fieldgroup_id requirement, field_type enum, or defaults, leaving significant gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain parameter meaning. It only mentions 'confirmed', ignoring other parameters like 'field_name', 'field_type', 'field_title', and 'definition_key', leaving the agent without crucial semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a single new field') and the resource ('existing tenant fieldgroup'), distinguishing it from tools that create fieldgroups or do bulk operations, though it does not explicitly differentiate from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that 'confirmed: true' is required to execute, providing a precondition, but it offers no guidance on when to use this tool versus alternatives like 'create_offer_metadata_fieldgroup' or 'deprecate_schema_field'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_create_offersA
Bulk-create ExD offer items from CSV rows. Each row becomes one offer. Requires confirmed: true to execute — previews payloads first. Use dry_run: true to inspect full JSON payloads.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Returns full JSON payloads without calling the API | |
| csv_text | Yes | Full CSV text | |
| confirmed | No | Set to true to execute the write. Leave false to preview. | |
| access_token | No | Bearer token — optional, server will auto-mint if missing | |
| lifecycle_status | No | draft |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description discloses the preview-then-confirm safety pattern. But lacks details on error handling, rate limits, or destructive potential. Adds some value beyond schema but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently cover purpose and usage. No wasted words; front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately explains core workflow for a 5-param tool with no output schema or annotations. Missing details on CSV format, max rows, error handling, but schema fills some gaps. Could be more thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 80% parameters with descriptions. Description adds context ('Each row becomes one offer' for csv_text, 'previews payloads first' for confirmed) but not substantial beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Bulk-create ExD offer items from CSV rows. Each row becomes one offer.' The verb and resource are specific, and it differentiates from sibling tools like single offer creation or metadata fieldgroups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance: use dry_run to preview, set confirmed true to execute. Implicitly advises against direct execution without preview. However, does not explicitly mention when not to use or alternatives like individual creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionA
Create an offer item collection with a filter constraint. Requires confirmed: true to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Collection display name | |
| confirmed | No | Set to true to execute the write. | |
| description | No | ||
| filter_type | Yes | How to filter offers into this collection | |
| access_token | No | ||
| filter_value | No | Value to filter on — required for all filter types except 'all' | |
| custom_field_path | No | Tenant field path for by_custom_field e.g. category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It reveals that a confirmation flag is needed, implying a two-step write process. However, it does not describe side effects, what happens if confirmed is false, or the nature of the creation (e.g., does it modify existing data?). This is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that convey the purpose and a critical requirement. No unnecessary words, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description should ideally mention what the tool returns (e.g., created collection ID). It also lacks context about how the filter types work with the parameters. While the schema provides enums, the description could tie them together. Overall, it is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, so the schema already documents most parameters. The description text does not add additional meaning beyond what the schema provides, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates an offer item collection with a filter constraint. The verb 'create' and resource 'collection' are specific. However, it does not explicitly distinguish it from sibling tools like 'create_placement' or 'create_selection_strategy', but the name and context make the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a key usage requirement: 'Requires confirmed: true to execute.' This provides essential guidance on how to use the tool but does not offer when to use it over alternatives or what constitutes appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_eligibility_ruleC
Create a PQL eligibility rule for Experience Decisioning. Requires confirmed: true to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Rule display name | |
| confirmed | No | ||
| description | No | ||
| access_token | No | ||
| pql_expression | Yes | PQL expression e.g. profile.loyaltyTier.in(["gold","platinum"]) or true for all visitors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the 'confirmed' parameter requirement but fails to disclose other behavioral traits such as what happens if confirmed is false, return values, error conditions, or permission requirements. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous words. The primary action is stated first, and the usage condition is appended clearly. It is appropriately sized for the information provided, though it could include more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, 2 required, no output schema, and no annotations, the description is incomplete. It does not explain what a PQL eligibility rule is, what the return value looks like, or how to handle errors. The sibling tools suggest a broader system context (Experience Decisioning) that is not leveraged in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40% (2 of 5 parameters have descriptions). The description adds value by explaining that 'confirmed: true' is required to execute, which goes beyond the schema's default=false. However, it does not clarify the meaning of 'access_token' or 'description' beyond the schema defaults, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Create a PQL eligibility rule for Experience Decisioning,' which clearly identifies the verb (create) and resource (eligibility rule) and domain. While it distinguishes from sibling tools like create_collection or create_placement by being specific to rules, it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a usage requirement: 'Requires confirmed: true to execute.' This tells the agent when the tool actually performs its action. However, it does not provide advice on when to use this tool over alternatives, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_offer_metadata_fieldgroupA
Create a new XDM fieldgroup from CSV column names and attach it to the ExD decisioning schema. Will check for an existing fieldgroup with the same name first. Requires confirmed: true to execute — previews first.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_text | Yes | Full CSV text — column names become schema fields | |
| confirmed | No | Set to true to execute. Leave false to preview only. | |
| access_token | No | Bearer token — optional, server will auto-mint if missing | |
| fieldgroup_name | No | Display name for the new fieldgroup | Offer Metadata - CSV Import |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behaviors: checking for existing fieldgroup with the same name (idempotency hint), requiring confirmation to execute (safety mechanism), and previewing first. This is good transparency for a mutation tool, though it does not describe failure modes or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose. Every sentence adds value: the first defines the action, the second covers safety and preview behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the main flow and confirmation requirement, but does not describe the return value or error scenarios (e.g., what happens if a duplicate name is found?). For a tool with 4 parameters and no output schema, the description could be more complete, especially regarding expected outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description in the schema. The description adds minor context (e.g., 'column names become schema fields' for csv_text, 'preview first' for confirmed), but does not significantly enhance understanding beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create a new XDM fieldgroup from CSV column names and attach it to the ExD decisioning schema'), clearly identifying the verb, resource, and context. It distinguishes itself from sibling tools like add_schema_field (which adds individual fields) and parse_csv_and_suggest (which only parses) by specifying the creation and attachment of a fieldgroup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a preview-then-confirm workflow ('Requires confirmed: true to execute — previews first'), but it does not explicitly state when to use this tool versus alternatives (e.g., add_schema_field for individual fields, parse_csv_and_suggest for just parsing). No exclusion criteria or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_placementA
Create a channel placement for Experience Decisioning. Uses /exd-placements endpoint. Requires confirmed: true to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| status | No | active | |
| channel | Yes | ||
| confirmed | No | ||
| description | No | ||
| access_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially discloses behavior: it uses the /exd-placements endpoint and requires confirmed=true. However, it does not describe side effects, return values, or error conditions, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant information. Every word is necessary and front-loaded, making it efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage, no output schema, and no annotations, the description is incomplete. It fails to explain the concept of a 'channel placement', the meaning of channel values, or how to use status and access_token, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only adds value for the 'confirmed' parameter; other parameters like name, status, channel, description, and access_token are not explained, leaving their semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a 'channel placement for Experience Decisioning', which is a specific verb+resource. No sibling tool has a similar purpose, so it is well-distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a required condition ('confirmed: true to execute'), but does not provide guidance on when to use this tool versus alternatives or any scenarios to avoid. The context is clear but lacks exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ranking_formulaC
Create a ranking formula for Experience Decisioning. Requires confirmed: true to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Formula display name | |
| confirmed | No | ||
| custom_pql | No | ||
| description | No | ||
| access_token | No | ||
| formula_type | Yes | ||
| custom_field_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the 'confirmed' requirement but fails to explain side effects, destructions, or authorization beyond the access_token parameter. For a creation tool, more details about what happens upon creation are expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences and no redundant words. It is front-loaded with the main purpose. However, the brevity sacrifices necessary detail, making it less structured for complex parameter understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is severely lacking given the tool's complexity (7 parameters, no output schema, no annotations). It does not explain what a ranking formula is, how to choose formula_type, or what the output will be, leaving the agent mostly blind.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% (only 'name' has a description). The tool description adds no explanation for parameters like custom_pql, formula_type, or custom_field_name, leaving the agent without essential context to set these values correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'ranking formula' within the context of 'Experience Decisioning'. This sufficiently distinguishes it from sibling tools like create_collection or create_eligibility_rule, though it does not explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is 'Requires confirmed: true to execute.' This provides a condition for successful invocation but offers no advice on when to use this tool over alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_selection_strategyA
Wire a collection, eligibility rule, and ranking formula into a selection strategy. Requires confirmed: true to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| priority | No | Static priority score (1 = highest) when no ranking formula is set | |
| confirmed | No | ||
| description | No | ||
| access_token | No | ||
| collection_id | Yes | ID of the item collection e.g. dps:item-collection:xxxxx | |
| ranking_formula_id | No | ID of the ranking formula. Omit for static priority. | |
| eligibility_rule_id | No | ID of the eligibility rule. Omit for all visitors. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure burden. It reveals the confirmation requirement, a key behavioral trait, but fails to mention other important aspects such as idempotency, whether it updates or creates, or error conditions. The disclosure is partially transparent but has clear gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero wasted words. The first sentence conveys the core action; the second provides a critical prerequisite. Information is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's 8 parameters and no output schema, the description covers the essential components and a key constraint but omits explanation of name, priority, description, and access_token. It adequately sets context for a creation tool but lacks completeness in detailing all inputs. The sibling context helps but does not compensate fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for three parameters (collection, eligibility rule, ranking formula) and the confirmed flag, aligning with the schema's 50% coverage. However, it does not explain the remaining parameters (name, priority, description, access_token), which are either required or have defaults. The added value is moderate but not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose with a specific verb ('wire') and resource ('selection strategy'), listing the three components it assembles. This clearly distinguishes it from sibling tools that create individual components (e.g., create_collection, create_eligibility_rule).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a critical usage condition ('Requires confirmed: true to execute'), which is essential for correct invocation. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide when-not guidance or prerequisites beyond the confirmation flag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deprecate_oob_fieldA
Deprecate an OOB Adobe-managed field on the decisioning schema via a descriptor. Use for standard fields like itemDescription, itemName. For custom tenant fields use deprecate_schema_field. Requires confirmed: true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed | No | ||
| field_path | Yes | JSON pointer path to the field e.g. /_experience/decisioning/decisionitem/itemDescription | |
| access_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It states the tool uses a descriptor and requires confirmed: true, but does not explain what deprecation entails (e.g., irreversible, impact on schema) or any side effects. Some behavioral context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each serving a purpose: defining the action and providing usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and moderate parameter complexity, the description covers the key distinctions from siblings and the confirmed requirement. However, it could provide more details on the deprecation effect or prerequisites. Still fairly complete for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (33%), with only field_path having a description. The description adds that 'confirmed' must be true, which provides context beyond the schema default of false, but it does not explain access_token or fully describe the confirmed parameter's role. Partial value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deprecates an OOB Adobe-managed field on the decisioning schema using a descriptor. It gives specific examples like itemDescription and itemName, and distinguishes from the sibling tool deprecate_schema_field by specifying it is for custom tenant fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool (standard fields) and when to use the alternative (custom fields use deprecate_schema_field). It also mentions the requirement 'confirmed: true' for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deprecate_schema_fieldA
Mark a custom tenant fieldgroup field as deprecated. The field remains but is flagged. For OOB Adobe fields use deprecate_oob_field. Requires confirmed: true to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed | No | ||
| field_name | Yes | ||
| access_token | No | ||
| fieldgroup_id | Yes | ||
| definition_key | No | offerMetadata |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the field remains but is flagged (non-destructive) and requires confirmation. However, it does not elaborate on what 'flagged' entails or any side effects, though the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first for purpose, second for alternative and prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description covers purpose, usage context, and a key prerequisite. It lacks details on effects of deprecation and error conditions, but for a simple deprecation marker, it is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It explains the 'confirmed' parameter's role and implicitly identifies fieldgroup_id and field_name as targets, but does not mention definition_key or access_token. Partial value added beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mark a custom tenant fieldgroup field as deprecated') and distinguishes from the sibling tool 'deprecate_oob_field' by explicitly noting the alternative for OOB fields. The target ('custom tenant fieldgroup field') is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool vs alternative ('For OOB Adobe fields use deprecate_oob_field') and provides a prerequisite ('Requires confirmed: true to execute'). No ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detach_fieldgroupA
Safely remove a fieldgroup from the decisioning schema. Always shows a dry-run preview first. Requires confirmed: true to execute the removal.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed | No | ||
| access_token | No | ||
| fieldgroup_id | Yes | Fieldgroup meta:altId OR full $id URI to detach |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses key behaviors: it is safe (dry-run first) and requires confirmation. It does not cover potential side effects or reversibility, but the dry-run information is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the purpose and safety, with no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and only 3 parameters, the description covers the main behavior adequately. However, it does not describe the dry-run preview's return format or error handling, which would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description reinforces that confirmed: true is needed for execution, adding context beyond the schema's default false. The fieldgroup_id parameter is described in the schema, and the description does not repeat that. Access_token is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool removes a fieldgroup from the decisioning schema, with a specific verb (remove) and resource (fieldgroup). It distinguishes itself from sibling tools like get_fieldgroup or list_schema_fieldgroups by focusing on removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that a dry-run preview always occurs and that confirmed: true is required for actual removal. This gives guidance on safe usage, but it does not explicitly mention when not to use or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fieldgroupA
Fetch the full field definitions inside a specific fieldgroup by its altId. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | ||
| fieldgroup_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'Read-only', which is a key behavioral trait especially important given no annotations. However, it does not disclose other aspects like error handling, permissions, or rate limits. With no annotations, more detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that fronts the main action and constraints. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with no output schema, the description provides adequate context about the operation. However, it could briefly mention the expected return type (e.g., list of field definitions) to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that fieldgroup_id is the altId, but does not explain the access_token parameter, leaving its purpose and optionality unclear. Only partial semantic help.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches full field definitions inside a specific fieldgroup identified by its altId, using the verb 'fetch' and specifying the resource and identifier. It distinguishes from sibling tools like list_schema_fieldgroups by targeting a single fieldgroup's definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as list_schema_fieldgroups or other fieldgroup-related tools. The description does not mention prerequisites, limitations, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offer_itemA
Look up a single offer item by its DPS ID. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| offer_id | Yes | ||
| access_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the read-only nature, which is a key behavioral trait. However, with no annotations provided, it does not mention other important details like permissions, error handling, or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core action. However, it sacrifices completeness, particularly for parameter documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema, the description is minimally adequate but omits details about the response format and the access_token parameter, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'offer_id' parameter by identifying it as the 'DPS ID', but completely ignores the 'access_token' parameter. With 0% schema description coverage, more explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('look up'), the resource ('offer item'), and the identifier ('by its DPS ID'), and notes it is read-only. This distinguishes it from siblings like list_offer_items and update_offer_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for read-only retrieval of a single item, but does not explicitly state when to use this tool over alternatives (e.g., list_offer_items for multiple items) or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schema_audit_logB
Fetch the full audit log for the decisioning schema — every change ever made, newest first. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Only mentions 'Read-only', which identifies non-destructive behavior, but lacks details on authentication, rate limits, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no filler, directly conveys purpose and ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing parameter documentation and output format. With no output schema, the description should explain what the audit log contains, but it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not mention the sole parameter 'access_token' or its purpose. No added meaning beyond an empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool fetches the full audit log for the decisioning schema, with ordering (newest first) and read-only nature. Distinct from sibling tools like lookup_decisioning_schema or list_schema_descriptors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for reading audit logs, but no explicit guidance on when to use vs. alternatives. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setup_summaryA
Full read-only inventory of all ExD resources in the sandbox — offers, collections, rules, formulas, strategies, and placements.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'read-only inventory', indicating no side effects, which is good. However, with no annotations provided, it should disclose more about response behavior, potential data volume, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clear sentence that conveys the tool's purpose efficiently without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description lists what resources are included but lacks details on response format, pagination, or any constraints. It covers the basics but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (access_token) with 0% documentation coverage, and the description does not explain its purpose or usage. The description adds no value to the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('get', 'inventory') and clearly lists all resource types included (offers, collections, etc.), distinguishing it from sibling tools that target individual resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for a comprehensive overview of all ExD resources, contrasting with siblings that operate on single resource types. However, it lacks explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_offer_itemsC
List all offer items in the ExD catalog with pagination. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| access_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'Read-only' and 'with pagination'. Does not disclose details like default pagination behavior, ordering, or response structure for a list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information. Efficient, but could benefit from slightly more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 undocumented parameters, no output schema, and no annotations, the description is incomplete. Missing explanation of default behavior, error handling, and response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage; description mentions pagination but does not explain limit, offset, or access_token parameters individually. Access_token is completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all offer items in the ExD catalog with pagination', specifying verb, resource, and scope. It distinguishes from siblings like get_offer_item (single item) implicitly, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_offer_item, update_offer_item, etc. Missing context about appropriate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schema_descriptorsC
List all descriptors on the decisioning schema — identity, deprecation, display name overrides, and relationships. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only mentions 'Read-only' but lacks details on pagination, limits, or what happens with no descriptors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, but could be slightly more informative without being verbose. Adequate but not excellent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a simple list with one parameter, the description is incomplete. Lacks response format, examples, or behavior details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the access_token parameter or any additional meaning. No added value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists all descriptors on the decisioning schema, including specific types like identity, deprecation, etc. Distinguishes from sibling tools by specifying the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like list_schema_fieldgroups or list_offer_items. Only states 'Read-only' but doesn't help selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schema_fieldgroupsB
List all tenant fieldgroups compatible with the Offer Item class. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | ||
| include_global | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It only states 'Read-only', which is useful but insufficient. No details on pagination, rate limits, or required authentication beyond the access_token parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences. The first sentence front-loads the purpose, and the second adds a crucial behavioral note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the simple operation, the description misses key context: what a fieldgroup is, what 'compatible with Offer Item class' means, and the effect of include_global. No output schema further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no information about the two parameters (access_token, include_global). The agent cannot infer their meaning or constraints from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List', the resource 'tenant fieldgroups', and the scope 'compatible with the Offer Item class'. This distinguishes it from siblings like 'list_schema_descriptors' or 'get_fieldgroup'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the 'List' verb and 'Read-only' annotation, but no explicit guidance on when to use this tool versus alternatives. Siblings include create and update operations, but the description does not specify that this is for exploratory purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_decisioning_schemaB
Fetch the full resolved Personalized Offer Items decisioning schema — all fieldgroups, OOB fields, and custom tenant fields. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | ||
| include_deprecated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description adds 'Read-only', which clarifies safety but lacks details on authentication, rate limits, or response behavior. Minimal transparency beyond the functional scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Front-loaded with the core function, followed by specifics about the schema contents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and sparse parameter documentation. The description does not cover return format, error conditions, or the effect of the include_deprecated flag. Incomplete for a tool with two parameters that affect behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the two parameters (access_token, include_deprecated) or their purpose. Without this, the agent cannot infer parameter usage from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches the full resolved Personalized Offer Items decisioning schema, listing components (all fieldgroups, OOB fields, custom tenant fields) and labels it 'Read-only'. This distinguishes it from sibling tools that modify schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs. alternatives. The description implies it's for reading, but doesn't mention when not to use it or suggest sibling tools like get_fieldgroup or list_schema_fieldgroups for partial lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_csv_and_suggestA
Parse a product/offer CSV, infer XDM types for each column, and suggest schema fields, eligibility rules, and ranking formulas. Always call this first — no data is written.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_text | Yes | Full CSV text content including headers and all rows |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description states the tool does not write data, revealing its read-only nature. While it could detail error handling or output format, the non-destructive guarantee is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, second with usage guidance. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers the tool's role as a first-call read-only analysis. Missing details about output format (e.g., suggested fields and rules) leaves the agent uncertain about next steps, especially given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'csv_text' already described in the schema. The description adds 'product/offer CSV' context, but this is marginal improvement, warranting baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool parses a product/offer CSV, infers XDM types, and suggests schema fields, eligibility rules, and ranking formulas. This specific verb+resource combination differentiates it from sibling tools, none of which parse CSVs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Always call this first — no data is written.' This provides clear when-to-use context and distinguishes it as a non-destructive pre-processing step before other mutation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_offer_itemC
Update fields on an existing offer item using JSON Patch operations. Requires confirmed: true to execute.
| Name | Required | Description | Default |
|---|---|---|---|
| patches | Yes | ||
| offer_id | Yes | ||
| confirmed | No | ||
| access_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the requirement for confirmed: true but does not address expected side effects, permission needs, rate limits, or return behavior. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences, front-loading the tool's purpose. It avoids unnecessary words, though it sacrifices some informative value for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and parameter descriptions, the description fails to explain return values, side effects, or parameter behavior. It feels incomplete for a tool with 4 parameters and no other documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning to any parameter. It mentions JSON Patch operations but does not explain offer_id, confirmed, or access_token. The agent must rely solely on parameter names, which are insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing offer item using JSON Patch operations. It distinguishes itself from sibling tools like get_offer_item and list_offer_items by specifying the update action. However, it could be more specific about which fields are updatable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides only one usage condition: 'Requires confirmed: true to execute.' It does not specify when to use this tool versus alternatives, nor does it mention any prerequisites or prohibitions beyond confirmation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
21 tool updates
v2.0.0- First observed
add_schema_field - First observed
bulk_create_offers - First observed
create_collection - First observed
create_eligibility_rule - First observed
create_offer_metadata_fieldgroup - First observed
create_placement - First observed
create_ranking_formula - First observed
create_selection_strategy - First observed
deprecate_oob_field - First observed
deprecate_schema_field - First observed
detach_fieldgroup - First observed
get_fieldgroup - First observed
get_offer_item - First observed
get_schema_audit_log - First observed
get_setup_summary - First observed
list_offer_items - First observed
list_schema_descriptors - First observed
list_schema_fieldgroups - First observed
lookup_decisioning_schema - First observed
parse_csv_and_suggest - First observed
update_offer_item
TDQS
Scored across 21 tools
Each tool targets a distinct resource and action, with clear separation between schema field operations, offer management, placement, rules, strategies, and CSV parsing. Even similar tools like deprecate_oob_field and deprecate_schema_field are explicitly differentiated by the type of field.
Tool names follow a consistent verb_noun pattern in snake_case, with verbs like create, get, list, update, deprecate, detach, parse, and bulk_create. The minor variation between get_, list_, and lookup_ is logically consistent with the cardinality of the result (single vs multiple).
At 21 tools, the count is slightly above the ideal 3-15 range, but the complexity of the ExD domain (schema management, multiple resource types, CSV parsing, auditing) justifies this number. Each tool serves a specific purpose without redundancy.
The tool set covers creation and reading for most resources, but lacks delete operations for offers, placements, rules, formulas, and strategies. Update is only available for offers. This leaves notable gaps that may require manual intervention or cause agent failures.
Maintenance
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
- SendinelOAuthai.sendinel
AI-controlled email ops for campaigns, contacts, segments, analytics, and sending.
Let your AI assistant build pages and courses, manage contacts, and run email campaigns in AXL.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to manage Optimizely DXP deployments through natural language conversations. Supports code deployment, database operations, content synchronization, and environment management across Integration, Preproduction, and Production environments.4211 npm2MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to access and execute automated decision services from IBM Decision Intelligence or IBM Automation Decision Services. It exposes deployed decision operations as tools for platforms like Claude Desktop and IBM watsonx Orchestrate.11 npm7Apache 2.0
- AlicenseNot gradedqualityAmaintenanceBridges IBM Operational Decision Manager with AI assistants, enabling decisions as tools for integration with platforms like Watson Orchestrate and Claude Desktop.8Apache 2.0
- FlicenseAqualityDmaintenanceEnables autonomous agents to segment audiences, manage subscribers, and trigger Journey Builder workflows in Salesforce Marketing Cloud through natural language.65 npm3-