Skip to main content
Glama
khushi-nayal

ExD Accelerator MCP Server

by khushi-nayal

ExD Accelerator — MCP Server

ci license node

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.js

Then 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)

  1. Push this repo to GitHub.

  2. Import it in vercel.com/new. Framework preset: Other.

  3. Deploy — Vercel auto-detects api/mcp.js as the serverless route.

  4. 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

https://your-app.vercel.app/api/mcp

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)

⚠️ bulk_create_offers with >50 rows may exceed this. Chunk large batches.

10s timeout (Hobby tier)

⚠️ get_setup_summary is fine; large bulk is not. Upgrade to Pro for production use.

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 enableJsonResponse: true, which is single-request/response and fits serverless perfectly.

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

parse_csv_and_suggest

Parses CSV, infers XDM types per column, suggests eligibility rules and ranking formulas. Always call first. No API calls.

9

get_offer_item

Fetches a single offer item by DPS ID

10

list_offer_items

Lists all offers in catalog with pagination

16

get_setup_summary

Full inventory: offers, collections, rules, formulas, strategies, placements

17

lookup_decisioning_schema

Full resolved schema with OOB + tenant fields; accepts include_deprecated: true

18

list_schema_fieldgroups

Lists all tenant fieldgroups for the offer item class

19

get_fieldgroup

Full field definitions inside a specific fieldgroup

20

get_schema_audit_log

Chronological change history for the decisioning schema

21

list_schema_descriptors

Identity, deprecation, display name, relationship descriptors

27

get_collection

Fetches a single item collection by DPS ID

28

list_collections

Lists all item collections with pagination

30

get_eligibility_rule

Fetches a single eligibility rule by DPS ID

31

list_eligibility_rules

Lists all ExD eligibility rules with pagination (filters to exdRule==true)

33

get_ranking_formula

Fetches a single ranking formula by DPS ID

34

list_ranking_formulas

Lists all ExD ranking formulas with pagination (filters to exdFunction==true)

36

get_selection_strategy

Fetches a single selection strategy by DPS ID

37

list_selection_strategies

Lists all selection strategies with pagination

39

get_placement

Fetches a single channel placement by DPS ID

Write (require confirmed: true)

#

Tool

What it does

2

create_offer_metadata_fieldgroup

Creates XDM fieldgroup from CSV columns, attaches to decisioning schema. Checks for duplicates first.

3

bulk_create_offers

Creates offer items from CSV rows. Supports dry_run: true for payload preview

4

create_collection

Creates offer collection with filter constraint

5

create_eligibility_rule

Creates PQL eligibility rule

6

create_ranking_formula

Creates ranking formula (static, custom field, recency-hybrid, custom PQL)

7

create_selection_strategy

Wires collection + rule + formula into a selection strategy

8

create_placement

Creates channel placement via /exd-placements endpoint

11

update_offer_item

JSON Patch update on any offer field

12

add_schema_field

Adds a single field to an existing tenant fieldgroup

13

deprecate_schema_field

Sets meta:status: deprecated on a custom tenant field

14

deprecate_oob_field

Creates xdm:descriptorDeprecated for OOB Adobe-managed fields

15

detach_fieldgroup

Removes fieldgroup from schema allOf and meta:extends

22

update_collection

JSON Patch update on an existing item collection

23

update_eligibility_rule

JSON Patch update on an existing eligibility rule

24

update_ranking_formula

JSON Patch update on an existing ranking formula

25

update_selection_strategy

JSON Patch update on an existing selection strategy

26

update_placement

Full-replace (PUT) update on an existing channel placement

29

delete_collection

Permanently deletes an item collection

32

delete_eligibility_rule

Permanently deletes an eligibility rule

35

delete_ranking_formula

Permanently deletes a ranking formula

38

delete_selection_strategy

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: true

Call the same tool again with confirmed: true to execute.


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 setup

Sample 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-31

Column mapping:

  • nameitemName (OOB), descriptionitemDescription, priorityitemPriority, start_date/end_dateitemCalendarConstraints

  • everything 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
└── .gitignore

Smoke testing

npm install
cp .env.example .env       # fill in
npm run smoke              # runs stdio + HTTP transport tests, calls real Adobe APIs

Expected output ends with All smoke checks passed.


