FastAPI-based server for managing WordPress sites via REST API, enabling article publishing, media uploads, and content management
Server exposes credentials (site_url, username, password) as tool parameters across 4 of 5 tools, violating critical secret-injection pattern. Tool descriptions are present but generic (avg 60 chars, below 194-char baseline). Parameter descriptions exist but lack constraints, ranges, or format guidance. No output schemas documented. Error handling is minimal, most failures return raw HTTP status codes without recovery guidance. Tools lack idempotency hints and confirmation steps for destructive operations (publish_article). No pagination support despite potential for large result sets (get_categories, get_tags).
Get all categories from WordPress
Get all tags from WordPress
Get WordPress configuration from environment variables
Publish an article to WordPress. You can provide categories and tags as JSON arrays of IDs. You can provide a featured image either as a file upload or as a URL.
Test the WordPress connection using environment variables
Credentials exposed as tool parameters: site_url, username, password appear in get_categories, get_tags, publish_article, and test_connection. Credentials in parameters are logged in traces and prompt history, creating security leaks.
No output schemas documented. get_categories and get_tags return JSON objects with 'status' and 'categories'/'tags' fields, but LLMs cannot plan downstream calls without knowing the structure. publish_article returns article_id, article_url, status, edit_url but this is not visible in tool definition.
Parameter descriptions lack constraints and format guidance. 'status' in publish_article says 'draft, publish, pending, private (default: draft)' in tool description but should be an enum in schema. 'categories' and 'tags' accept JSON strings but description does not specify format or example.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No pagination support. get_categories and get_tags hardcode per_page=100 but do not return total count, next_cursor, or accept limit/offset parameters. Large WordPress sites with >100 categories/tags will be silently truncated.
publish_article lacks confirmation or dry-run step. Destructive operations should support confirmation before execution to prevent accidental publication. No idempotentHint or destructiveHint annotations present.