Skip to main content
Glama

Server Details

Read and write Drupal JSON:API nodes, taxonomy terms, users and files.

Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

Each tool maps to a distinct JSON:API verb (create/get/list/update/delete) plus type discovery, so boundaries are mostly clear. The only overlap is between drupal_list_resources and drupal_search_content, since search is essentially a filtered list, though the description frames it as a convenience node-title CONTAINS search.

Naming Consistency5/5

Every tool follows the same drupal_verb_noun snake_case pattern (create_resource, get_resource, list_resources, update_resource, delete_resource), with list_resource_types and search_content fitting the convention cleanly.

Tool Count5/5

Seven tools is well-scoped: full CRUD on generic resources plus one discovery tool and one convenience search, with no redundant or filler tools.

Completeness4/5

The CRUD lifecycle plus resource-type discovery covers the core JSON:API workflow with no dead ends for standard reads/writes. Minor gaps exist around bulk operations and schema/field discovery, but agents can work around these using the existing list and type tools.

Available Tools

7 tools
drupal_create_resourceCreate resourceA
Destructive
Inspect

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? } }.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundleYesThe bundle machine name, e.g. "article", "tags", "user".
attributesYesField values, e.g. { "title": "Hello", "body": { "value": "…", "format": "plain_text" } }.
entity_typeYesThe entity type machine name, e.g. "node", "taxonomy_term", "user".
relationshipsNoOptional relationships, e.g. { "field_tags": { "data": [{ "type": "taxonomy_term--tags", "id": "<uuid>" }] } }.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only destructiveHint=true provided, the description goes beyond annotations by disclosing the endpoint, the HTTP method, the success status (201), and the exact request body contract including the composite type format. It stops short of auth/permission needs or error behavior, so not a 5.

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?

Front-loaded with the core action, then two dense clauses covering endpoint and payload with zero filler. Slightly telegraphic (arrow notation, shorthand) but nothing wasted.

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?

No output schema exists, and the description compensates by naming the 201 status; the nested payload shape is explained. It is complete enough to invoke correctly, though failure modes and auth requirements are absent for a mutating tool.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real value by showing how the parameters combine inside the payload ({ data: { type: entity_type--bundle, attributes, relationships? } }), clarifying that entity_type+bundle form the type string and that relationships is optional.

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?

States a specific verb (Create) and resource (content entity) scoped by entity_type/bundle, and the JSON:API mapping (POST /jsonapi/{entity_type}/{bundle}) makes the operation unambiguous. An agent can immediately separate it from the get/list/update/delete siblings.

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?

Usage is implied by the CRUD verb and the 'new resource' framing, but there is no explicit when-to-use vs drupal_update_resource, no note on prerequisites (auth, existing bundle), and no exclusions. Adequate context, but inference is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drupal_delete_resourceDelete resourceA
Destructive
Inspect

Delete a resource by UUID. JSON:API: DELETE /jsonapi/{entity_type}/{bundle}/{uuid} → 204 (empty body). Returns a small confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesThe entity UUID (JSON:API uses the UUID, never the numeric id).
bundleYesThe bundle machine name, e.g. "article", "tags", "user".
entity_typeYesThe entity type machine name, e.g. "node", "taxonomy_term", "user".

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the safety profile is covered. The description usefully adds the underlying endpoint and the 204/empty-body response behavior plus a brief note on the return payload, but says nothing about permissions, auth requirements, or error cases (404/403) 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and followed by the technical detail. Every clause carries information and there is no filler.

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?

The description covers the action, the required identifier, the wire endpoint, and the response shape, which is enough for a simple three-parameter delete with a fully documented schema. It is only slightly thin on failure/permission behavior.

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%, and all three parameters (entity_type, bundle, uuid) are already documented with examples in the schema. The description adds no syntax or constraint detail beyond what the schema provides, so the baseline 3 applies.

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?

States a specific verb and resource ('Delete a resource by UUID') and pins down the exact REST mapping, which unambiguously separates it from the create/get/update/list siblings. An agent can identify this as the delete operation without opening the 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?

The description says nothing about when to use this versus drupal_update_resource, nor does it warn that the operation is irreversible or that the resource must already exist. For a destructive operation, the absence of any when/when-not guidance is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drupal_get_resourceGet resourceA
Read-only
Inspect

Get a single resource by UUID for an entity_type/bundle, with optional includes. JSON:API: GET /jsonapi/{entity_type}/{bundle}/{uuid}.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesThe entity UUID (JSON:API uses the UUID, never the numeric id).
bundleYesThe bundle machine name, e.g. "article", "tags", "user".
includeNoComma-separated relationship paths to include, e.g. uid,field_tags (→ query param include).
entity_typeYesThe entity type machine name, e.g. "node", "taxonomy_term", "user".

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful invocation context by surfacing the underlying GET endpoint, but says nothing about error behavior (e.g., 404 on unknown UUID) or response shape. This is acceptable but not rich context beyond the annotations.

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 filler, with the core operation stated first and the endpoint mapping as a compact trailing clarification. Every clause earns its place.

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 read-only single-fetch whose annotations cover safety and whose schema fully documents all four parameters, the description is close to complete. It could add one line on what the JSON:API response contains or how errors surface, but no output schema exists to do that work either, so this is a minor gap.

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%, so the baseline is 3 and each parameter already documents itself, including the UUID-vs-numeric-id and include-path details. The description restates entity_type/bundle/uuid and the optional includes without adding syntax or constraints 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?

The description names a specific verb and resource ('Get a single resource by UUID') and scopes it by entity_type/bundle, which inherently distinguishes it from the plural siblings drupal_list_resources and drupal_search_content. The appended JSON:API path maps the abstract operation onto a concrete endpoint, leaving no ambiguity about what is retrieved.

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?

Usage is only implied by the 'single resource by UUID' framing; the description never states when to prefer this over drupal_search_content or drupal_list_resources, nor any prerequisite such as needing a known UUID first. Adequate but with a clear gap in routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drupal_list_resourcesList resourcesA
Read-only
Inspect

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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoField to sort by; prefix with - for descending, e.g. -created (→ query param sort).
bundleYesThe bundle machine name, e.g. "article", "tags", "user".
includeNoComma-separated relationship paths to include, e.g. uid,field_tags (→ query param include).
page_limitNoMax records to return (→ query param page[limit]).
entity_typeYesThe entity type machine name, e.g. "node", "taxonomy_term", "user".
page_offsetNoRecords to skip (→ query param page[offset]).
filter_fieldNoField path to filter on, e.g. title (used with filter_value; builds a verbose filter).
filter_valueNoValue to match for filter_field.
filter_operatorNoFilter operator, e.g. "=", "CONTAINS", ">", "STARTS_WITH". Default "=".

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already declaring a safe read, the description still adds real behavioral context: the read path is a JSON:API GET on /jsonapi/{entity_type}/{bundle}, and filtering is limited to a single field. That single-field constraint is a genuine capability boundary the schema alone does not spell out.

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 compact sentences: the capability and its constraints come first, the underlying HTTP mapping second. Every clause carries information and there is no filler.

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 9-parameter list tool with no output schema, the description covers the operation, its filter scope, and the wire mapping, and the schema handles per-parameter detail. Only minor gaps remain, such as whether results are paginated by default or what envelope shape is returned.

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 each of the 9 parameters documented inline (sort prefix, page[limit]/page[offset] mapping, filter_operator defaults), so the baseline is 3. The description only summarizes the parameter families (sorting, pagination, includes, single-field filter) without adding syntax or constraints beyond the schema.

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 pairs a specific verb ('List') with a clear resource and scope ('a collection of resources for an entity_type/bundle'), which implicitly separates it from the singular drupal_get_resource. It stops short of naming any sibling tool explicitly, so the discrimination is inferential rather than stated.

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?

Usage is implied by 'List a collection of resources for an entity_type/bundle' plus the enumeration of optional modifiers, so an agent can infer this is the collection-read path. However, there is no when-to-use/when-not guidance and no routing to alternatives such as drupal_search_content for cross-entity queries or drupal_list_resource_types for discovering types.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drupal_list_resource_typesList resource typesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, so safety is covered. The description adds real value beyond that by disclosing the underlying endpoint (GET /jsonapi) and the shape of the return (resource types with hrefs), which an agent needs to chain into follow-up queries. No pagination or error behavior is mentioned, but JSON:API index documents are single-shot, so that gap is minor.

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?

