Skip to main content
Glama
API_REFERENCE.mdβ€’20 kB
# πŸ“š Ultimate Elementor MCP - API Reference Complete technical reference for all tools and services. --- ## πŸ“‹ **Table of Contents** - [Tool Categories](#tool-categories) - [WordPress Tools API](#wordpress-tools-api) - [Elementor Tools API](#elementor-tools-api) - [File Operations API](#file-operations-api) - [Configuration Tools API](#configuration-tools-api) - [Debugging Tools API](#debugging-tools-api) - [Type Definitions](#type-definitions) - [Error Codes](#error-codes) --- ## πŸ—‚οΈ **Tool Categories** | Category | Tools | Description | |----------|-------|-------------| | **WordPress** | 16 | Posts, pages, media, users, taxonomies | | **Elementor** | 25 | Data management, element creation, manipulation | | **File Operations** | 8 | Export, import, backup, restore | | **Configuration** | 6 | Mode management, validation, testing | | **Debugging** | 5 | Error stats, logging, health checks | | **Total** | **60** | Complete WordPress & Elementor management | --- ## πŸ”§ **WordPress Tools API** ### **Posts** #### `get_posts` **Description**: Retrieve WordPress posts with optional filtering **Parameters**: ```typescript { per_page?: number; // Default: 10 status?: string; // Default: 'publish' search?: string; // Search term author?: number; // Author ID categories?: number[]; // Category IDs tags?: number[]; // Tag IDs } ``` **Returns**: ```typescript Array<{ id: number; title: { rendered: string }; content: { rendered: string }; status: string; author: number; // ... other WordPress post fields }> ``` **Example**: ``` Get the 5 most recent published posts ``` --- #### `get_post` **Description**: Get single post by ID **Parameters**: ```typescript { id: number; // Post ID (required) } ``` **Returns**: ```typescript { id: number; title: { rendered: string }; content: { rendered: string }; // ... full post data } ``` **Example**: ``` Get post ID 123 ``` --- #### `create_post` **Description**: Create new WordPress post **Parameters**: ```typescript { title: string; // Required content?: string; // Post content status?: string; // Default: 'draft' excerpt?: string; // Post excerpt author?: number; // Author ID categories?: number[]; // Category IDs tags?: number[]; // Tag IDs featured_media?: number; // Featured image ID } ``` **Returns**: ```typescript { id: number; title: { rendered: string }; link: string; // ... created post data } ``` **Example**: ``` Create a blog post titled "10 WordPress Tips" with introductory content, set status to publish ``` --- #### `update_post` **Description**: Update existing post **Parameters**: ```typescript { id: number; // Post ID (required) title?: string; // New title content?: string; // New content status?: string; // New status excerpt?: string; // New excerpt // ... any other WordPress post fields } ``` **Returns**: ```typescript { id: number; title: { rendered: string }; // ... updated post data } ``` **Example**: ``` Update post ID 456 to change the title to "15 WordPress Tips" ``` --- ### **Pages** #### `get_pages` **Description**: Retrieve WordPress pages with optional filtering **Parameters**: ```typescript { per_page?: number; // Default: 10 status?: string; // Default: 'publish' search?: string; // Search term parent?: number; // Parent page ID } ``` **Returns**: Array of page objects --- #### `create_page` **Description**: Create new WordPress page **Parameters**: ```typescript { title: string; // Required content?: string; // Page content status?: string; // Default: 'draft' parent?: number; // Parent page ID template?: string; // Page template } ``` **Returns**: Created page object with ID --- #### `update_page` **Description**: Update existing page **Parameters**: ```typescript { id: number; // Page ID (required) title?: string; // New title content?: string; // New content status?: string; // New status parent?: number; // New parent ID template?: string; // New template } ``` --- #### `delete_page` **Description**: Delete a page **Parameters**: ```typescript { id: number; // Page ID (required) force?: boolean; // Force delete (bypass trash) } ``` --- #### `list_all_content` **Description**: List all pages and posts with Elementor status **Returns**: ```typescript Array<{ id: number; title: string; type: 'post' | 'page'; status: string; elementor_status: 'βœ…' | '⚠️' | '❌'; elementor_edit_mode: boolean; link: string; }> ``` **Example**: ``` Show me all content with their Elementor status ``` --- ### **Media** #### `get_media` **Description**: List media files **Parameters**: ```typescript { per_page?: number; // Default: 10 media_type?: string; // 'image', 'video', 'audio', etc. search?: string; // Search term } ``` --- #### `upload_media` **Description**: Upload media file **Parameters**: ```typescript { file: string; // File path (required) title?: string; // Media title alt_text?: string; // Alt text for images caption?: string; // Caption description?: string; // Description } ``` **Returns**: Uploaded media object with ID and URL --- ### **Users** #### `get_users` **Description**: List WordPress users **Parameters**: ```typescript { per_page?: number; // Default: 10 roles?: string; // Filter by role search?: string; // Search term } ``` --- #### `get_user` **Description**: Get user by ID **Parameters**: ```typescript { id: number; // User ID (required) } ``` --- ### **Taxonomies** #### `get_categories` **Description**: List post categories **Parameters**: ```typescript { per_page?: number; // Default: 10 hide_empty?: boolean; // Hide empty categories parent?: number; // Parent category ID } ``` --- #### `get_tags` **Description**: List post tags **Parameters**: ```typescript { per_page?: number; // Default: 10 hide_empty?: boolean; // Hide empty tags } ``` --- ## 🎨 **Elementor Tools API** ### **Data Operations** #### `get_elementor_data` **Description**: Get complete Elementor data for a page **Parameters**: ```typescript { post_id: number; // Page/Post ID (required) } ``` **Returns**: ```typescript Array<ElementorElement> // Array of Elementor sections/containers ``` --- #### `update_elementor_data` **Description**: Update Elementor data for a page **Parameters**: ```typescript { post_id: number; // Page/Post ID (required) elementor_data: string | Array<ElementorElement>; // JSON string or array } ``` **Returns**: Updated page object --- #### `get_elementor_data_chunked` **Description**: Get Elementor data in chunks for large pages **Parameters**: ```typescript { post_id: number; // Page/Post ID (required) chunk_size?: number; // Elements per chunk (default: 10) } ``` **Returns**: ```typescript { chunks: Array<Array<ElementorElement>>; totalElements: number; totalChunks: number; } ``` --- #### `backup_elementor_data` **Description**: Create quick backup of Elementor data **Parameters**: ```typescript { post_id: number; // Page/Post ID (required) } ``` **Returns**: ```typescript { postId: number; elementorData: Array<ElementorElement>; backupTimestamp: string; version: string; } ``` --- #### `clear_elementor_cache` **Description**: Clear Elementor cache **Parameters**: ```typescript { post_id?: number; // Optional: Clear cache for specific page } ``` --- ### **Element Creation** #### `create_section` **Description**: Create new Elementor section **Parameters**: ```typescript { settings?: { layout?: 'boxed' | 'full_width'; background_background?: 'classic' | 'gradient'; background_color?: string; background_color_b?: string; padding?: { unit: string; top: string; right: string; bottom: string; left: string }; // ... any Elementor section settings } } ``` **Returns**: ElementorSection object --- #### `create_column` **Description**: Create new Elementor column **Parameters**: ```typescript { settings?: { _column_size?: number; // Width percentage content_position?: 'top' | 'center' | 'bottom'; text_align?: 'left' | 'center' | 'right'; background_color?: string; // ... any Elementor column settings } } ``` **Returns**: ElementorColumn object --- #### `create_container` **Description**: Create new Elementor container (Flexbox) **Parameters**: ```typescript { settings?: { flex_direction?: 'row' | 'column'; flex_wrap?: 'wrap' | 'nowrap'; justify_content?: 'flex-start' | 'center' | 'flex-end' | 'space-between'; align_items?: 'flex-start' | 'center' | 'flex-end' | 'stretch'; gap?: { unit: string; size: number }; // ... any Elementor container settings } } ``` **Returns**: ElementorContainer object --- #### `create_heading` **Description**: Create heading widget **Parameters**: ```typescript { settings?: { title?: string; // Heading text header_size?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'; align?: 'left' | 'center' | 'right'; title_color?: string; typography_typography?: 'custom'; typography_font_size?: { unit: string; size: number }; // ... any Elementor heading settings } } ``` **Returns**: ElementorWidget (heading) --- #### `create_text` **Description**: Create text editor widget **Parameters**: ```typescript { settings?: { editor?: string; // HTML content text_color?: string; typography_font_size?: { unit: string; size: number }; // ... any Elementor text settings } } ``` --- #### `create_button` **Description**: Create button widget **Parameters**: ```typescript { settings?: { text?: string; // Button text link?: { url: string; is_external: boolean; nofollow: boolean; }; align?: 'left' | 'center' | 'right'; size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'; background_color?: string; text_color?: string; border_radius?: { unit: string; size: number }; // ... any Elementor button settings } } ``` --- #### `create_image` **Description**: Create image widget **Parameters**: ```typescript { settings?: { image?: { id: number; // Media ID url: string; }; image_size?: 'thumbnail' | 'medium' | 'large' | 'full'; align?: 'left' | 'center' | 'right'; caption?: string; link_to?: 'none' | 'file' | 'custom'; // ... any Elementor image settings } } ``` --- ### **Element Manipulation** #### `find_element_by_id` **Description**: Find element in page structure by ID **Parameters**: ```typescript { elementor_data: Array<ElementorElement>; // Page data element_id: string; // Element ID to find } ``` **Returns**: ElementorElement or null --- #### `update_element_settings` **Description**: Update settings for specific element **Parameters**: ```typescript { elementor_data: Array<ElementorElement>; // Page data element_id: string; // Element to update new_settings: object; // New settings } ``` **Returns**: Updated elementor_data array --- #### `delete_element` **Description**: Delete element from page **Parameters**: ```typescript { elementor_data: Array<ElementorElement>; // Page data element_id: string; // Element to delete } ``` **Returns**: Updated elementor_data array --- #### `clone_element` **Description**: Clone/duplicate element **Parameters**: ```typescript { element: ElementorElement; // Element to clone } ``` **Returns**: Cloned element with new ID --- #### `extract_page_structure` **Description**: Get page structure summary **Parameters**: ```typescript { elementor_data: Array<ElementorElement>; // Page data } ``` **Returns**: ```typescript { totalSections: number; totalColumns: number; totalContainers: number; totalWidgets: number; widgetTypes: { [type: string]: number }; sections: Array<{ id: string; type: string; columns: number; widgets: number; }>; } ``` --- ## πŸ“ **File Operations API** ### `export_elementor_data` **Description**: Export Elementor data to JSON file **Parameters**: ```typescript { post_id: number; // Page/Post ID elementor_data?: Array<ElementorElement>; // Data to export (optional, fetched if not provided) file_path?: string; // Custom file path (optional) include_metadata?: boolean; // Include page metadata (default: true) compress?: boolean; // Compress output (default: false) } ``` **Returns**: ```typescript { success: boolean; filePath: string; size: number; checksum: string; compressed: boolean; } ``` --- ### `import_elementor_data` **Description**: Import Elementor data from file **Parameters**: ```typescript { file_path: string; // File to import (required) post_id?: number; // Page to apply to (optional) validate?: boolean; // Validate data (default: true) } ``` **Returns**: ```typescript { success: boolean; data: Array<ElementorElement>; validated: boolean; postId?: number; } ``` --- ### `backup_page_data` **Description**: Create versioned backup of page **Parameters**: ```typescript { post_id: number; // Page/Post ID elementor_data?: Array<ElementorElement>; // Data to backup label?: string; // Backup label } ``` **Returns**: ```typescript { success: boolean; backupId: string; filePath: string; timestamp: string; label: string; } ``` --- ### `restore_page_data` **Description**: Restore page from backup **Parameters**: ```typescript { backup_id: string; // Backup ID (required) post_id?: number; // Page to restore to (optional) } ``` **Returns**: ```typescript { success: boolean; data: Array<ElementorElement>; backupId: string; postId?: number; } ``` --- ## βš™οΈ **Configuration Tools API** ### `get_configuration` **Description**: Get current MCP configuration **Parameters**: None **Returns**: ```typescript { mode: 'essential' | 'standard' | 'advanced' | 'full'; features: { basicWordPressOperations: boolean; basicElementorOperations: boolean; sectionContainerCreation: boolean; widgetAddition: boolean; elementManagement: boolean; pageStructure: boolean; performanceOptimization: boolean; advancedElementOperations: boolean; templateManagement: boolean; globalSettings: boolean; customFieldsIntegration: boolean; revisionHistory: boolean; }; totalEnabledFeatures: number; } ``` --- ### `test_wordpress_connection` **Description**: Test WordPress API connection **Parameters**: None **Returns**: ```typescript { success: boolean; baseUrl: string; apiAvailable: boolean; authenticated: boolean; wordpressVersion?: string; elementorInstalled?: boolean; error?: string; } ``` --- ## πŸ› **Debugging Tools API** ### `get_error_statistics` **Description**: Get error statistics and tracking **Returns**: ```typescript { totalErrors: number; byCategory: { [category: string]: number }; byCode: { [code: string]: number }; recoverableErrors: number; nonRecoverableErrors: number; errorRate: number; recentErrors: Array<{ message: string; category: string; code: string; timestamp: string; }>; } ``` --- ### `health_check` **Description**: Perform comprehensive health check **Returns**: ```typescript { status: 'healthy' | 'degraded' | 'unhealthy'; checks: { wordpressConnection: boolean; elementorAvailable: boolean; fileOperations: boolean; configuration: boolean; }; details: object; timestamp: string; } ``` --- ## πŸ“Š **Type Definitions** ### **ElementorElement** ```typescript type ElementorElement = ElementorSection | ElementorColumn | ElementorContainer | ElementorWidget; interface ElementorSection { id: string; elType: 'section'; settings: ElementorSettings; elements: Array<ElementorColumn>; } interface ElementorColumn { id: string; elType: 'column'; settings: ElementorSettings; elements: Array<ElementorWidget>; } interface ElementorContainer { id: string; elType: 'container'; settings: ElementorSettings; elements: Array<ElementorElement>; } interface ElementorWidget { id: string; elType: 'widget'; widgetType: string; settings: ElementorSettings; } interface ElementorSettings { [key: string]: any; // Flexible settings object } ``` --- ### **WordPress Types** ```typescript interface WordPressPost { id: number; title: { rendered: string }; content: { rendered: string }; excerpt: { rendered: string }; status: string; author: number; date: string; modified: string; slug: string; link: string; categories: number[]; tags: number[]; meta: { [key: string]: any }; } interface WordPressPage extends WordPressPost { parent: number; template: string; } interface WordPressMedia { id: number; title: { rendered: string }; source_url: string; media_type: string; mime_type: string; alt_text: string; } ``` --- ## ⚠️ **Error Codes** ### **Error Categories** ```typescript enum ErrorCategory { AUTHENTICATION = 'AUTHENTICATION', VALIDATION = 'VALIDATION', NETWORK = 'NETWORK', WORDPRESS_API = 'WORDPRESS_API', ELEMENTOR_DATA = 'ELEMENTOR_DATA', FILE_OPERATION = 'FILE_OPERATION', CONFIGURATION = 'CONFIGURATION', INTERNAL = 'INTERNAL' } ``` ### **Common Error Codes** | Code | Category | Description | Recoverable | |------|----------|-------------|-------------| | `AUTH_FAILED` | Authentication | Invalid credentials | Yes | | `INVALID_URL` | Validation | Invalid URL format | No | | `NETWORK_ERROR` | Network | Connection failed | Yes | | `NOT_FOUND` | WordPress API | Resource not found | No | | `INVALID_ELEMENTOR_DATA` | Elementor Data | Malformed data | No | | `FILE_NOT_FOUND` | File Operation | File doesn't exist | No | | `PERMISSION_DENIED` | File Operation | No file access | No | | `INVALID_CONFIG` | Configuration | Invalid configuration | No | --- ## πŸ”— **Response Formats** ### **Success Response** ```typescript { content: [ { type: 'text', text: string // JSON stringified result or success message } ] } ``` ### **Error Response** ```typescript { isError: true, content: [ { type: 'text', text: string // Error details in JSON format } ] } ``` **Error Object:** ```typescript { message: string; category: ErrorCategory; code: string; details?: any; statusCode?: number; timestamp: string; recoverable: boolean; suggestion: string; } ``` --- ## πŸš€ **Rate Limits** ### **Default Limits** - **WordPress API**: Depends on server configuration - **File Operations**: No built-in limit - **MCP Calls**: No built-in limit ### **Best Practices** - Keep `per_page` ≀ 100 for list operations - Use chunked operations for large datasets - Implement delays for batch operations - Monitor WordPress server load --- ## πŸ“– **Further Reading** - [WordPress REST API Reference](https://developer.wordpress.org/rest-api/reference/) - [Elementor Developer Docs](https://developers.elementor.com/) - [MCP Protocol Specification](https://modelcontextprotocol.io/) --- **πŸ”§ Complete API reference for the Ultimate Elementor MCP!** πŸš€

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbrown1837/Ultimate-Elementor-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server