Troubleshooting

Symptom

Likely cause

Fix

Missing credentials

CLIENT_ID/CLIENT_SECRET not set

Add to .env (local) or to your MCP client's header config (deployed)

IMS token mint failed (401)

Credentials invalid or revoked

Regenerate the OAuth Server-to-Server credential in Adobe Developer Console

401 Oauth token is not valid from Adobe

Credential lacks AEP access

The OAuth credential's product profile needs Adobe Experience Platform access for the target sandbox

403 Forbidden

Wrong org/sandbox

Check ORG_ID and SANDBOX_NAME

List offers returns 0

Wrong ITEM_CATALOG_ID for the sandbox

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

lookup_decisioning_schema shows 0 fieldgroups

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 tools
add_schema_fieldC

Add a single new field to an existing tenant fieldgroup. Requires confirmed: true to execute.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmedNo
field_nameYes
field_typeNostring
field_titleYes
access_tokenNo
fieldgroup_idYes
definition_keyNoofferMetadata
field_descriptionNo

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoReturns full JSON payloads without calling the API
csv_textYesFull CSV text
confirmedNoSet to true to execute the write. Leave false to preview.
access_tokenNoBearer token — optional, server will auto-mint if missing
lifecycle_statusNodraft

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCollection display name
confirmedNoSet to true to execute the write.
descriptionNo
filter_typeYesHow to filter offers into this collection
access_tokenNo
filter_valueNoValue to filter on — required for all filter types except 'all'
custom_field_pathNoTenant field path for by_custom_field e.g. category

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRule display name
confirmedNo
descriptionNo
access_tokenNo
pql_expressionYesPQL expression e.g. profile.loyaltyTier.in(["gold","platinum"]) or true for all visitors

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
csv_textYesFull CSV text — column names become schema fields
confirmedNoSet to true to execute. Leave false to preview only.
access_tokenNoBearer token — optional, server will auto-mint if missing
fieldgroup_nameNoDisplay name for the new fieldgroupOffer Metadata - CSV Import

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
statusNoactive
channelYes
confirmedNo
descriptionNo
access_tokenNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFormula display name
confirmedNo
custom_pqlNo
descriptionNo
access_tokenNo
formula_typeYes
custom_field_nameNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
priorityNoStatic priority score (1 = highest) when no ranking formula is set
confirmedNo
descriptionNo
access_tokenNo
collection_idYesID of the item collection e.g. dps:item-collection:xxxxx
ranking_formula_idNoID of the ranking formula. Omit for static priority.
eligibility_rule_idNoID of the eligibility rule. Omit for all visitors.

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmedNo
field_pathYesJSON pointer path to the field e.g. /_experience/decisioning/decisionitem/itemDescription
access_tokenNo

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmedNo
field_nameYes
access_tokenNo
fieldgroup_idYes
definition_keyNoofferMetadata

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmedNo
access_tokenNo
fieldgroup_idYesFieldgroup meta:altId OR full $id URI to detach

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNo
fieldgroup_idYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYes
access_tokenNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
access_tokenNo

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNo

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNo
include_globalNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNo
include_deprecatedNo

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
csv_textYesFull CSV text content including headers and all rows

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchesYes
offer_idYes
confirmedNo
access_tokenNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 21 tool updatesv2.0.0
    • First observedadd_schema_field
    • First observedbulk_create_offers
    • First observedcreate_collection
    • First observedcreate_eligibility_rule
    • First observedcreate_offer_metadata_fieldgroup
    • First observedcreate_placement
    • First observedcreate_ranking_formula
    • First observedcreate_selection_strategy
    • First observeddeprecate_oob_field
    • First observeddeprecate_schema_field
    • First observeddetach_fieldgroup
    • First observedget_fieldgroup
    • First observedget_offer_item
    • First observedget_schema_audit_log
    • First observedget_setup_summary
    • First observedlist_offer_items
    • First observedlist_schema_descriptors
    • First observedlist_schema_fieldgroups
    • First observedlookup_decisioning_schema
    • First observedparse_csv_and_suggest
    • First observedupdate_offer_item

TDQS

B3.3/5.0

Scored across 21 tools

Disambiguation5/5

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.

Naming Consistency5/5

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).

Tool Count4/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers