Read and write Drupal JSON:API nodes, taxonomy terms, users and files.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a new resource (content entity) for an entity_type/bundle. JSON:API: POST /jsonapi/{entity_type}/{bundle} → 201. Body is { data: { type: entity_type--bundle, attributes, relationships? } }.
The bundle machine name, e.g. "article", "tags", "user".
Field values, e.g. { "title": "Hello", "body": { "value": "…", "format": "plain_text" } }.
The entity type machine name, e.g. "node", "taxonomy_term", "user".
Optional relationships, e.g. { "field_tags": { "data": [{ "type": "taxonomy_term--tags", "id": "<uuid>" }] } }.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Create a new resource (content entity) for an entity_type/bundle. JSON:API: POST /jsonapi/{entity_type}/{bundle} → 201. Body is { data: { type: entity_type--bundle, attributes, relationships? } }.
| Argument | Type | Description |
|---|---|---|
| bundle* | string | The bundle machine name, e.g. "article", "tags", "user". |
| attributes* | object | Field values, e.g. { "title": "Hello", "body": { "value": "…", "format": "plain_text" } }. |
| entity_type* | string | The entity type machine name, e.g. "node", "taxonomy_term", "user". |
| relationships | object | Optional relationships, e.g. { "field_tags": { "data": [{ "type": "taxonomy_term--tags", "id": "<uuid>" }] } }. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"entity_type",
"bundle",
"attributes"
],
"properties": {
"bundle": {
"type": "string",
"description": "The bundle machine name, e.g. \"article\", \"tags\", \"user\"."
},
"attributes": {
"type": "object",
"description": "Field values, e.g. { \"title\": \"Hello\", \"body\": { \"value\": \"…\", \"format\": \"plain_text\" } }.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"entity_type": {
"type": "string",
"description": "The entity type machine name, e.g. \"node\", \"taxonomy_term\", \"user\"."
},
"relationships": {
"type": "object",
"description": "Optional relationships, e.g. { \"field_tags\": { \"data\": [{ \"type\": \"taxonomy_term--tags\", \"id\": \"<uuid>\" }] } }.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}Delete a resource by UUID. JSON:API: DELETE /jsonapi/{entity_type}/{bundle}/{uuid} → 204 (empty body). Returns a small confirmation.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | The entity UUID (JSON:API uses the UUID, never the numeric id). |
| bundle* | string | The bundle machine name, e.g. "article", "tags", "user". |
| entity_type* | string | The entity type machine name, e.g. "node", "taxonomy_term", "user". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"entity_type",
"bundle",
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "The entity UUID (JSON:API uses the UUID, never the numeric id)."
},
"bundle": {
"type": "string",
"description": "The bundle machine name, e.g. \"article\", \"tags\", \"user\"."
},
"entity_type": {
"type": "string",
"description": "The entity type machine name, e.g. \"node\", \"taxonomy_term\", \"user\"."
}
}
}Get a single resource by UUID for an entity_type/bundle, with optional includes. JSON:API: GET /jsonapi/{entity_type}/{bundle}/{uuid}.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | The entity UUID (JSON:API uses the UUID, never the numeric id). |
| bundle* | string | The bundle machine name, e.g. "article", "tags", "user". |
| include | string | Comma-separated relationship paths to include, e.g. uid,field_tags (→ query param include). |
| entity_type* | string | The entity type machine name, e.g. "node", "taxonomy_term", "user". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"entity_type",
"bundle",
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "The entity UUID (JSON:API uses the UUID, never the numeric id)."
},
"bundle": {
"type": "string",
"description": "The bundle machine name, e.g. \"article\", \"tags\", \"user\"."
},
"include": {
"type": "string",
"description": "Comma-separated relationship paths to include, e.g. uid,field_tags (→ query param include)."
},
"entity_type": {
"type": "string",
"description": "The entity type machine name, e.g. \"node\", \"taxonomy_term\", \"user\"."
}
}
}List all available JSON:API resource types (entity_type/bundle pairs) with their hrefs, so the agent can discover what to query. JSON:API: GET /jsonapi.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List a collection of resources for an entity_type/bundle, with optional sorting, pagination, includes, and a single-field filter. JSON:API: GET /jsonapi/{entity_type}/{bundle}.
| Argument | Type | Description |
|---|---|---|
| sort | string | Field to sort by; prefix with - for descending, e.g. -created (→ query param sort). |
| bundle* | string | The bundle machine name, e.g. "article", "tags", "user". |
| include | string | Comma-separated relationship paths to include, e.g. uid,field_tags (→ query param include). |
| page_limit | integer | Max records to return (→ query param page[limit]). |
| entity_type* | string | The entity type machine name, e.g. "node", "taxonomy_term", "user". |
| page_offset | integer | Records to skip (→ query param page[offset]). |
| filter_field | string | Field path to filter on, e.g. title (used with filter_value; builds a verbose filter). |
| filter_value | string |
Convenience node-title search: list nodes of a bundle whose title CONTAINS a query string. JSON:API: GET /jsonapi/node/{bundle} with a verbose CONTAINS filter on title.
| Argument | Type | Description |
|---|---|---|
| query* | string | Text to match against the node title (CONTAINS). |
| bundle* | string | The node bundle (content type) machine name, e.g. "article", "page". |
| page_limit | integer | Max records to return (→ query param page[limit]). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bundle",
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Text to match against the node title (CONTAINS)."
},
"bundle": {
"type": "string",
"description": "The node bundle (content type) machine name, e.g. \"article\", \"page\"."
},
"page_limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return (→ query param page[limit])."
}
}
}Update an existing resource by UUID (partial update of attributes and/or relationships). JSON:API: PATCH /jsonapi/{entity_type}/{bundle}/{uuid}. Body is { data: { type, id: uuid, attributes?, relationships? } }.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | The entity UUID (JSON:API uses the UUID, never the numeric id). |
| bundle* | string | The bundle machine name, e.g. "article", "tags", "user". |
| attributes | object | Field values to change. |
| entity_type* | string | The entity type machine name, e.g. "node", "taxonomy_term", "user". |
| relationships | object | Relationships to change. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"entity_type",
"bundle",
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "The entity UUID (JSON:API uses the UUID, never the numeric id)."
},
"bundle": {
"type": "string",
"description": "The bundle machine name, e.g. \"article\", \"tags\", \"user\"."
},
"attributes": {
"type": "object",
"description": "Field values to change.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"entity_type": {
"type": "string",
"description": "The entity type machine name, e.g. \"node\", \"taxonomy_term\", \"user\"."
},
"relationships": {
"type": "object",
"description": "Relationships to change.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}| Value to match for filter_field. |
| filter_operator | string | Filter operator, e.g. "=", "CONTAINS", ">", "STARTS_WITH". Default "=". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"entity_type",
"bundle"
],
"properties": {
"sort": {
"type": "string",
"description": "Field to sort by; prefix with - for descending, e.g. -created (→ query param sort)."
},
"bundle": {
"type": "string",
"description": "The bundle machine name, e.g. \"article\", \"tags\", \"user\"."
},
"include": {
"type": "string",
"description": "Comma-separated relationship paths to include, e.g. uid,field_tags (→ query param include)."
},
"page_limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return (→ query param page[limit])."
},
"entity_type": {
"type": "string",
"description": "The entity type machine name, e.g. \"node\", \"taxonomy_term\", \"user\"."
},
"page_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Records to skip (→ query param page[offset])."
},
"filter_field": {
"type": "string",
"description": "Field path to filter on, e.g. title (used with filter_value; builds a verbose filter)."
},
"filter_value": {
"type": "string",
"description": "Value to match for filter_field."
},
"filter_operator": {
"type": "string",
"description": "Filter operator, e.g. \"=\", \"CONTAINS\", \">\", \"STARTS_WITH\". Default \"=\"."
}
}
}