Skip to main content
Glama
Vikas-O7

ExD Accelerator MCP Server

by Vikas-O7

ExD Accelerator — MCP Server

ci license node

⚠️ Unofficial community side project — not an Adobe product

This is a personal side project by Khushi Nayal and Vikas Ohlan, built for personal exploration and community sharing. It is not affiliated with, endorsed by, produced by, or supported by Adobe Inc. in any capacity, and does not represent any employer's views or products.

The project calls Adobe Experience Platform's public Schema Registry and Decisioning APIs on behalf of a user who already holds valid credentials for those APIs. Adobe, Adobe Experience Platform, Adobe Journey Optimizer, and Adobe Experience Decisioning are trademarks of Adobe Inc.; their names appear here only to describe which public APIs this software calls.

Intended for development sandboxes only. Do not use against production sandboxes. No warranty, no support SLA, no uptime commitments. Use at your own risk under the Apache 2.0 license.


An MCP (Model Context Protocol) server that wraps Adobe Experience Platform's Schema Registry and Decisioning (DPS) APIs so an LLM client — Claude Desktop, Claude Code, or any other MCP-capable assistant — can help you build a complete Experience Decisioning setup from a single chat conversation:

CSV → schema fields → offers → collections → eligibility rules → ranking → selection strategy → placements.

47 tools. Every write operation previews what it will do and requires an explicit confirmed: true before executing. Cursor pagination throughout, soft deadlines on bulk operations, automatic 409/429/5xx retries, and dependency-scan previews on every destructive delete.


Try it in 30 seconds (hosted demo)

A demo endpoint is running on free Vercel infra:

Add it to your MCP client (Claude Desktop, Claude Code, etc.) with these settings — supplying your own Adobe credentials as HTTP headers:

Setting

Value

Server URL

https://exd-accelerator-mcp.vercel.app/api/mcp

Transport

Streamable HTTP

Auth

None at the transport level — credentials go in headers

Headers to configure (from Adobe Developer Console for your development sandbox — never a production sandbox):

x-adobe-client-id:      <OAuth Server-to-Server Client ID>
x-adobe-client-secret:  <OAuth Server-to-Server Client Secret>
x-adobe-org-id:         <your IMS Org ID>@AdobeOrg
x-adobe-sandbox:        <development sandbox name>
x-adobe-tenant-id:      <your tenant id>
x-adobe-schema-uri:     <full decisioning schema $id URI>
x-adobe-schema-alt-id:  <decisioning schema meta:altId>
x-adobe-catalog-id:     xcore:decision-catalog:xxxxxxxxxxxxxxxx

The server holds these headers in memory only for the lifetime of the request, mints an IMS token, calls Adobe on your behalf, and discards everything when the call completes. Nothing is written to disk. See the /api/about page for the full statement.

The demo endpoint runs on Vercel's free Hobby tier with no uptime commitment and no support SLA. For anything more than kicking tires, fork this repo and self-host — instructions below.


Related MCP server: IBM ODM Decision MCP Server

What you need to try this

Before you can run anything against a live sandbox, you need Adobe access — this project doesn't provision anything for you.

  1. An Adobe Experience Platform sandbox with Experience Decisioning enabled. This is licensed capability; if you don't have it, most of the tools will fail with a 403.

  2. An OAuth Server-to-Server credential created in Adobe Developer Console, attached to a product profile that grants Experience Platform access for your target sandbox. You'll need the resulting CLIENT_ID and CLIENT_SECRET.

  3. Node.js ≥ 18 (for local runs) — or a Vercel account if you want to host the server yourself.

  4. An MCP-compatible client — the reference is Claude Desktop; Claude Code and any other client that speaks the MCP protocol will also work.

You'll also need to know these tenant-specific values for your sandbox:

Value

Where to find it

ORG_ID

Adobe Admin Console → your org's ID (ends in @AdobeOrg)

SANDBOX_NAME

Experience Platform → Sandboxes

TENANT_ID

Experience Platform → Schemas → look at any tenant-scoped schema (the _ prefix)

DECISIONING_SCHEMA_URI / DECISIONING_SCHEMA_ALT_ID

Your Personalized Offer Items schema in Schema Registry

ITEM_CATALOG_ID

Decisioning → Catalogs


Quick start (local, stdio)

Fastest way to try it: run against your own sandbox from your laptop, no hosting needed.

git clone https://github.com/Vikas-O7/exd-accelerator-mcp.git
cd exd-accelerator-mcp
npm install
cp .env.example .env
# open .env and fill in the 8 required values

Sanity-check with the smoke test (makes real API calls to your sandbox):

npm run smoke

You should see All smoke checks passed. If not, jump to Troubleshooting.

Wire it into Claude Desktop

Edit your Claude Desktop config (%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-accelerator-mcp/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 — the ExD Accelerator is live.


Hosting it yourself (HTTP)

If you want a shared endpoint your team can point their MCP clients at, deploy the same codebase as an HTTP server on Vercel:

  1. Fork or clone this repo into your own GitHub account.

  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 put credentials in Vercel's environment variables. Each user of the endpoint supplies their own credentials via HTTP headers on the MCP connection (see below).

For a truly no-cost setup, use Vercel Hobby and remove any payment method in your account billing settings — the endpoint will pause if it exceeds free-tier limits rather than incurring charges.

Header-based multi-tenant credentials

The server treats HTTP headers as the source of truth for per-request credentials, so a single hosted deployment can serve multiple users without storing any secrets on the server side:

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. mytenantname>
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 tokens automatically, caches them per client_id for the token's lifetime, invalidates on 401, and refreshes on expiry. The end user never sees the token.

MCP client config for a hosted deployment:

Setting

Value

Server URL

https://your-deployment/api/mcp

Transport

Streamable HTTP

Auth

None at the transport level — credentials go in headers


Sample data for testing

CSV

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, created for you on first use)

JSON

bulk_create_offers accepts json_text in place of csv_text — either a bare array of offer objects, or {"offers": [...]}. Each object's keys act exactly like CSV column headers (case-insensitive, punctuation-tolerant, so startDate, start_date, and Start Date are all treated the same):

[
  {
    "name": "Summer Glow Kit",
    "description": "Complete summer skincare set",
    "category": "Skincare",
    "brand": "GlowCo",
    "discount_percent": 20,
    "price": 49.99,
    "region": "US",
    "priority": 1,
    "start_date": "2024-06-01",
    "end_date": "2024-08-31"
  }
]

Provide exactly one of csv_text or json_text; passing both or neither returns a clear error.


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.  list_placements                  → discover placements to wire to
9.  list_audiences                   → discover audiences to target (RT-CDP)
10. create_collection                → group offers (confirmed: true)
11. create_eligibility_rule          → targeting (confirmed: true)
12. create_ranking_formula           → ranking logic (confirmed: true)
13. create_selection_strategy        → wire it all together (confirmed: true)
14. get_setup_summary                → verify full setup

Or, in a real chat, just say something like: "I have a CSV of 25 skincare offers here. Load them into my-sandbox, group by category, target visitors in the DOI Email Audience, rank by discount descending, and wire it all to my hero-banner placement."


Tool inventory

47 tools organized by resource. Every write requires confirmed: true.

Utility / setup (7)

get_setup_summary, lookup_decisioning_schema, list_schema_descriptors, list_schema_fieldgroups, get_fieldgroup, get_schema_audit_log, parse_csv_and_suggest.

Schema mutation (5)

add_schema_field, deprecate_schema_field, deprecate_oob_field, detach_fieldgroup, create_offer_metadata_fieldgroup.

Placements (5)

list_placements, get_placement, create_placement, update_placement, delete_placement.

Offer items (8)

list_offer_items, get_offer_item, update_offer_item, delete_offer_item, bulk_create_offers, bulk_update_offers, bulk_delete_offers, attach_offer_eligibility_rule.

Collections (5)

list_collections, get_collection, create_collection, update_collection, delete_collection.

Eligibility rules (5)

list_eligibility_rules, get_eligibility_rule, create_eligibility_rule, update_eligibility_rule, delete_eligibility_rule.

Ranking formulas (5)

list_ranking_formulas, get_ranking_formula, create_ranking_formula, update_ranking_formula, delete_ranking_formula.

Selection strategies (5)

list_selection_strategies, get_selection_strategy, create_selection_strategy, update_selection_strategy, delete_selection_strategy.

RT-CDP audiences (2, read-only)

list_audiences, get_audience — audiences themselves are managed in the RT-CDP Segmentation Service, not here. These two just let the LLM discover them before wiring them into offer eligibility.

Every tool that identifies an existing resource — get_*, update_*, delete_*, and the bulk / attach offer tools — accepts either a DPS ID or an exact resource name. Ambiguous names fail with a list of all matches rather than guessing.

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. Delete tools also scan for dependencies (e.g. selection strategies that reference this collection) and print the count in the preview so you see the blast radius before confirming.


Offer-level eligibility: decision rules vs. audiences

Every offer can have at most one of three eligibility states, chosen the same way whether you're creating offers (bulk_create_offers's eligibility_rule / audience columns) or attaching later (attach_offer_eligibility_rule's eligibility_rule_id / audience params):

  • None — leave both fields empty. itemConstraints: { profileConstraintType: "none" }.

  • A decision/eligibility rule — reference an existing dps:eligibility-rule by ID or exact name.

  • An audience (RT-CDP segment) — reference by ID or exact name.

Adobe's offer-item schema only supports itemConstraints.profileConstraintType: "eligibilityRule" for actually restricting an offer. Attaching an audience works by auto-generating a real eligibility rule that checks segment membership:

segmentMembership["ups"]["<segment-id>"]["status"].equals("realized", false)

named Audience: <audience name>. Repeat attach calls for the same audience reuse that exact rule (matched by name) rather than creating a duplicate.

Providing both eligibility_rule and audience on the same offer/row is rejected with a clear error rather than silently picking one.


File layout

exd-accelerator-mcp/
├── src/
│   ├── server.js         ← buildMcpServer(config) + 47 tool definitions
│   ├── stdio.js          ← stdio entry (npm start) — for Claude Desktop
│   └── http-local.js     ← local HTTP server for testing the hosted route
├── api/
│   └── mcp.js            ← Vercel serverless route (Streamable HTTP)
├── scripts/
│   └── smoke.js          ← 29-check smoke test for stdio + HTTP
├── vercel.json           ← Vercel deployment config
├── package.json
├── .env.example
└── .gitignore

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 (hosted)

IMS token mint failed (401)

Credentials invalid or revoked

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

401 Oauth token is not valid from Adobe

Credential lacks AEP access

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

403 Forbidden

Wrong org/sandbox for these creds

Check ORG_ID and SANDBOX_NAME

List offers returns 0

Wrong ITEM_CATALOG_ID for the sandbox

Each sandbox has its own catalog ID

Bulk call exceeds 10s on Vercel Hobby

Function timeout

Upgrade to Pro (60s) or reduce limit

Custom XDM validation error on create

Sandbox schema has required fields you didn't supply

Read the error's field list, add the missing columns to your CSV/JSON

MCP server connection lost mid-bulk

Runtime hit its 60s hard cap

Lower limit and chunk_size; the tool will paginate itself


What this MCP does NOT do

  • AJO policy / campaign creation — creates the ExD components (offers, strategies, placements) but not the final Journey Optimizer policy that ties them into a live delivery.

  • RT-CDP audience creation — surfaces existing audiences via list_audiences but doesn't create new segments (that's Segmentation Service's job).

  • Cross-channel reporting — would need AEP Query Service integration.

  • Anything unofficial or private — this project only wraps documented, publicly available APIs. If Adobe changes those APIs, expect breakage until the wrapper catches up.


Contributing

PRs welcome — see CONTRIBUTING.md. Please attach a smoke run (npm run smoke) with your change.


Maintainers

Ownership and license

Copyright © 2026 Khushi Nayal and Vikas Ohlan. Released under the Apache License 2.0.

This is a personal side project developed independently. It is not an Adobe product, does not represent the views or work of any employer, and carries no support relationship with Adobe Inc. Adobe, Adobe Experience Platform, Adobe Journey Optimizer, and Adobe Experience Decisioning are trademarks of Adobe Inc.; they appear in this documentation only to describe which public APIs the software calls on the user's behalf.

Intended for development sandbox exploration only. Not for production use. Apache 2.0's warranty disclaimer applies: the software is provided "AS IS" without any warranty, express or implied.

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.

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a distinct purpose, clearly differentiating between similar actions like deprecate_oob_field vs deprecate_schema_field, and create_offer_metadata_fieldgroup vs add_schema_field. The descriptions provide enough context to avoid confusion.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with underscores (e.g., create_placement, list_offer_items). Mixed verbs like 'bulk_create' and 'lookup' are still clearly part of the same convention.

Tool Count4/5

With 21 tools, the server covers a broad range of ExD operations without being overwhelming. The count is appropriate for a comprehensive accelerator, though slightly on the higher end.

Completeness3/5

The tool set covers creation, reading, and updating of offers and schema fields, but lacks delete tools for most resources (e.g., offers, placements, rules). Single-offer creation is also missing, relying only on bulk creation. These gaps may hinder full lifecycle management.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    An MCP server that provides LLMs with access to Acquia's Customer Data Platform API. It offers approximately 300 tools for managing CDP tenants, campaigns, workflows, reports, and other administrative tasks, along with eight playbook resources that guide multi-step workflows.
    100
  • A
    license
    Not graded
    quality
    A
    maintenance
    The first full-featured MCP server for Adobe Experience Platform: 29 tools across schemas, datasets, profiles, segments, query service, and GDPR/CCPA privacy operations. Extends Adobe's read-only beta with production-grade write operations.
    426
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for Adobe Edge Delivery Services (AEM EDS). 20 tools for preview, publish, bulk operations, content reading, Core Web Vitals, 404 tracking, A/B experiments, and site configuration. Works with Claude Code, Cursor, and VS Code Copilot.
    41
    1,478
    3
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vikas-O7/exd-accelerator-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server