One tightly packed sentence: verb, resource, granularity, return content, purpose, and endpoint. Nothing is wasted and the discovery framing is front-loaded.

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 zero-parameter, read-only listing tool with no output schema, the description supplies enough: what is returned, at what granularity, and the raw endpoint for parity. It stops short of noting that this is the prerequisite step before drupal_get_resource/drupal_search_content, which would have made the workflow fully self-contained.

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 tool takes zero parameters, so the baseline is 4. The description correctly implies there is nothing to configure, and the empty schema is consistent with that.

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?

States a specific verb and resource ('List all available JSON:API resource types') and clarifies the granularity as entity_type/bundle pairs, which is what separates it from the sibling drupal_list_resources. The added 'so the agent can discover what to query' makes the intent unmistakable.

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 phrase 'so the agent can discover what to query' implies this is a discovery/entry-point call, which is useful context. However, it never explicitly contrasts with the similarly named sibling drupal_list_resources, so an agent could still pick the wrong list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drupal_search_contentSearch contentB
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText to match against the node title (CONTAINS).
bundleYesThe node bundle (content type) machine name, e.g. "article", "page".
page_limitNoMax records to return (→ query param page[limit]).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read. The description adds real value by disclosing that matching is title-only and CONTAINS-based, plus the exact endpoint used, but says nothing about pagination defaults, sorting, or what fields each returned node contains.

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?

Two compact sentences, front-loaded with the core behavior and then the implementation detail. The JSON:API reference is slightly extraneous but it is short and does not bloat the definition.

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?

For a 3-parameter read tool with no output schema, the description covers purpose and matching semantics adequately but omits return shape (full node objects vs. titles only), default limits, and ordering, leaving an agent to guess at result handling.

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%, so all three parameters (query, bundle, page_limit) are already documented with examples and types. The description's CONTAINS mention duplicates the schema text rather than adding meaning, so the baseline 3 is appropriate.

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?

States a specific verb+resource ('list nodes of a bundle whose title CONTAINS a query string') and names the underlying JSON:API call. It's clearly distinguishable from the generic CRUD siblings, though it never explicitly contrasts itself with drupal_list_resources, which could also enumerate nodes.

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 phrase 'Convenience node-title search' implies the usage context (title lookup rather than full enumeration), but there is no explicit when-to-use/when-not or named alternative such as drupal_list_resources for listing a whole bundle.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drupal_update_resourceUpdate resourceA
Destructive
Inspect

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? } }.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesThe entity UUID (JSON:API uses the UUID, never the numeric id).
bundleYesThe bundle machine name, e.g. "article", "tags", "user".
attributesNoField values to change.
entity_typeYesThe entity type machine name, e.g. "node", "taxonomy_term", "user".
relationshipsNoRelationships to change.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations supply destructiveHint=true, and the description adds genuinely useful context beyond that: the operation is a PATCH-style partial update (unspecified fields are preserved) and it targets an existing resource identified by UUID. It still omits auth/permission requirements and the failure mode when the UUID does not exist.

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?

Three tight sentences: purpose first, then the wire format. Every clause carries information (partial semantics, endpoint template, body shape) and nothing is repeated or padded.

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 five-parameter mutation tool with no output schema, the description covers the operation, identifier scheme, endpoint, and payload structure adequately. It leaves error handling and permission requirements unstated, but nothing essential for a correct call is missing.

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?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by documenting the request envelope { data: { type, id, attributes?, relationships? } }, which reveals the required type/id wrapper fields the schema does not mention directly.

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?

States a specific verb+resource ("Update an existing resource by UUID") and scopes it precisely as a partial update of attributes and/or relationships, plus the exact JSON:API endpoint. It does not name a sibling tool, so the agent must infer the create/delete boundary from the verb, which keeps it just short of a 5.

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?

Usage is implied rather than stated: "partial update" and "existing resource" signal when this is appropriate versus create/delete, but there is no explicit when-to-use, when-not-to-use, or named alternative among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updates
    • First observeddrupal_create_resource
    • First observeddrupal_delete_resource
    • First observeddrupal_get_resource
    • First observeddrupal_list_resource_types
    • First observeddrupal_list_resources
    • First observeddrupal_search_content
    • First observeddrupal_update_resource

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.