Skip to main content
Glama

royal-mcp__wp_security_triage

Read-onlyIdempotent

Read-only security check for a site you suspect was compromised. Reports facts only, never secrets: must-use plugins and drop-ins (file, name, version, modified date) and anything else in mu-plugins; plugin folders and loose PHP files in the plugins folder that WordPress does not list as plugins; every plugin with its folder and main-file modified dates; users holding capabilities beyond their role (id, short login hash, role, extra capabilities, registration date; no emails or logins) and the administrator count; whether named options exist (present + count only, never names beyond your pattern or values); leftovers in wp-content/upgrade. Pass since (a date) to flag anything installed, changed or registered after it, plugin_names to look for published indicator plugin slugs, option_patterns for published database indicators. Ends with the indicators found and a summary that never says the site is clean: "No indicators found among the checks run". Filesystem walks stop at 5,000 files or 3 seconds per check a… Through Royally: read-only, runs straight away.

Input Schema

NameRequiredDescriptionDefault
sinceNoOptional date (2026-10-17 or 2026-10-17T00:00:00Z): flag plugins, must-use plugins, drop-ins and upgrade leftovers changed after it, and count administrators registered after it.
checksNoOptional subset of checks to run. Default: all.
site_idNoSite to run this tool on: 8ef2e52b-bd07-4671-a363-ebe8b480b65c (https://demo.royalplugins.com)
plugin_namesNoUp to 50 plugin slugs or folder names from a published advisory; each is looked for among registered, unregistered, must-use and drop-in files.
option_patternsNoUp to 20 option names or patterns with one * at the start or end (e.g. *_sync_token), at least 6 characters besides the *. Each returns present and count only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Beyond annotations (readOnly/idempotent/non-destructive), the description discloses substantial behavior: it reports facts but never secrets (no emails or logins, only short login hashes), option patterns return present+count only without leaking names or values, and filesystem walks are bounded at 5,000 files or 3 seconds per check. It even specifies the fixed summary wording that refuses to declare a site clean. These are exactly the operational details an agent cannot get from the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The purpose and the non-leakage guarantees are front-loaded, which is good. However, the body is a single dense run-on paragraph that packs every check into comma-chained clauses, and it is visibly truncated mid-sentence ("per check a…"), which leaves a dangling, unreadable fragment.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining results and does so: it enumerates each reported field group and states that the response ends with the indicators found plus a fixed summary. Combined with the bounded-walk and no-secrets disclosures, an agent knows what it will receive and how to interpret it.

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 the schema already documents `since`, `checks`, `site_id`, `plugin_names`, and `option_patterns` in comparable detail, so the baseline is 3. The description adds modest framing by tying `plugin_names`/`option_patterns` to published advisories, but mostly paraphrases what the schema already states.

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 first sentence gives a specific verb+resource+scope: a read-only security check on a suspected-compromised site, followed by an explicit enumeration of every check performed (mu-plugins/drop-ins, unregistered plugin folders, PHP files, plugin modified dates, over-privileged users, admin count, option existence, upgrade leftovers). An agent can tell exactly what it gets back. It never names or contrasts itself with the many sibling security tools (fleet__security_triage, fleet__scan_security, gp_get_security_status), so it falls 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes a clear trigger context ("a site you suspect was compromised") and explains how to use the optional parameters: pass `since` to flag post-date changes, `plugin_names` for published indicator plugin slugs, `option_patterns` for published database indicators. That is strong guidance for a triage workflow. It stops short of stating when NOT to use it or which sibling scan/triage tool to prefer instead.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources