AI Integration & Abilities API - Accelerate for WordPress
๐Ÿงช

Experimental Feature

The Abilities API is currently in experimental preview. APIs may change and some features may be incomplete. We welcome your feedback!

Accelerate AI Integration

Enable AI agents and developers to interact with WordPress analytics, A/B testing, personalization, and audience management through a powerful Abilities API.

How It Works

The Abilities API provides a standardized interface for AI agents to discover, understand, and execute actions within Accelerate. Whether you're using Claude Desktop with MCP, building a custom integration, or calling REST endpoints directly, the API provides consistent, well-documented access to all Accelerate features.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         AGENTIC FLOW                                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

  User Prompt                MCP Discovery              Ability Execution
       โ”‚                          โ”‚                           โ”‚
       โ–ผ                          โ–ผ                           โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   "How is   โ”‚          โ”‚   List all     โ”‚          โ”‚   Run ability  โ”‚
โ”‚  my content โ”‚   โ”€โ”€โ–บ    โ”‚   abilities    โ”‚   โ”€โ”€โ–บ    โ”‚   with params  โ”‚
โ”‚ performing?"โ”‚          โ”‚  from server   โ”‚          โ”‚                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚                           โ”‚
                                โ–ผ                           โ–ผ
                         AI selects best           Returns structured
                         ability to use            response to AI
                                โ”‚                           โ”‚
                                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                              โ”‚
                                              โ–ผ
                                    AI presents results
                                      to the user

Abilities vs Traditional REST

FeatureAbilities APITraditional REST
DiscoveryAI auto-discovers capabilitiesManual documentation lookup
SchemaSelf-documenting JSON SchemaExternal API docs
Error HandlingStructured errors with hintsHTTP status codes
MCP SupportNative integrationRequires custom wrapper

Abilities at a Glance

Discovery (Read-Only)

Content Analytics

Traffic & Attribution

Real-time

Authors

Engagement

Experiments & Audiences

Site & Search

  • get-site-context โ€” Site design system (colors, fonts, spacing) for brand-consistent AI content
  • search-content โ€” Find WordPress content by title, URL, or text

Execution (Create/Modify)

A/B Tests

Variants

Personalization

Audiences

Goals & Traffic

Broadcast

  • broadcast-content โ€” Broadcast blocks to multiple locations (destructive, admin-only)

Integration (Query & Export)

Query & Aggregation

  • query-events โ€” Raw event queries with custom filters
  • get-event-schema โ€” Discover available event fields and types
  • aggregate โ€” Custom aggregations with flexible dimensions and metrics

Data Export

Getting Started

Quick Start

MCP Setup (Claude Desktop)

The easiest way to use the Abilities API is through Claude Desktop with MCP (Model Context Protocol). Add the following to your Claude Desktop configuration:

json
{
  "mcpServers": {
    "accelerate": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://your-site.com/wp-json/wp-abilities/v1/mcp"
      ],
      "env": {
        "MCP_HEADERS": "Authorization: Basic BASE64_ENCODED_CREDENTIALS"
      }
    }
  }
}

Replace your-site.com with your WordPress site URL and BASE64_ENCODED_CREDENTIALS with your base64-encoded username:application_password.

REST API Authentication

For direct REST API access, use WordPress Application Passwords with Basic Authentication:

bash
# Generate base64 credentials
echo -n "username:application_password" | base64

# Make an API call
curl -X GET "https://your-site.com/wp-json/wp-abilities/v1/abilities" \
  -H "Authorization: Basic BASE64_CREDENTIALS"

Creating an Application Password

  1. 1. Go to Users โ†’ Profile in WordPress admin
  2. 2. Scroll to Application Passwords
  3. 3. Enter a name (e.g., "Claude AI") and click Add New Application Password
  4. 4. Copy the generated password (shown only once)

Companion tool

Experimental

Accelerate AI Toolkit

A Claude Code plugin that wraps the Abilities API into ten marketer-friendly workflows: diagnosis, A/B testing, personalization, content planning, and more. It is the fastest way to use Abilities without writing JSON config, and it sits cleanly on top of the MCP / REST access described above. Experimental; from-source install today.

Install from source

The plugin is not yet approved in the Claude plugin directory. Install from the repository for now:

bash
git clone https://github.com/humanmade/accelerate-ai-toolkit.git
cd accelerate-ai-toolkit
claude plugin install ./

A one-command install is coming once Anthropic approves the plugin. For Codex CLI, run codex, open /plugins, and choose "Install from local path".

Connect your site

After install, run /accelerate-connect. The command walks you through generating a WordPress Application Password and saving it securely. Verify with /accelerate-status, then ask your first question.

What the workflows do

  • Review: a weekly performance snapshot in 60 seconds.
  • Diagnose: root-cause analysis for a page that is underperforming.
  • Opportunities: three ranked next actions, backed by your data.
  • Optimize landing page: a deep-dive that ends with testable improvements.
  • Test: the full A/B lifecycle. Plan, create, monitor, declare a winner.
  • Personalize: audience creation and content personalization.
  • Content plan: upcoming posts proposed from what is working now.
  • Realtime: live visitors, trending content, spike investigation.
  • Campaigns: UTM breakdowns and attribution comparison.
  • Learn: reads past test results and tailors future suggestions.

Every workflow that creates or changes something asks for your explicit confirmation before publishing.

Further reading

Prefer raw MCP or REST? Jump back to Quick Start.

Abilities Reference

Discovery Abilities

Discovery abilities help AI agents understand site performance, find content, and gather insights. These are read-only operations that don't modify any data.

accelerate/get-performance-summary

DiscoveryPermission: edit_posts

Retrieve aggregated performance metrics for blocks, posts, experiments, or the entire site. Returns views, unique visitors, engagement rate, and conversion metrics with optional time series data.

๐Ÿ’ฌ Ask the AI:

How is my site performing this week compared to last week?

Input Schema

ParameterTypeRequiredDescription
entity_typeenumNoblock, post, experiment, or site
entity_idintegerNoSpecific entity ID to analyze
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, 90d, ytd, or all
date_rangeobjectNoCustom date range with start/end (ignored if preset is set)
granularityenumNo5min, 15min, 30min, 1h, hourly, daily, weekly, aggregate, or auto (default: auto)
compare_to_previousbooleanNoInclude comparison period

Example Request (MCP)

json
{
  "entity_type": "site",
  "date_range_preset": "7d",
  "granularity": "auto",
  "compare_to_previous": true
}

REST Equivalent

bash
curl -X POST "https://example.com/wp-json/wp-abilities/v1/abilities/accelerate%2Fget-performance-summary/run" \
  -H "Content-Type: application/json" \
  -H "Authorization: Basic BASE64_CREDENTIALS" \
  -d '{"input": {"entity_type": "site", "date_range_preset": "7d"}}'

accelerate/list-active-experiments

DiscoveryPermission: edit_posts

List all currently running A/B tests with their variants, traffic allocation, and current performance metrics.

๐Ÿ’ฌ Ask the AI:

What A/B tests are currently running?

Input Schema

ParameterTypeRequiredDescription
statusenumNorunning, paused, completed, or all
limitintegerNoMaximum experiments to return (default: 20)

Example Request (MCP)

json
{
  "status": "running",
  "limit": 10
}

accelerate/get-audience-segments

DiscoveryPermission: edit_posts

List all defined audience segments with their targeting rules and optional size estimates.

๐Ÿ’ฌ Ask the AI:

What audiences have I created?

Input Schema

ParameterTypeRequiredDescription
include_estimatesbooleanNoInclude audience size estimates

Example Request (MCP)

json
{
  "include_estimates": true
}

accelerate/get-audience-fields

DiscoveryPermission: edit_posts

List all available targeting fields for audience creation including country, browser, device, referrer, and custom dimensions.

๐Ÿ’ฌ Ask the AI:

What targeting options are available for audiences?

accelerate/get-top-content

DiscoveryPermission: edit_posts

Get the highest-performing content by views or conversions. Perfect for identifying what's working.

๐Ÿ’ฌ Ask the AI:

What are my top performing blog posts this month?

Input Schema

ParameterTypeRequiredDescription
content_typeenumNopost, page, or all
metricenumNoviews or conversions
date_range_presetenumNo24h, 7d, 30d, 90d, ytd, or all
limitintegerNoNumber of items to return (default: 10)

Example Request (MCP)

json
{
  "content_type": "post",
  "metric": "views",
  "date_range_preset": "30d",
  "limit": 10
}

accelerate/get-content-diff

DiscoveryPermission: edit_posts

Compare content performance between two time periods to identify trends and changes.

๐Ÿ’ฌ Ask the AI:

Compare this week's performance to last week

Input Schema

ParameterTypeRequiredDescription
content_idintegerNoSpecific content ID (optional for site-wide)
period_aobjectYesFirst period (start/end dates)
period_bobjectYesSecond period (start/end dates)

Example Request (MCP)

json
{
  "period_a": {"preset": "7d"},
  "period_b": {"preset": "previous_7d"}
}

accelerate/get-traffic-breakdown

DiscoveryPermission: edit_posts

Get traffic breakdown by country, browser, operating system, or referrer source.

๐Ÿ’ฌ Ask the AI:

Where is my traffic coming from by country?

Input Schema

ParameterTypeRequiredDescription
dimensionenumYescountry, browser, os, or referrer
date_range_presetenumNo24h, 7d, 30d, 90d, ytd, or all
limitintegerNoNumber of items to return (default: 10)

Example Request (MCP)

json
{
  "dimension": "country",
  "date_range_preset": "30d",
  "limit": 10
}

Content Analytics

accelerate/get-post-performance

DiscoveryPermission: edit_posts

Detailed performance metrics for a single post, page, or synced pattern. Returns views, visitors, conversions, velocity (momentum), and automatic period-over-period comparison. Also surfaces any active experiments on the content.

๐Ÿ’ฌ Ask the AI:

How is my latest blog post performing compared to last week?

Input Schema

ParameterTypeRequiredDescription
post_idintegerYesThe post, page, or synced pattern ID
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
date_rangeobjectNoCustom date range with start/end

Example Request (MCP)

json
{
  "post_id": 42,
  "date_range_preset": "7d"
}

accelerate/get-taxonomy-performance

DiscoveryPermission: edit_posts

Analytics grouped by WordPress taxonomy โ€” categories, tags, or custom taxonomies. Returns per-term views, conversions, and an underserved score that identifies high-demand, low-supply topics.

๐Ÿ’ฌ Ask the AI:

Which categories are getting the most traffic but have the fewest posts?

Input Schema

ParameterTypeRequiredDescription
taxonomystringNoTaxonomy to analyze (default: category)
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
limitintegerNoMaximum terms to return (max 100)

Example Request (MCP)

json
{
  "taxonomy": "category",
  "date_range_preset": "30d",
  "limit": 20
}

Traffic & Attribution

accelerate/get-source-breakdown

DiscoveryPermission: edit_posts

Traffic source analysis with flexible grouping. Group by source (Google, Bing, Facebook, etc.), medium, campaign, or referrer domain to understand where your traffic comes from.

๐Ÿ’ฌ Ask the AI:

Break down my traffic by source for the last 30 days

Input Schema

ParameterTypeRequiredDescription
group_byenumNosource, medium, campaign, or referrer_domain
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
limitintegerNoMaximum sources to return (max 100)

Example Request (MCP)

json
{
  "group_by": "source",
  "date_range_preset": "30d",
  "limit": 20
}

accelerate/get-utm-performance

DiscoveryPermission: edit_posts

UTM parameter performance metrics. Analyze how your marketing campaigns are performing by grouping traffic by campaign, source, medium, term, or content UTM parameters.

๐Ÿ’ฌ Ask the AI:

How are my UTM campaigns performing this month?

Input Schema

ParameterTypeRequiredDescription
group_byenumNocampaign, source, medium, term, or content
campaignstringNoFilter to a specific campaign name
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d

Example Request (MCP)

json
{
  "group_by": "campaign",
  "date_range_preset": "30d"
}

accelerate/get-landing-pages

DiscoveryPermission: edit_posts

Entry page analysis showing which pages visitors land on first. Returns bounce rate, average time on page, session depth, and conversion rate for each landing page.

๐Ÿ’ฌ Ask the AI:

What are my top landing pages and their bounce rates?

Input Schema

ParameterTypeRequiredDescription
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
limitintegerNoMaximum pages to return (max 100)

Example Request (MCP)

json
{
  "date_range_preset": "30d",
  "limit": 20
}

accelerate/get-attribution-comparison

DiscoveryPermission: edit_posts

Compare first-touch vs last-touch attribution models to understand which channels introduce visitors versus which channels close conversions. Includes insights on best introducer, best closer, and most undervalued channel.

๐Ÿ’ฌ Ask the AI:

Compare first-touch and last-touch attribution for my conversions

Input Schema

ParameterTypeRequiredDescription
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
conversion_goalstringNoFilter to a specific conversion goal

Example Request (MCP)

json
{
  "date_range_preset": "30d"
}

Real-time

accelerate/get-concurrent-visitors

DiscoveryPermission: edit_posts

Real-time concurrent visitor count. Shows how many unique visitors are currently active on your site or a specific post, with comparison to the same time yesterday. Optionally includes device and source breakdown.

๐Ÿ’ฌ Ask the AI:

How many people are on my site right now?

Input Schema

ParameterTypeRequiredDescription
post_idintegerNoSpecific post ID (omit for site-wide)
active_window_minutesintegerNoMinutes to consider as active (1-15, default: 5)
include_breakdownbooleanNoInclude device and source breakdown

Example Request (MCP)

json
{
  "active_window_minutes": 5,
  "include_breakdown": true
}

Authors

accelerate/get-author-performance

DiscoveryPermission: edit_posts

Performance metrics for a specific author or compare all authors. Returns post count, total views, visitors, conversions, conversion rate, average views per post, and top post for each author.

๐Ÿ’ฌ Ask the AI:

How are my authors performing this month? Who's getting the most views?

Input Schema

ParameterTypeRequiredDescription
author_idintegerNoSpecific author ID (omit to compare all)
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
order_byenumNoviews, conversions, conversion_rate, or posts_count
limitintegerNoMaximum authors to return (max 100)

Example Request (MCP)

json
{
  "date_range_preset": "30d",
  "order_by": "views",
  "limit": 10
}

accelerate/get-author-content

DiscoveryPermission: edit_posts

All content by a specific author with per-post performance metrics. Returns views, visitors, conversions, and velocity (momentum trend) for each post.

๐Ÿ’ฌ Ask the AI:

Show me all posts by author 5 with their performance metrics

Input Schema

ParameterTypeRequiredDescription
author_idintegerYesAuthor user ID
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
order_byenumNoviews, conversions, or publish_date
limitintegerNoMaximum posts to return (max 100)

Example Request (MCP)

json
{
  "author_id": 5,
  "date_range_preset": "30d",
  "order_by": "views"
}

Engagement

accelerate/get-engagement-metrics

DiscoveryPermission: edit_posts

Quality engagement metrics beyond simple view counts. Returns average time on page, bounce rate, pages per session, recirculation rate, return visitor rate, scroll depth percentiles, and exit pages.

๐Ÿ’ฌ Ask the AI:

What's the engagement quality like on my site? Show me bounce rate and scroll depth.

Input Schema

ParameterTypeRequiredDescription
entity_typeenumNopost or site
entity_idintegerNoPost ID (required when entity_type is post)
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d

Example Request (MCP)

json
{
  "entity_type": "site",
  "date_range_preset": "30d"
}

Experiments & Audiences

accelerate/get-experiment-results

DiscoveryPermission: edit_posts

Detailed statistical results for running or completed experiments. Returns per-variant impressions, conversions, conversion rate, p-value, probability to beat control, and an AI recommendation (continue, declare winner, no winner, etc.).

๐Ÿ’ฌ Ask the AI:

What are the results of my hero section A/B test? Is there a winner yet?

Input Schema

ParameterTypeRequiredDescription
block_idintegerYesSynced pattern ID with the experiment
refreshbooleanNoForce refresh cached results

Example Request (MCP)

json
{
  "block_id": 456,
  "refresh": true
}

accelerate/get-variants

DiscoveryPermission: edit_posts

Inspect all variants in a synced pattern. Returns each variant's title, content preview, raw markup, inner block types, percentage, audience, and fallback status. Also shows experiment state if one is running.

๐Ÿ’ฌ Ask the AI:

Show me the variants in my homepage hero block

Input Schema

ParameterTypeRequiredDescription
block_idintegerYesSynced pattern (wp_block) post ID

Example Request (MCP)

json
{
  "block_id": 456
}

Site & Search

accelerate/get-site-context

DiscoveryPermission: edit_posts

Returns your site's design system โ€” color palette, typography, spacing, and optionally registered block types โ€” so AI agents can create brand-consistent content. Uses theme.json data from your WordPress installation.

๐Ÿ’ฌ Ask the AI:

What colors and fonts does my site use?

Input Schema

ParameterTypeRequiredDescription
include_blocksbooleanNoInclude registered block types with style variations (default: false)

Example Request (MCP)

json
{
  "include_blocks": false
}

accelerate/search-content

DiscoveryPermission: edit_posts

Find WordPress content by title, URL, or text content. Returns matching posts with their ID, title, URL, type, and excerpt โ€” useful for looking up content before running analytics or creating experiments.

๐Ÿ’ฌ Ask the AI:

Find all posts with 'pricing' in the title

Input Schema

ParameterTypeRequiredDescription
querystringYesSearch term
search_inenumNotitle, url, or content
post_typestringNoFilter by post type (e.g., post, page, wp_block)
limitintegerNoMaximum results to return (max 100)

Example Request (MCP)

json
{
  "query": "pricing",
  "search_in": "title",
  "post_type": "page",
  "limit": 10
}

Execution Abilities

Execution abilities create and modify experiments, audiences, and personalization rules. These require appropriate write permissions.

accelerate/create-ab-test

ExecutionPermission: edit_posts

Create a new A/B test with specified variants, traffic allocation, and goals.

๐Ÿ’ฌ Ask the AI:

Create an A/B test for my homepage hero section

Input Schema

ParameterTypeRequiredDescription
namestringYesName for the experiment
block_idintegerYesBlock to test
variantsarrayYesArray of variant configurations
traffic_allocationnumberNoPercentage of traffic (default: 100)
goalenumNoconversion, engagement, or click

Example Request (MCP)

json
{
  "name": "Homepage Hero Test",
  "block_id": 456,
  "variants": [
    {"name": "Control", "weight": 50},
    {"name": "New Headline", "weight": 50}
  ],
  "goal": "conversion"
}

accelerate/create-audience

ExecutionPermission: edit_posts

Create a new audience with specified targeting rules for geographic, behavioral, or referral-based segmentation.

๐Ÿ’ฌ Ask the AI:

Create an audience for users from the United States

Input Schema

ParameterTypeRequiredDescription
namestringYesName for the audience
rulesarrayYesArray of targeting rules
rule_logicenumNoand or or (default: and)

Example Request (MCP)

json
{
  "name": "US Visitors",
  "rules": [
    {
      "field": "location.country",
      "operator": "equals",
      "value": "US"
    }
  ]
}

accelerate/create-personalization-rule

ExecutionPermission: edit_posts

Create a personalization rule that shows specific content to a target audience.

๐Ÿ’ฌ Ask the AI:

Personalize the pricing section for enterprise visitors

Input Schema

ParameterTypeRequiredDescription
namestringYesName for the rule
audience_idintegerYesTarget audience ID
block_idintegerYesBlock to personalize
variant_idintegerYesContent variant to show

Example Request (MCP)

json
{
  "name": "Enterprise Pricing",
  "audience_id": 45,
  "block_id": 789,
  "variant_id": 2
}

accelerate/broadcast-content

ExecutionPermission: manage_options

Broadcast a block to multiple locations across the site. This is a destructive action requiring admin permissions. Available via REST API only โ€” not exposed in MCP tool discovery.

๐Ÿ’ฌ Ask the AI:

Add a sale banner to all blog posts

Input Schema

ParameterTypeRequiredDescription
block_idintegerYesBlock to broadcast
target_locationsarrayYesArray of target post IDs or content types
positionenumNobefore_content, after_content, or replace

Example Request (MCP)

json
{
  "block_id": 123,
  "target_locations": ["post"],
  "position": "before_content"
}

accelerate/update-audience

ExecutionPermission: edit_posts

Modify an existing audience's targeting rules or settings.

๐Ÿ’ฌ Ask the AI:

Update my US audience to also include Canada

Input Schema

ParameterTypeRequiredDescription
audience_idintegerYesAudience ID to update
namestringNoNew name for the audience
rulesarrayNoUpdated targeting rules

Example Request (MCP)

json
{
  "audience_id": 45,
  "name": "North America Visitors",
  "rules": [
    {"field": "location.country", "operator": "in", "value": ["US", "CA"]}
  ]
}

accelerate/set-block-goal

ExecutionPermission: edit_posts

Set the conversion goal for a block to track engagement, clicks, or form submissions.

๐Ÿ’ฌ Ask the AI:

Set the hero section to track form submissions

Input Schema

ParameterTypeRequiredDescription
block_idintegerYesBlock ID to configure
goalenumYesengagement, click, or form_submission

Example Request (MCP)

json
{
  "block_id": 456,
  "goal": "form_submission"
}

accelerate/set-traffic-percentage

ExecutionPermission: edit_posts

Adjust the traffic allocation percentage for an A/B test experiment.

๐Ÿ’ฌ Ask the AI:

Reduce the hero test to 50% of traffic

Input Schema

ParameterTypeRequiredDescription
experiment_idintegerYesExperiment ID to adjust
percentagenumberYesTraffic percentage (1-100)

Example Request (MCP)

json
{
  "experiment_id": 123,
  "percentage": 50
}

Variants

accelerate/add-variant

ExecutionPermission: edit_posts

Append a new variant to an existing synced pattern. Accepts block markup or plain text (plain text is automatically wrapped in paragraph blocks). Optionally assign a title, traffic percentage, or audience.

๐Ÿ’ฌ Ask the AI:

Add a new variant to my hero block with a different headline

Input Schema

ParameterTypeRequiredDescription
block_idintegerYesSynced pattern (wp_block) post ID
contentstringYesBlock markup or plain text for the variant
titlestringNoDisplay name for the variant
percentageintegerNoTraffic percentage (1-100)
audience_idintegerNoAudience to target this variant to

Example Request (MCP)

json
{
  "block_id": 456,
  "content": "<!-- wp:heading --><h2>New Headline</h2><!-- /wp:heading -->",
  "title": "Bold Headline Variant",
  "percentage": 50
}

accelerate/update-variant

ExecutionPermission: edit_posts

Update an existing variant's content and/or attributes. Provide at least one field to update โ€” content, title, percentage, or audience. Variant index is zero-based.

๐Ÿ’ฌ Ask the AI:

Change the content of variant 1 in my hero block

Input Schema

ParameterTypeRequiredDescription
block_idintegerYesSynced pattern (wp_block) post ID
variant_indexintegerYesZero-based variant index
contentstringNoNew block markup or plain text
titlestringNoNew display name
percentageintegerNoNew traffic percentage
audience_idintegerNoNew audience to target

Example Request (MCP)

json
{
  "block_id": 456,
  "variant_index": 1,
  "content": "<!-- wp:paragraph --><p>Updated content</p><!-- /wp:paragraph -->",
  "title": "Updated Variant"
}

accelerate/remove-variant

ExecutionDestructivePermission: edit_posts

Remove a variant from a synced pattern by index. Cannot remove the last remaining variant. This is a destructive action that requires confirmation.

๐Ÿ’ฌ Ask the AI:

Remove variant 2 from my hero block

Input Schema

ParameterTypeRequiredDescription
block_idintegerYesSynced pattern (wp_block) post ID
variant_indexintegerYesZero-based index of the variant to remove

Example Request (MCP)

json
{
  "block_id": 456,
  "variant_index": 2
}

Experiment Management

accelerate/stop-experiment

ExecutionDestructivePermission: manage_options

End, pause, resume, or declare a winner for an experiment. When declaring a winner, specify the winning variant index. This is a destructive action that requires confirmation.

๐Ÿ’ฌ Ask the AI:

Declare variant 0 as the winner of my hero test

Input Schema

ParameterTypeRequiredDescription
block_idintegerYesSynced pattern (wp_block) post ID
actionenumYespause, resume, stop, or declare_winner
winner_variant_indexintegerNoVariant index to declare as winner (required for declare_winner)

Example Request (MCP)

json
{
  "block_id": 456,
  "action": "declare_winner",
  "winner_variant_index": 0
}

Integration Abilities

Integration abilities enable direct event querying, custom aggregations, and data export for external analysis tools and business intelligence platforms.

Query & Aggregation

accelerate/query-events

IntegrationPermission: edit_posts

Run raw event queries with custom filters and field selection. Supports operators like eq, neq, contains, gt, lt, and in for flexible filtering. Returns matching events with total count and query execution time.

๐Ÿ’ฌ Ask the AI:

Show me all conversion events from mobile devices in the last 7 days

Input Schema

ParameterTypeRequiredDescription
filtersarrayNoArray of {field, operator, value} filter objects
fieldsarrayNoSpecific fields to return (omit for all)
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
limitintegerNoMaximum events (max 10,000)
offsetintegerNoPagination offset

Example Request (MCP)

json
{
  "filters": [
    {"field": "event_type", "operator": "eq", "value": "conversion"},
    {"field": "endpoint_demographic_platform", "operator": "contains", "value": "Android"}
  ],
  "date_range_preset": "7d",
  "limit": 100
}

accelerate/get-event-schema

IntegrationPermission: edit_posts

Discover all available analytics event fields with their types, descriptions, and example values. Use this to understand what data is available before running queries or aggregations.

๐Ÿ’ฌ Ask the AI:

What event fields are available for querying?

Input Schema

ParameterTypeRequiredDescription
refreshbooleanNoForce refresh the schema cache

Example Request (MCP)

json
{
  "refresh": false
}

accelerate/aggregate

IntegrationPermission: edit_posts

Run custom aggregations with flexible dimensions and metrics. Group data by any event field and apply aggregation functions: count, countDistinct, sum, avg, min, max. Perfect for building custom reports.

๐Ÿ’ฌ Ask the AI:

Count unique visitors by country for the last 30 days

Input Schema

ParameterTypeRequiredDescription
dimensionsarrayNoFields to GROUP BY (e.g., endpoint_location_country)
metricsarrayYesArray of {field, function} objects
filtersarrayNoArray of {field, operator, value} filter objects
date_range_presetenumNo1h, 4h, 12h, 24h, 7d, 30d, or 90d
limitintegerNoMaximum rows (max 1,000)

Example Request (MCP)

json
{
  "dimensions": ["endpoint_location_country"],
  "metrics": [
    {"field": "endpoint_id", "function": "countDistinct"},
    {"field": "event_type", "function": "count"}
  ],
  "date_range_preset": "30d",
  "limit": 20
}

Data Export

accelerate/export-events

IntegrationPermission: manage_options

Export raw event data for external analysis. Supports filtering by date range, event type, and custom attributes.

๐Ÿ’ฌ Ask the AI:

Export all conversion events from last month

Input Schema

ParameterTypeRequiredDescription
event_typesarrayNoFilter by event types
date_range_presetenumNo24h, 7d, 30d, 90d, ytd, or all
formatenumNojson or csv
limitintegerNoMaximum events (default: 10000)

Example Request (MCP)

json
{
  "event_types": ["conversion"],
  "date_range_preset": "30d",
  "format": "json"
}

accelerate/get-export-status

IntegrationPermission: edit_posts

Check the status of an export job or verify if export data is available for a specific date range.

๐Ÿ’ฌ Ask the AI:

Is my export ready?

Input Schema

ParameterTypeRequiredDescription
export_idstringNoSpecific export job ID to check
datestringNoCheck if data is available for this date

Example Request (MCP)

json
{
  "export_id": "abc123"
}

Reference

REST API

All abilities are also accessible via traditional REST endpoints. The base URL is /wp-json/wp-abilities/v1/

List All Abilities

bash
GET /wp-json/wp-abilities/v1/abilities

# Response includes schema, description, and permissions for each ability

Get Ability Schema

bash
GET /wp-json/wp-abilities/v1/abilities/{ability_id}

# Example:
GET /wp-json/wp-abilities/v1/abilities/accelerate%2Fget-performance-summary

Run an Ability

bash
POST /wp-json/wp-abilities/v1/abilities/{ability_id}/run
Content-Type: application/json

{
  "input": {
    "param1": "value1",
    "param2": "value2"
  }
}

MCP Endpoint

For MCP clients, use the dedicated endpoint:

bash
GET /wp-json/wp-abilities/v1/mcp

# Returns MCP-formatted tool list compatible with Claude Desktop

Permission Model

The Abilities API uses WordPress capabilities to control access. Each ability requires a specific capability to execute.

Permission Tiers

CapabilityAccess LevelExample Abilities
edit_postsView & Create (Authors+)All Discovery abilities, most Execution abilities, Query & Aggregation
manage_optionsAdminstop-experiment, broadcast-content, export-events

Authentication Methods

  • โ€ข Application Passwords โ€” Recommended for API integrations and AI agents
  • โ€ข Cookie Auth โ€” For same-origin browser requests (WordPress admin)
  • โ€ข OAuth 2.0 โ€” If configured via a WordPress OAuth plugin

Error Handling

The API returns structured errors with codes, messages, and hints for resolution.

Error Response Format

json
{
  "code": "invalid_parameter",
  "message": "The 'date_range_preset' parameter must be one of: 1h, 4h, 12h, 24h, 7d, 30d, 90d",
  "data": {
    "status": 400,
    "param": "date_range_preset",
    "provided": "1w",
    "allowed": ["1h", "4h", "12h", "24h", "7d", "30d", "90d"]
  }
}

Common Error Codes

CodeStatusDescription
rest_forbidden403User lacks required capability
invalid_parameter400Parameter value invalid or out of range
missing_parameter400Required parameter not provided
not_found404Requested resource doesn't exist
rate_limit_exceeded429Too many requests

Destructive Actions

Some abilities are marked as Destructive โ€” these modify or delete data irreversibly and require explicit confirmation from the user before an AI agent can execute them. Currently, remove-variant, stop-experiment, and broadcast-content are flagged as destructive.

Appendix

Date Range Presets

PresetDescription
1hLast 1 hour
4hLast 4 hours
12hLast 12 hours
24hLast 24 hours
7dLast 7 days
30dLast 30 days
90dLast 90 days
ytdYear to date
allAll time

Granularity Options

When using auto granularity (the default), the system automatically selects the best granularity based on the time range.

GranularityDescriptionAuto-selected for
5min5-minute intervals1h preset
15min15-minute intervals4h preset
30min30-minute intervals12h preset
1hHourly intervals24h preset
hourlyHourly intervals (alias)โ€”
dailyDaily intervals7d, 30d presets
weeklyWeekly intervals90d preset
aggregateSingle total (no time series)โ€”
autoAutomatically selects based on rangeDefault

Goal Types

GoalDescription
conversionForm submissions, signups, purchases
engagementClicks, scrolls, time on page
clickSpecific link or button clicks

Filter Operators

OperatorDescription
equalsExact match
not_equalsDoes not match
containsString contains value
not_containsString does not contain value
starts_withString starts with value
ends_withString ends with value
greater_thanNumeric greater than
less_thanNumeric less than
inValue in array
not_inValue not in array

Further Resources