{"name":"io.github.Wordpressistic/bridgistic","slug":"wordpressistic-bridgistic","title":null,"description":"Connect Claude to WordPress safely: signed requests, scoped keys, approvals, logs, snapshots.","url":"https://mcp.market/server/wordpressistic-bridgistic","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":27,"stars":0,"forks":0,"downloads_week":66,"last_push_at":"2026-10-13T13:42:48.000Z","license":"GPL-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Wordpressistic/bridgistic-claude-marketplace","website":"https://wordpressistic.com","version":"1.5.2","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"bridgistic-mcp-server","version":"1.5.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"WordPress site URL exactly as shown in WP Admin → Settings → General, e.g. https://example.com","isRequired":true,"format":"string","name":"BRIDGISTIC_SITE_URL"},{"description":"Public key id (wpk_…) from WP Admin → Bridgistic → Claude Setup","isRequired":true,"format":"string","name":"BRIDGISTIC_KEY_ID"},{"description":"Key secret (wps_…) shown once at key creation","isRequired":true,"format":"string","isSecret":true,"name":"BRIDGISTIC_KEY_SECRET"},{"description":"Optional absolute path to a multi-site connections JSON registry (alias → siteUrl/keyId/secret)","format":"string","name":"BRIDGISTIC_CONNECTIONS"},{"description":"error | warn | info | debug (stderr only, never logs secrets)","format":"string","default":"info","name":"BRIDGISTIC_LOG_LEVEL"}]}],"tools":[{"name":"bridgistic_approval_status","description":"Check whether a queued operation has been approved. Returns status: pending | approved | rejected | executed. When approved, retry the ORIGINAL tool call with the same args plus approval_id to execute it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_create_post","description":"Create a post/page/CPT. Scope: `posts:write`. Args: title, content, excerpt, status (draft|publish|...), slug, type, author, parent, meta (object). Supports dry_run and approval flow.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_create_user","description":"Create a user. Scope: `users:write`. Args: login, email (both required), role (default subscriber), display_name, password (auto-generated if omitted). Supports dry_run + approval.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_db_query","description":"Execute SQL against the site database. The bridge classifies the statement: SELECT/SHOW/EXPLAIN/DESCRIBE/WITH need `db:read`; anything else needs `db:write`. Writes are routed through the Guard: dry_run previews impact in a rolled-back transaction, destructive writes auto-snapshot the affected table(s), and approval applies if the key requires it. Args: - sql (string): a single SQL statement using","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_delete_media","description":"Permanently delete an attachment by id. Scope: `media:write`. Auto-snapshots first.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_delete_post","description":"Trash (default) or permanently delete a post. Scope: `posts:write`. Auto-snapshots first. Set permanent=true to skip trash. Supports dry_run + approval.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_execute_php","description":"Run PHP inside the full WordPress runtime ($wpdb, all functions, loaded plugins). Highest-privilege tool; requires the key's `php:execute` scope. Use `return` to surface a value; echoed output is captured separately. Args: - code (string): PHP to run. A leading \"<?php\" is optional. - site (string, optional): target alias. Returns: { output, return, errors[], exception, elapsed_ms }. Use when: a ta","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_fs_delete","description":"Delete a file inside ABSPATH. Scope: `fs:write`. High-risk: always routes through approval and snapshots the file first. Supports dry_run.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_fs_list","description":"List files/dirs under a path (confined to ABSPATH). Scope: `fs:read`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_fs_read","description":"Read a file's contents (≤5MB, inside ABSPATH). Scope: `fs:read`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_fs_write","description":"Write a file inside ABSPATH. Scope: `fs:write`. PHP files may ONLY be written inside the uploads/bridgistic-sandbox dir. Overwrites auto-snapshot the old file. Supports dry_run + approval.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_get_option","description":"Read a wp_options value BY NAME. Scope: `options:read`. The name must be in the site's allowlist (WP Admin → Bridgistic → Settings) — secrets are unreadable by design.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_get_post","description":"Fetch one post/page/CPT by id with full content + meta. Scope: `posts:read`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_get_site_info","description":"Discover a site's stack before acting: WP/PHP versions, active theme, installed plugins (active flag), and detected frameworks (WooCommerce, Elementor, ACF). Read-only; requires the key's `site:read` scope. Always call this first on an unfamiliar site.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_list_media","description":"List attachments (id/title/mime/url). Scope: `posts:read`. Args: per_page, page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_list_plugins","description":"List installed plugins with active flag + version. Scope: `plugins:manage`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_list_posts","description":"List content with pagination. Scope: `posts:read`. Args: post_type (default 'post'), status (default 'any'), search, per_page (≤100), page. Returns id/title/type/status/slug/link + total + has_more.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_list_sites","description":"List the WordPress sites this bridge can operate on, by alias. Use the returned alias as the `site` parameter in other tools. Returns no secrets.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_list_users","description":"List users (id/login/email/display_name/roles). Scope: `users:read`. Never returns passwords. Args: search, per_page, page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_memory_delete","description":"Remove a memory note by key (+optional category). Scope: `memory:write`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_memory_get","description":"Read one memory note by key (+optional category). Scope: `memory:read`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_memory_list","description":"List stored memory notes, optionally filtered by category. Scope: `memory:read`. Call at the start of a session to recall what's known about a site.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_memory_set","description":"Persist a fact about this site for future sessions (conventions, IDs, client preferences, quirks). Scope: `memory:write`. Args: key (required), value (any JSON), category (default 'general'). Overwrites the same category+key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_playbook_delete","description":"Delete a playbook by slug. Scope: `playbook:manage`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_playbook_get","description":"Fetch one playbook incl. its steps. Scope: `playbook:manage`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_playbook_list","description":"List saved playbooks (slug/name/description). Scope: `playbook:manage`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_playbook_run","description":"Execute a saved playbook. Scope: `playbook:manage`; each step also enforces its own scope + the Guard. Args: - slug, vars (object of run inputs) - dry_run (preview every step), force (skip snapshot aborts) - approvals: { \"<step ref>\": \"<approval_id>\" } to resume a step that paused for approval. If a step needs approval the run pauses and returns { status: \"paused_for_approval\", paused_at, approval","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_playbook_save","description":"Store an ordered, parameterised sequence of bridge operations for replay. Scope: `playbook:manage`. Each step = { method, route, params, save_as }. Use templates in params: - {{vars.NAME}} → a run-time input - {{steps.REF.data.result.id}} → a value from an earlier step's result envelope Example steps (create a landing page then set it as the front page): [ { \"method\":\"POST\",\"route\":\"posts\",\"params","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_schedule_create","description":"Run a saved playbook unattended on a recurrence (WP-Cron). Scope: `schedule:manage`. The schedule runs under THIS key's current scopes, so the key must hold the scopes every step needs. Args: - playbook (slug), recurrence (once|bridgistic_5min|bridgistic_15min|bridgistic_30min|hourly|twicedaily|daily|weekly) - vars (object passed to the run), start_at (unix seconds, optional first-run time) - dry_","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_schedule_delete","description":"Remove a schedule and unregister its cron event. Scope: `schedule:manage`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_schedule_list","description":"List scheduled playbooks with recurrence, next/last run, and last status. Scope: `schedule:manage`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_schedule_run_now","description":"Trigger a scheduled playbook immediately (does not change its recurrence). Scope: `schedule:manage`. Useful to test a schedule end-to-end.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_schedule_toggle","description":"Pause or resume a schedule without deleting it. Scope: `schedule:manage`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_snapshot_create","description":"Manually capture reversible state before a risky change. Scope: `snapshot:manage`. Types + target: - post { id } - user { id } - option { name } - tables { tables: [\"wp_options\", ...] } (≤50k rows each) - file { path } Returns a snapshot_id for bridgistic_snapshot_restore.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_snapshot_delete","description":"Delete a stored snapshot by id (frees space; cannot be restored after). Scope: `snapshot:manage`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_snapshot_list","description":"List recent snapshots (auto + manual) with id/type/label/size/created/restored. Scope: `snapshot:manage`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_snapshot_restore","description":"Roll back to a snapshot by id (undo a write/delete). Scope: `snapshot:manage`. Use the snapshot_id returned by a write tool or by bridgistic_snapshot_create / bridgistic_snapshot_list.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_toggle_plugin","description":"Activate or deactivate a plugin. Scope: `plugins:manage`. High-risk: ALWAYS routes through approval and snapshots active_plugins first. Args: plugin (file, e.g. 'woocommerce/woocommerce.php'), state ('activate'|'deactivate').","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_update_option","description":"Write a wp_options value. Scope: `options:write`. Name must be allowlisted. Auto-snapshots the old value. Supports dry_run + approval.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_update_post","description":"Update an existing post by id. Scope: `posts:write`. Auto-snapshots the post first (rollback via snapshot_id). Same fields as create. Supports dry_run + approval.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_update_user","description":"Update a user by id (email, display_name, role). Scope: `users:write`. Auto-snapshots the user first. Supports dry_run + approval.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_upload_media","description":"Upload to the media library from a URL or base64. Scope: `media:write`. Provide either url, or filename + content_base64. Supports dry_run + approval.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_usage","description":"Return the calling key's tier, rate limit (req/min), monthly quota, and current usage (this minute / today / this month + top actions). Call before large batch operations to avoid hitting the quota mid-run.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_create_product","description":"Create a simple product. Scope: `woo:products:write`. `name` is required; prices must be non-negative numbers. Supports dry_run to preview the fields that would be set, and the approval queue when the key requires it. Publishes only if you pass status='publish' — the store's own default applies otherwise.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_get_customer","description":"Fetch a single customer by user id with order count, lifetime spend, billing/shipping country and city, and last order date. Scope: `woo:customers:read`. Street addresses, phone numbers, password hashes, and payment methods are not exposed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_get_order","description":"Fetch a single order by id with its line items, shipping and tax totals, customer note, and payment method name. Scope: `woo:orders:read`. Payment tokens, transaction ids, and card data are never included.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_get_product","description":"Fetch a single product by id, including description, categories, tags, attributes, and every variation's own price and stock. Scope: `woo:products:read`. For a variable product, the variation list is usually the real answer to \"is this in stock?\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_inventory_status","description":"Out-of-stock and low-stock products in one call, with counts. Scope: `woo:analytics:read`. `low_stock_threshold` defaults to the store's own low-stock setting. Only stock-managed products can be low, so unmanaged products are counted separately rather than reported as zero.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_list_customers","description":"List users with the customer role, newest-first, with their order count and lifetime spend. Scope: `woo:customers:read`. Args: search (name/email/login), per_page (≤100), page. Password hashes, session tokens, and payment methods are never returned.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_list_orders","description":"List orders newest-first. Scope: `woo:orders:read`. Args: status (comma-separated, e.g. 'processing,completed'), customer_id, after (Y-m-d or ISO 8601), per_page (≤100), page. Returns id/number/status/total/currency/created/customer plus billing name, email, and country. Full addresses and payment details are never returned.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_list_products","description":"List store products with pagination. Scope: `woo:products:read`. Args: search, status (draft|publish|...), stock_status (instock|outofstock|onbackorder), category (slug), per_page (≤100), page. Returns id/name/sku/type/status/price/stock per product plus total and has_more. Use this instead of SQL or PHP for any product question — it works the same whether or not the store uses High-Performance Or","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_sales_summary","description":"Revenue, order count, average order value, orders by status, and top products for the last N days (default 30, max 365). Scope: `woo:analytics:read`. Counts only processing, completed, and on-hold orders — pending, cancelled, and failed orders are excluded so the revenue figure reconciles with what the store actually took. The counted statuses are echoed back in the response.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_update_order_status","description":"Move an order to a different status. Scope: `woo:orders:write`. The status is validated against the statuses this store actually defines, so plugin-added ones work and typos are refused with the valid list. SIDE EFFECTS: a status change fires WooCommerce hooks — customer emails, stock adjustments, and payment-gateway actions. Setting the status back afterwards does not un-send an email or un-resto","write_action":true,"price_micros":0,"input_schema":null},{"name":"bridgistic_woo_update_product","description":"Update an existing product. Scope: `woo:products:write`. Only the fields you pass are changed. Overwrites prior values, so the bridge snapshots the product first and dry_run returns an explicit before/after for exactly the fields supplied.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-10-14T05:28:05.672Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-14T05:28:05.597Z","components":{"code":{"score":25,"max":25,"notes":["32 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"bridgistic-mcp-server","version":"1.5.2","found":true,"license":"GPL-2.0-or-later","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-10-05T12:59:32.530Z","repositoryUrl":"git+https://github.com/Wordpressistic/bridgistic-claude-marketplace.git","weeklyDownloads":66}],"repo":{"found":true,"owner":"Wordpressistic","repo":"bridgistic-claude-marketplace","archived":false,"pushedAt":"2026-10-13T13:42:48Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/218585275?v=4","ownerCreatedAt":"2025-06-30T09:31:47Z","license":"GPL-2.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/218585275?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":66,"license":"GPL-2.0","lastPushAt":"2026-10-13T13:42:48.000Z","score":27}}}},"grade_history":[],"reviews":[]}