{"name":"io.github.Algorismus-io/elementor-ultra-mcp","slug":"algorismus-io-elementor-ultra-mcp","title":null,"description":"Build Elementor sites with AI agents - native, editable pages via ~90 MCP tools. Free & MIT.","url":"https://mcp.market/server/algorismus-io-elementor-ultra-mcp","rating":null,"grade":"B","score":77,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":27,"stars":2,"forks":1,"downloads_week":311,"last_push_at":"2026-08-18T06:54:08.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Algorismus-io/elementor-ultra-mcp","website":null,"version":"1.0.1","remotes":[],"packages":[{"registryType":"npm","identifier":"@algorismus/elementor-ultra-mcp","version":"1.0.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"WordPress site URL","isRequired":true,"name":"WP_URL"},{"description":"WordPress username","isRequired":true,"name":"WP_USER"},{"description":"WordPress Application Password (WP Admin -> Users -> Profile -> Application Passwords)","isRequired":true,"isSecret":true,"name":"WP_APP_PASSWORD"}]}],"tools":[{"name":"elementor.batch.apply","description":"Execute a multi-document plan with up-front backups and best-effort compensation on partial failure.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.batch.plan","description":"Dry-plan a multi-document brief build (records required backups).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.breakpoints.get","description":"Active Elementor breakpoints with direction (min/max) and width.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.convert.fidelity_check","description":"Render the saved page and visual-compare against the source HTML (pixelmatch).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.convert.figma_to_page","description":"Convert a Figma frame, sideload its assets (attachment ids only — temp asset URLs never persist), validate, and (only on explicit commit) create/replace the page + prime CSS + verify against the Figma frame render. NEVER auto-commits.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.convert.figma_to_tree","description":"Fetch a Figma frame (fetch-to-file with manifest resume) and convert it into a native atomic element tree with proposed classes/variables, a coverage report, and the figma frame/tokens/flatten record (NO page persistence).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.convert.html_to_page","description":"Convert HTML, sideload media, create classes/variables, validate, and (only on explicit commit) create/replace the page + prime CSS. NEVER auto-commits.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.convert.html_to_tree","description":"Convert HTML+CSS into a native atomic element tree with proposed classes/variables and a coverage report (NO persistence).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.classes.delete","description":"Remove global classes by id (explicit deletion).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.design.classes.list","description":"Global classes with variants + order (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.classes.reorder","description":"Set the full ordering of global classes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.classes.upsert","description":"Add or modify global classes via a diff-PUT (PHP builds the changes/items/order body; budget + duplicate-label aware).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.classes.usage","description":"Where each global class is used.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.deploy","description":"Bulk-deploy global classes + variables in one transaction (budget pre-flighted, full cache flush after).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.design.element_defaults.get","description":"Per-widget kit default settings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.element_defaults.set","description":"Per-widget kit default settings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.fonts.install","description":"Install a NON-Google-catalog font face (contract 18 §7-AI S4): store woff2/woff/ttf/otf bytes under uploads, register its @font-face (Pro Custom Fonts CPT when available, else kit custom CSS), and return the resolved family string for atomic font-family props.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.fonts.upload_zip","description":"Extract a ZIP of font files (OTF/TTF/WOFF/WOFF2) and install every face into the WP Font Library. Reads font family names and weights automatically from each file's OTF/TTF name table — no manual metadata needed. Accepts file_path (local path to ZIP on the server filesystem) or zip_data (base64-encoded ZIP). Returns the list of installed faces and any skipped files.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.design.globalColors.delete","description":"Read/write V3 kit color repeaters (`system_colors`/`custom_colors`).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.design.globalColors.list","description":"Read/write V3 kit color repeaters (`system_colors`/`custom_colors`).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.globalColors.upsert","description":"Read/write V3 kit color repeaters (`system_colors`/`custom_colors`).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.globalFonts.delete","description":"Read/write V3 kit typography repeaters (`system_typography`/`custom_typography`).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.design.globalFonts.list","description":"Read/write V3 kit typography repeaters (`system_typography`/`custom_typography`).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.globalFonts.upsert","description":"Read/write V3 kit typography repeaters (`system_typography`/`custom_typography`).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.sync_v4_to_v3","description":"Flag a V4 variable `sync_to_v3` and regenerate the bridge stylesheet.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.variables.batch","description":"Atomic multi-edit of tokens (single watermark).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.variables.create","description":"Create a color/font/size token (all three are FREE in 4.1.x).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.design.variables.delete","description":"Soft-delete a token (watermark-guarded).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.design.variables.list","description":"Design tokens (color/font/size) + optimistic watermark.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.variables.restore","description":"Restore a soft-deleted token (watermark-guarded).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.design.variables.update","description":"Edit a token (watermark-guarded).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.dynamic.get_tag_schema","description":"Per-tag controls/args and categories for binding.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.dynamic.list_tags","description":"Available dynamic tags on the site, by category.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.element.bind_dynamic","description":"Bind a dynamic tag to a control (V3 `__dynamic__` or V4 atomic dynamic prop).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.element.bind_global","description":"Bind a V3 global color/typography to a control via `__globals__`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.element.delete","description":"Remove a node and its subtree.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.element.get","description":"Read a single node from a document tree.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.element.move","description":"Reorder or reparent a node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.element.set_classes","description":"Set the `classes` prop (global + local class ids) on a node.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.element.set_local_style","description":"Upsert a local style variant on a node (mirrors the style id into the element's classes prop).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.kit.export","description":"Full-site kit export zip.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.kit.import","description":"Upload + import a kit zip.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.kit.revert","description":"Revert a kit import session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.media.list","description":"Search/list attachments.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.media.sideload_url","description":"Import an external image into the WP media library (deduped by source hash).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.media.upload","description":"Upload raw bytes/base64 to the media library.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.nav.bind_widget","description":"Bind a Pro nav-menu/mega-menu widget to a menu term.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.nav.menus.create","description":"Create and populate a navigation menu.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.nav.menus.list","description":"List WP navigation menus.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.ops.log","description":"Audit trail of writes (op_id, before/after hashes, result).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.build","description":"Batch create-and-populate a document from a declarative element tree; validates via PHP dry_run, saves, and primes atomic CSS.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.create","description":"Create a blank Elementor document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.page.delete","description":"Trash a document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.page.dry_run","description":"Authoritative validate-and-diff of an element tree with NO persistence (PHP instantiates every node + get_data_for_save).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.page.duplicate","description":"Deep-copy a document and its meta (ids regenerated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.export_template","description":"Emit a document in library-format JSON (content + page settings + bundled global classes/variables).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.get_settings","description":"Read `_elementor_page_settings` for a document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.get_structure","description":"Read the element tree of a document with depth / subtree / projection controls; returns the optimistic-lock base_hash.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.list_backups","description":"List the pre-write backup snapshots for a document (paginated); each carries the meta_key + base_hash to roll back to.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.replace_tree","description":"Overwrite the entire element tree of a document in one transaction (optimistic-lock guarded).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.rollback","description":"Restore a document to a prior backup snapshot (by meta_key or \"latest\"), then re-prime atomic CSS.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.page.update_settings","description":"Patch document / page settings (GET-merge-PUT so partial updates never wipe unrelated keys).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.page.verify_render","description":"Probe that a document actually RENDERS (permalink loopback with in-process front-controller dispatch fallback): asserts HTTP 200 + no fatal marker; a fatal returns render_verified:false (RENDER_FAILED, op-logged).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pages.list","description":"List documents built with Elementor (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.dynamic.bind","description":"Byte-identical mirror of core Manager::tag_to_text for dynamic binding.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.dynamic.list_tags","description":"Per-tag name/title/group/categories/settings controls/availability.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.form.build","description":"Build an Elementor form widget (V3 classic `form`, or atomic `e-form` when `e_pro_atomic_form` active) with fields + actions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.form.list_actions","description":"Registered (license-gated) form actions and their settings controls.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.loop.bind_grid","description":"Configure a loop-grid/carousel widget bound to a loop-item template + query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.loop.create_item","description":"Create a loop-item template document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.pro.popup.create","description":"Create a popup document with layout settings, display settings (triggers/timing), and conditions.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.pro.popup.set_timing","description":"Merge into the existing `_elementor_popup_display_settings`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.popup.set_triggers","description":"Merge into the existing `_elementor_popup_display_settings`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.theme.create","description":"Create a header/footer/single/archive/404/search/section theme-builder document with conditions.","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.pro.theme.get_conditions_config","description":"Valid condition keys / sub-conditions per location (autocomplete tree).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.theme.set_conditions","description":"Replace all display conditions on a theme doc (via Conditions_Manager::save_conditions + cache regenerate).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.pro.woo.add_widget","description":"Add a context-validated WooCommerce widget (single/archive/context-free).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.schema.styles","description":"The flat atomic Style-Schema (css-prop → prop-type), unit presets, and enums.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.schema.widget","description":"Per-widget props schema for an atomic widget (post-filter `get_props_schema()`, includes `_cssid` + dynamic-capable flags) or classic widget controls.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.site.capabilities","description":"Report experiments, Pro presence, registered element types, breakpoints, capabilities, and migration state for the target site.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.templates.get","description":"Template content + settings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.templates.import","description":"Import a .json/.zip template (image sideload + id remap).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.templates.insert_into_page","description":"Paste a block into a document (ids minted fresh).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.templates.list","description":"Template library list (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.templates.save","description":"Persist a reusable block/page template (ids regenerated by Source_Local::save_item).","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.tools.get_schema","description":"Return the input/output schema + annotations for a named tool.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.tools.invoke","description":"Invoke any catalog tool (incl. disabled) by name with a payload; mirrors the named tool's safety class + confirm gating.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.tools.list_endpoints","description":"Enumerate every tool (incl. disabled) with namespace + safety class.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.tools.search","description":"Progressive discovery of the full Elementor tool surface; returns matching tool names + schemas so advanced tools can be enabled on demand.","write_action":false,"price_micros":0,"input_schema":null},{"name":"elementor.widget.insert","description":"Insert a node under a parent at an index (transactional, optimistic-lock + idempotency guarded).","write_action":true,"price_micros":0,"input_schema":null},{"name":"elementor.widget.update_settings","description":"Patch a single node's settings (transactional).","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":77,"grade":"B","scanned_at":"2026-11-04T06:34:33.102Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-04T06:34:33.062Z","components":{"code":{"score":25,"max":25,"notes":["203 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":12,"max":15,"notes":["last push 78 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@algorismus/elementor-ultra-mcp","version":"1.0.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":7,"publishedAt":"2026-08-11T20:17:41.654Z","repositoryUrl":"git+https://github.com/Algorismus-io/elementor-ultra-mcp.git","weeklyDownloads":311}],"repo":{"found":true,"owner":"Algorismus-io","repo":"elementor-ultra-mcp","archived":false,"pushedAt":"2026-08-18T06:54:08Z","stars":2,"forks":1,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/309098425?v=4","ownerCreatedAt":"2026-07-25T13:05:46Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":2,"forks":1,"downloadsWeek":311,"license":"MIT","lastPushAt":"2026-08-18T06:54:08.000Z","score":27}}}},"grade_history":[],"reviews":[]}