MCP-Writing-Servers (RLRyals/MCP-Writing-Servers) is an MCP server listed on the M8ven Trust Index. It scores 52 out of 100, grade D. It declares 258 tools. No publisher has claimed this listing.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
RLRyals
Source: github_repo_search
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
list_authorsList all authors
get_authorGet author details
create_authorCreate author
update_authorUpdate author
list_booksList books
get_bookGet book details
create_bookCreate book
update_bookUpdate book
delete_bookDelete a book and all its chapters/scenes
create_chapterCreate chapter
update_chapterUpdate chapter
get_chapterGet chapter details
list_chaptersList chapters
delete_chapterDelete chapter & scenes
create_sceneCreate scene
update_sceneUpdate scene
get_sceneGet scene details
list_scenesList scenes
delete_sceneDelete scene
reorder_scenesReorder scenes
analyze_scene_flowAnalyze scene flow & pacing
get_book_structureGet book structure
analyze_book_progressAnalyze writing progress
validate_book_consistencyCheck consistency issues
list_charactersList/search characters. Provide series_id, search, or both. Unscoped listing not supported.
get_characterGet character details
create_characterCreate a character. Canonical entry point for new characters — a raw database-admin insert on the characters table skips this and won't be visible to knowledge/relationship/continuity tools.
update_characterUpdate core character fields (name, type, status). Prefer this over raw database-admin CRUD so status changes stay consistent with arc and continuity tracking.
add_character_detailAdd/update character detail
get_character_detailsGet character details
update_character_detailUpdate character detail
delete_character_detailDelete character detail
add_character_knowledgeRecord what a character knows, when, and how — maintains knowledge-state continuity. A raw table write bypasses the checks that catch "character knows something before they learned it" plot holes.
add_character_knowledge_with_chapterAdd knowledge w/ chapter ref
update_character_knowledgeCorrect an existing character knowledge entry. Identify by `id`. Only provided fields are changed.
delete_character_knowledgeDelete a character knowledge entry. Identify by `id`.
check_character_knowledgeCheck character knowledge
get_characters_who_knowFind who knows about something
track_character_presenceRecord a character's presence/state in a chapter or scene — feeds continuity and knowledge-timing checks. A raw insert bypasses those checks.
get_character_timelineGet character timeline
check_character_continuityValidate a character's state and knowledge stay consistent across a chapter range — catches contradictions a raw CRUD read can't, because it has no notion of "consistent."
get_characters_in_chapterGet chapter characters
db_query_audit_logsQuery audit logs to review database operations history. Allows filtering by: - Date range (start_date, end_date) - Table name - Operation type (CREATE, READ, UPDATE, DELETE, BATCH_INSERT, BATCH_UPDATE, BATCH_DELETE) - User ID - Success/failure status - Pagination (limit, offset) Use cases: - Compl…
db_get_audit_summaryGet comprehensive audit summary statistics. Provides aggregated statistics including: - Total operations count - Success/failure rates - Tables accessed - Unique users - Average and max execution times - Operations breakdown by type - Top tables by activity Useful for: - High-level compliance repo…
db_backup_fullCreate a full database backup including all tables, schemas, and data. Supports compression and returns backup file details with size, record count, and checksum.
db_backup_tableCreate a backup of specific database table(s). Supports data-only, schema-only, or full backups with optional compression.
db_backup_incrementalCreate an incremental backup containing only changes since the last backup. Requires a base backup and tracks changes via updated_at timestamps.
db_export_jsonExport table data to JSON format for data migration or analysis. Supports filtering with WHERE conditions and record limits.
db_export_csvExport table data to CSV format with proper escaping and UTF-8 encoding. Includes column headers and supports filtering.
db_restore_fullRestore complete database from a backup file. Validates backup integrity before restore and supports conflict resolution strategies.
db_restore_tableRestore a specific table from a table backup file. Validates foreign key constraints and handles record conflicts.
db_import_jsonImport data from JSON export file into a table. Validates JSON structure and supports upsert operations.
db_import_csvImport data from CSV file into a table. Supports header row detection, type conversion, and conflict resolution.
db_list_backupsList all available backups with metadata including size, date, tables, and record counts. Supports filtering and sorting.
db_delete_backupDelete a backup file and its associated manifest. Returns freed disk space. USE WITH CAUTION - deletion is permanent.
db_validate_backupValidate backup file integrity by checking checksums, file format, SQL syntax, and dependencies. Returns detailed validation report.
db_batch_insertInsert multiple records (1-1000) into a table in a single atomic transaction. All records are inserted or none are (all-or-nothing). Returns all inserted IDs.
db_batch_updateUpdate multiple sets of records in a single atomic transaction. Each update can have different WHERE conditions and data. All updates succeed or all fail (all-or-nothing).
db_batch_deleteDelete multiple sets of records in a single atomic transaction. Each delete can have different WHERE conditions. All deletes succeed or all fail (all-or-nothing). Supports soft delete.
db_query_recordsQuery database records with filtering, pagination, and sorting. Supports complex WHERE conditions and multiple sort orders.
db_insert_recordInsert a new record into a database table with field validation. Supports all standard PostgreSQL data types.
db_update_recordsUpdate existing records in a database table. Supports partial updates and WHERE conditions to target specific records.
db_delete_recordsDelete records from a database table. Supports soft-delete (setting deleted_at) or hard delete.
db_get_schemaGet detailed schema information for a table including columns, data types, constraints, and indexes. Results are cached for 5 minutes for performance.
db_list_tablesList all accessible tables in the database with metadata such as row count estimates and table type. System tables are filtered by default.
db_get_relationshipsMap foreign key relationships for a table, showing which tables it references (parent tables) and which tables reference it (child tables). Supports multi-hop relationship discovery.
db_list_table_columnsGet a lightweight list of column names and types for a table. Useful for autocomplete, suggestions, or quick reference. Faster than db_get_schema.
get_boardGets a board plus its columns (ordered lanes) with per-column card counts — the board-render call.
list_cardsLists cards with filters: board, assignee, agent, status, label, priority, agent_claimable_only, include_archived, include_workflow_phase, due_filter, q. The workhorse read tool.
create_cardCreates a card — full or quick-add (title-only is valid, the fast path). Board resolves to 'dev-backlog' if neither board_key nor board_id given. review_policy is defaulted by risk class unless explicitly provided.
claim_cardATOMIC compare-and-swap claim. Two agents can NEVER both win the same card. NEVER pass an agent id that resolves to an active human identity (see list_identities) — human cards are permanently reserved.
update_cardPartial patch of a card — only provided keys change. assignee must be a registered active identity (unknown ids rejected); one resolving to an active human identity auto-clears agent_claimable (DB trigger). assignee:'__clear__' unassigns.
move_cardChanges a card's status/lane. Writes activity {action:'moved', from_status, to_status}. A review-required card moving to 'review' is auto-reassigned to 'rebecca'.
comment_cardAppends to a card comment thread. Agents report progress/results here before moving a card to review.
list_boardsLists all boards with their total card counts.
get_cardGets a single card plus its comments, links, activity log, and live workflow_phase if linked — the detail-drawer call.
add_card_linkAttaches a typed link (spec/github_issue/workflow_run/file/url/card) to a card, beyond the inline spec_ref/issue_ref fields.
archive_cardArchives a card (= move_card to 'archived').
list_identitiesLists registered kanban identities (human/persona/agent) — the set of ids create_card/update_card will accept as assignee. Defaults to active only. Always excludes the 'test:' id namespace (reserved for throwaway ids minted by tests).
upsert_identityRegisters a new identity or updates an existing one's display_name/kind/active. The ONLY sanctioned way to add an assignee value create_card/update_card will accept — there is no silent auto-create on write.
delete_identityHard-removes an identity row (e.g. a mis-registered or throwaway id). upsert_identity(active:false) is the softer 'hide from the dropdown' path (list_identities excludes inactive by default) — use delete_identity when the row should not exist at all. Not FK-enforced against kanban_cards.assignee: a …
get_available_optionsGet lookup table options
create_lookup_optionCreate lookup option - Admin
update_lookup_optionUpdate lookup option - Admin
delete_lookup_optionDelete lookup option - Admin
assign_book_genresAssign genres to book
assign_series_genresAssign genres to series
analyze_chapter_pacingAnalyze pacing metrics for a chapter including scene distribution, energy modulation, and variance
analyze_book_pacingAnalyze pacing across an entire book with aggregated metrics and recommendations
track_stakes_escalationTrack stakes escalation in a scene according to NPE Rule #9
get_pressure_trajectoryGet pressure levels over time for a book to visualize escalation
log_information_revealLog an information reveal according to NPE Rule #8 (only reveal when it alters a choice)
validate_information_economyValidate that all information reveals in a book follow NPE Rule #8
track_relationship_tensionTrack bidirectional tension between two characters in a scene
get_relationship_tension_graphGet tension trajectory between two characters across a book
calculate_npe_complianceCalculate overall NPE compliance score for a book or chapter
get_npe_violationsGet all NPE rule violations for a book with severity filtering
create_causality_chainCreate a new NPE causality chain to track cause-effect relationships in narrative
add_causal_linkAdd a cause→effect link to an NPE causality chain
validate_causality_chainValidate an NPE causality chain has no breaks and maintains character agency
158 further tools are not listed here. The complete surface is in the source.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse
Anthropic's MCP TypeScript SDK has a ReDoS vulnerability
Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default
BACKUP_COMPRESSIONBACKUP_DIRBACKUP_ENCRYPTBACKUP_ENCRYPTION_KEYBACKUP_NOTIFICATION_EMAILBACKUP_RETENTION_DAYSBACKUP_SCHEDULE_FULLBACKUP_SCHEDULE_INCREMENTALGITHUB_TOKENMCP_PORTMCP_SERVER_PORTMCP_STDIO_MODEPG_DUMP_PATHPSQL_PATHSERVER_NAMESERVER_PORTDATABASE_URLTool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
258/258 tools missing one or more hints — list_authors (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_author (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); create_author (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +255 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
License file
No license file
Add a LICENSE file (MIT, Apache-2.0, etc.).
Tool test coverage
Only 56/258 tools referenced in tests (22%)
Write tests that reference each tool by name so every tool has at least one test.
Secrets not logged
3 secret values sent to log
Redact or omit secret values from log output.
Production dependencies are patched
0 critical, 3 high severity in production deps — @modelcontextprotocol/sdk@1.17.5 (high), @modelcontextprotocol/sdk@1.17.5 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Domain consistency
npm scope @fictionlab doesn't match GitHub owner rlryals
Use the same org name across GitHub, npm, and your homepage so users can verify the publisher.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/rlryals/mcp-writing-servers)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check