toolset-typesToolset Types (custom content models) Abilities
Custom content models integration. Custom post types and taxonomies registered by a data-model plugin. Read-only diagnostic, definitions only.
manage_options 7Available Tools (7)
toolset_list_post_typesmanage_optionsList every custom post type registered through Toolset Types, with each one's slug, singular/plural labels, description, public and hierarchical flags, the editor features it supports, and the taxonomies bound to it. Registration DEFINITIONS only - the post type's content is read through the core post tools. Read-only.
Parameter Schema0 parameters
{
"type": "object",
"properties": {}
}toolset_list_taxonomiesmanage_optionsList every taxonomy registered through Toolset Types, with each one's slug, singular/plural labels, description, hierarchical flag, and the post types it attaches to. Registration DEFINITIONS only - the taxonomy's terms are read through the core term tools. Read-only.
Parameter Schema0 parameters
{
"type": "object",
"properties": {}
}toolset_list_fieldsmanage_optionsList every Toolset Types custom field DEFINITION: its slug, name, type (textfield/checkbox/date/image/…), and description. Field definitions only - a field's stored values on any post are read through the meta tools, not here. Read-only.
Parameter Schema0 parameters
{
"type": "object",
"properties": {}
}toolset_save_post_typeDestructiveCreate or update ONE Toolset Types post-type DEFINITION (the registration, not any post content). Pass the post-type slug plus fields to set; omitted fields keep their prior value on an update, or take WordPress-sensible defaults on a create. If the slug exists this updates it; otherwise it creates one, unless create_only is true. Passing taxonomies also binds this post type to those taxonomies (mirrored into each taxonomy definition, exactly as the Types admin does). Set dry_run=true to preview the resulting definition and the create/update decision without writing. Emits an undo token restoring the prior state of both the post-type and taxonomy options. Changes site structure: registering or reshaping a post type affects routing, admin menus, and REST exposure site-wide. It does NOT touch existing posts of this type.
Parameter Schema12 parameters
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Post-type slug (lowercased; max 20 chars per WordPress). Required."
},
"label": {
"type": "string",
"description": "Plural label, e.g. \"Books\". Defaults to a title-cased slug on create."
},
"singular_label": {
"type": "string",
"description": "Singular label, e.g. \"Book\"."
},
"description": {
"type": "string",
"description": "Human description of the post type."
},
"public": {
"type": "boolean",
"description": "Whether the type is public (queryable on the front end, shown in UI). Default true on create."
},
"hierarchical": {
"type": "boolean",
"description": "Page-like (true) vs post-like (false). Default false on create."
},
"has_archive": {
"type": "boolean",
"description": "Whether the type has a post-type archive. Default false on create."
},
"show_in_rest": {
"type": "boolean",
"description": "Expose in the REST API / block editor. Default true on create."
},
"supports": {
"type": "array",
"items": {
"type": "string"
},
"description": "Editor features, e.g. [\"title\",\"editor\",\"thumbnail\"]. Default [\"title\",\"editor\"] on create."
},
"taxonomies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Slugs of taxonomies to bind to this type. Only taxonomies that already exist as Types definitions are bound (mirrored into each taxonomy's attached-post-types map)."
},
"create_only": {
"type": "boolean",
"description": "If true, refuse when the slug already exists (never silently overwrite an existing definition). Default false."
},
"dry_run": {
"type": "boolean",
"description": "Preview the resulting definition and the create/update decision without writing. Default false."
}
},
"required": [
"slug"
]
}toolset_delete_post_typeDestructiveRemove ONE Toolset Types post-type DEFINITION (unregister it). Existing posts of this type are NOT deleted - they remain in the database, orphaned (no admin UI, no front-end route) until the type is registered again. The type is also unbound from every taxonomy that attached to it (mirrored, as the Types admin does). Refuses unless the slug currently exists. Set dry_run=true to preview what would be removed; otherwise confirm=true is required because this changes site structure and hides content. Emits an undo token restoring the prior definition and bindings.
Parameter Schema3 parameters
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Slug of the post-type definition to remove. Required."
},
"confirm": {
"type": "boolean",
"description": "Must be true to actually remove the definition (guards a structural change). Ignored when dry_run is true."
},
"dry_run": {
"type": "boolean",
"description": "Preview the removal (what would be unregistered) without writing. Default false."
}
},
"required": [
"slug"
]
}toolset_save_taxonomyDestructiveCreate or update ONE Toolset Types taxonomy DEFINITION (the registration, not any terms). Pass the taxonomy slug plus fields to set; omitted fields keep their prior value on an update, or take WordPress-sensible defaults on a create. object_types (the post types this taxonomy attaches to) is required and non-empty on create - this is what Types registers the taxonomy against, mirrored into each post-type definition. If the slug exists this updates it; otherwise it creates one, unless create_only is true. Set dry_run=true to preview without writing. Emits an undo token restoring the prior state of both options. Changes site structure; does NOT touch existing terms.
Parameter Schema10 parameters
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Taxonomy slug (lowercased; max 32 chars per WordPress). Required."
},
"label": {
"type": "string",
"description": "Plural label, e.g. \"Genres\"."
},
"singular_label": {
"type": "string",
"description": "Singular label, e.g. \"Genre\"."
},
"description": {
"type": "string",
"description": "Human description of the taxonomy."
},
"hierarchical": {
"type": "boolean",
"description": "Category-like (true) vs tag-like (false). Default false on create."
},
"public": {
"type": "boolean",
"description": "Whether the taxonomy is public. Default true on create."
},
"show_in_rest": {
"type": "boolean",
"description": "Expose in the REST API / block editor. Default true on create."
},
"object_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Post-type slugs this taxonomy attaches to. Required and non-empty on create. Only post types that already exist (Types-defined or a WordPress built-in) are bound."
},
"create_only": {
"type": "boolean",
"description": "If true, refuse when the slug already exists. Default false."
},
"dry_run": {
"type": "boolean",
"description": "Preview the resulting definition and the create/update decision without writing. Default false."
}
},
"required": [
"slug"
]
}toolset_delete_taxonomyDestructiveRemove ONE Toolset Types taxonomy DEFINITION (unregister it). Existing terms are NOT deleted - they remain in the database, orphaned until the taxonomy is registered again. The taxonomy is also unbound from every post type it attached to (mirrored, as the Types admin does). Refuses unless the slug currently exists. Set dry_run=true to preview; otherwise confirm=true is required. Emits an undo token restoring the prior definition and bindings.
Parameter Schema3 parameters
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Slug of the taxonomy definition to remove. Required."
},
"confirm": {
"type": "boolean",
"description": "Must be true to actually remove the definition. Ignored when dry_run is true."
},
"dry_run": {
"type": "boolean",
"description": "Preview the removal without writing. Default false."
}
},
"required": [
"slug"
]
}