AdvancedCustomFields / AdvancedCustomFields/acf

ACF 6.8 register-custom-post-type ability exposes an MCP schema rejected by ChatGPT/OpenAI strict validation

Open
#1,035 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
PHP
Stars
945
Forks
197
PR merge metrics
No merged PRs in 30d

Description

Summary

The ACF 6.8 acf/register-custom-post-type ability currently exposes an input schema that cannot be loaded by ChatGPT's MCP client.

When the ability is exposed as an MCP tool, ChatGPT rejects the tool during tool discovery with:

Invalid MCP tool schema for tool 'wp_ability_acf_register_custom_post_type'

I traced the issue to the schema definition of the supports property in src/AI/Abilities/PostType.php.

Environment

  • ACF PRO: 6.8.10
  • WordPress: 7.1
  • PHP: 8.3.33
  • MCP adapter: Easy MCP AI 1.7.17
  • Client: ChatGPT Custom MCP
  • Date tested: 2026-09-15

Steps to reproduce

  1. Enable ACF AI abilities:
add_filter( 'acf/settings/enable_acf_ai', '__return_true' );
  1. Expose acf/register-custom-post-type as an MCP tool.
  2. Connect the WordPress MCP server to ChatGPT.
  3. Refresh/discover MCP tools.

ChatGPT rejects the tool schema and the MCP tool refresh fails.

Suspected root cause

The current schema defines supports as an array without an items schema:

'supports' => array(
    'type'        => 'array',
    'description' => 'Features the post type supports...',
    'required'    => false,
),

However, another array property in the same ability, taxonomies, correctly includes an items definition:

'taxonomies' => array(
    'type'        => 'array',
    'description' => 'Array of taxonomy names...',
    'items'       => array(
        'type' => 'string',
    ),
    'required'    => false,
),

Strict OpenAI-compatible tool-schema validators reject array schemas without an items definition.

This is particularly problematic for an ability specifically intended to make ACF interoperable with external AI/MCP clients.

There also appears to be a contract mismatch around supports: the description/runtime behavior indicates support for both indexed arrays and associative/object-style values, while the published schema declares only type: array.

Expected behavior

acf/register-custom-post-type should expose a tool schema that can be successfully discovered and loaded by major MCP clients, including ChatGPT/OpenAI-compatible clients.

Actual behavior

Tool discovery fails when this ability is enabled.

ChatGPT displays:

Invalid MCP tool schema for tool 'wp_ability_acf_register_custom_post_type'

Disabling only the acf/register-custom-post-type MCP tool allows tool discovery to continue.

Suggested fix

At minimum, define the item type for supports:

'supports' => array(
    'type'        => 'array',
    'items'       => array(
        'type' => 'string',
    ),
    'description' => 'Features the post type supports...',
    'required'    => false,
),

The documented/runtime support for associative/object-style supports values should also be reconciled with the published ability schema.

I would also suggest adding an automated schema compatibility/regression test for all ACF Abilities exposed through MCP, particularly against strict OpenAI-compatible tool-schema validation.

This class of issue is straightforward to catch automatically before release by validating every exposed ability schema and failing CI when an array schema required by a target client is missing its items definition.

Additional observation

The same area may deserve a broader schema audit rather than treating this as a single-property typo.

For example, other ACF AI/Abilities schemas should be checked for arrays without explicit item definitions and for mismatches between runtime-supported values and the machine-readable schema.

Reproduction evidence

I can provide a screenshot of ChatGPT failing MCP tool refresh with:

Invalid MCP tool schema for tool 'wp_ability_acf_register_custom_post_type'

Reported by Süha Karalar
https://www.suhakaralar.com

Image

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/AI/Abilities/PostType.php and inspect the supports schema alongside the taxonomies schema. Verify how supports is represented at runtime, then add the missing item definition or reconcile the documented object-style values with the published schema. Add an automated regression check that validates the exposed ability against strict OpenAI-compatible tool-schema requirements.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
api, backend-api-design
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.