Skip to main content

Elements MCP Server: Connect, Understand, Secure & Troubleshoot

A complete guide to the Elements MCP server: connecting your AI assistant, how it works, security & admin controls, supported tools, troubleshooting, and what you can do with it.

Connect your AI assistant to Elements

You can connect your AI assistant to Elements in a few minutes. Once connected, your assistant can use the skills described in 'What you can do with Elements in your AI assistant' to answer questions about your Salesforce Org.

Prerequisites

  • MCP access has been enabled by Elements for the Space you want to use.

  • You have an MCP-capable AI assistant. Any client that supports remote MCP servers with the MCP standard's secure sign-in (OAuth 2.1 with PKCE) should work; Elements has been tested with Claude (CLI and Cowork), Codex CLI, ChatGPT (Work), and Cursor. Steps for the most common clients are below.

  • You know your Elements sign-in credentials; you'll sign in with your existing Elements account, the same way you do in the browser.

Find your MCP endpoint

Elements runs in more than one location, so the address your assistant connects to depends on which one your Org uses. Match the URL shown in your browser when you're logged into Elements; never guess based on where you or your company are located.

App URL (what you see in your browser)

MCP endpoint

app.q9elements.com

app.us.elements.cloud

app.ja1.elements.cloud

app.me1.elements.cloud

In the steps below, replace <your-api-host> with the host from the right-hand column above, for example api.q9elements.com.

Connect your client

Each AI assistant connects to Elements in a slightly different way. Find your client below and click it to expand the setup steps.

Claude Code

The recommended route installs the Elements skills and the MCP server together as a plugin. Inside Claude Code, run:

/plugin marketplace add Q9Elements/elements-mcp-server
/plugin install elements@elements

During installation, the plugin asks for 'Elements API host'. Enter the host from the endpoint table above, for example api.q9elements.com. If you skipped this prompt, run /plugin configure elements@elements.

Then run /mcp, choose 'elements', and approve access in the browser tab.

Claude Desktop and claude.ai

  1. Open 'Customize' → 'Plugins', click '+ Add' → 'Add marketplace', and enter Q9Elements/elements-mcp-server.

  2. Under 'Plugins' → 'Yours', open 'Elements' and go to its 'Connectors' tab.

  3. Next to 'elements', click 'Add for your team'.

  4. The URL field shows https://${user_config.apiHost}/api/v1/mcp. Replace ${user_config.apiHost} with your host from the endpoint table above, so the URL reads, for example, https://api.q9elements.com/api/v1/mcp; then click 'Continue' and follow the prompts to sign in and approve access. You can leave the 'Advanced settings' OAuth fields blank.

Your Claude plan or organization settings may not allow adding the connector; check Anthropic's current documentation.

Cursor

  1. Open ~/.cursor/mcp.json and add:

    {
    "mcpServers": {
    "elements": { "url": "https://<your-api-host>/api/v1/mcp" }
    }
    }
  2. Restart Cursor, then approve the sign-in prompt that appears the first time you use an Elements tool.

Get the skills with npx plugins add Q9Elements/elements-mcp-server --target cursor; select elements when the plugin list appears.

VS Code

  1. Open .vscode/mcp.json in your workspace (or use the Command Palette: 'MCP: Add Server') and add:

    {
    "servers": {
    "elements": {
    "type": "http",
    "url": "https://<your-api-host>/api/v1/mcp"
    }
    }
    }
  2. VS Code prompts you to sign in through your browser the first time you use an Elements tool. It handles the OAuth sign-in automatically; you provide only the URL.

Get the skills with npx plugins add Q9Elements/elements-mcp-server --target vscode; select elements when the plugin list appears. Agent plugins are a Preview feature in VS Code, so turn on the chat.plugins.enabled setting if your organization manages it.

Codex

Install the Elements skills as a plugin:

codex plugin marketplace add Q9Elements/elements-mcp-server
codex plugin add elements@elements

Add the MCP server separately, using the endpoint for your instance from the table above:

  1. In your terminal, run:

    codex mcp add elements --url https://<your-api-host>/api/v1/mcp
  2. Run codex mcp login elements and approve access in the browser tab that opens.

Start Codex and invoke a skill with $, for example $elements-spaces. If the Elements skills aren't listed, run /skills and turn them on.

The plugin deliberately doesn't bundle the MCP server: the Codex plugin format accepts only a fixed URL, and the right endpoint depends on which Elements instance your Org is on.

ChatGPT

ChatGPT has no plugin marketplace; the zip installs the Elements skills only. Add the MCP server separately as an app, using the endpoint for your Elements instance from the table above.

  1. Download elements.zip from the repository's dist folder.

  2. ChatGPT rejects an upload as a duplicate if the plugin name remains on your account, even after uninstalling it; logging out and back in refreshes the plugin list. If an older Elements plugin is installed, uninstall it from 'Plugins' → 'Personal' → the plugin's '…' menu → 'Uninstall', then log out of ChatGPT and back in.

  3. On the 'Plugins' page, click '+', upload elements.zip, then install it.

  4. Open the plugin and click 'Add app'. Enter a name, for example Elements, set 'Server URL' to the MCP endpoint for your instance from the table above, leave 'Authentication' as 'OAuth', tick 'I understand and want to continue', then click 'Create'.

  5. Sign in:

    1. Go to 'Plugins' → 'Personal' → the plugin's '…' menu → 'Manage' → '…' → 'View plugin detail'.

    2. Under 'App', open the app's '…' menu → 'Manage' → 'Connect' (or 'Connect another account') → 'Sign in with <app name>'.

    3. Sign in to Elements and approve access.

  6. Try it: @Elements.cloud List my Elements.cloud spaces. If the plugin or its tools don't appear, log out of ChatGPT and back in.

  7. To update, download the new elements.zip and use the app's '…' → 'Upload new version', or uninstall and upload again.

Microsoft Copilot Studio

Copilot Studio connects through a custom connector, and its setup differs from every other client in one way that matters: the sign-in credentials are registered when the maker creates the connector, but nobody actually signs in until someone creates a connection, which is a separate, later step. The steps below match the current Copilot Studio screens; if they've changed, Microsoft's guide, Connect your agent to an existing MCP server, has the latest version.

Before you start: plan to finish every step, including your own first sign-in, in one sitting. A connector that nobody signs in to within 24 hours of creating it stops working (see 'Why the 24-hour deadline matters' below).

  1. In Copilot Studio, open your agent and go to the 'Build' tab.

  2. In the 'Tools' panel, click '+' and choose to add an MCP server.

  3. In the 'Add MCP server' dialog, fill in:

    • Server name: a short name for the tool, for example ElementsCloudMCP.

    • Server description: your agent uses this to decide when to call Elements, so be specific, for example "Gives the agent access to this Salesforce org's synced metadata, dependencies, governance, and documentation via Elements.cloud."

    • Server URL: the MCP endpoint for your instance from the table above, for example https://api.q9elements.com/api/v1/mcp.

    • Authentication: OAuth 2.0.

    • Configuration type: Dynamic (with discovery). Elements registers the connector itself, so there is no client ID or secret to create and nothing to set up on the Elements side. If you ever need to enter authorization and token URLs manually, take them from https://<your-api-host>/.well-known/oauth-authorization-server.

  4. Click 'Create'. Copilot Studio registers the connector with Elements at this point, which starts the 24-hour clock.

  5. In 'Select a connection', open the 'Connection' dropdown (it shows 'Not connected') and choose 'Create new connection'.

  6. Optionally enter a display name for the connection, then click 'Create'.

  7. Sign in with your Elements account in the window that opens, choose which Space or Spaces the connection can use, and approve. See 'Sign in and consent' below.

  8. Back in Copilot Studio, click 'Add'. Your Elements server now appears under 'Tools' on the agent.

  9. Test the agent in the 'Preview' tab with a question such as "What Elements Spaces can you see?", then publish it to the channels you want, such as Teams and Microsoft 365.

Elements accepts the Power Platform consent redirect (https://global.consent.azure-apim.net/redirect/...) automatically; you don't need to add it to an allowlist anywhere in Elements.

The Elements skills can't be installed into Copilot Studio; your agent uses the Elements tools directly. For best results, tell the agent in its instructions to check Elements for anything about your Org rather than answering from general Salesforce knowledge.

Why the 24-hour deadline matters. A registration that has never completed a sign-in is discarded after 24 hours. Because Copilot Studio registers the connector's credentials up front, a connector that is built and then handed over days later fails with invalid_client ("The client_id is not registered"), which reads like a broken setup rather than something that simply expired. The fix is to recreate the connector and sign in straight away. Once anyone has signed in successfully the registration is permanent, and this never applies again.

Sign in and consent

The first time you connect, Elements opens a browser tab and asks you to sign in with your existing Elements account. After signing in, you choose which Space or Spaces the connection can use, then approve. Clients are offered the same full scope set by default, though a client may request fewer; you never pick scopes.

If your account only has access to one Space, Elements selects it automatically. To change which Spaces a connection can use, revoke it and reconnect; see 'MCP security & admin controls'.

Verify it's working

Ask your assistant something like "What Elements Spaces can you see?" or "Search my org for a field called…". If you get a real answer back, you're connected.

Then try a first real question:

  • "Show me the metadata for the Account object, and what depends on it."

  • "What changed in my org this week? Anything unusual?"

  • "Run an org health diagnostic and tell me where to look first."

Some capabilities depend on your Space's plan and licenses; 'Supported tools in the Elements MCP server' lists them, and per-tool requirements are in the tools reference on GitHub. The full menu of capabilities, with example prompts, is in 'What you can do with Elements in your AI assistant'.

Next steps

Next, read 'How the Elements MCP server works' to understand what it can access, and 'MCP security & admin controls' to see how to manage or revoke a connection. If anything didn't work along the way, see 'MCP troubleshooting' at the end of this article.

How the Elements MCP server works

The Elements MCP server lets your AI assistant securely query your Elements and Salesforce architecture data, using the Elements permissions you already have. This section explains what happens behind the scenes when you connect.

Prerequisites

  • MCP access is a licensed feature that Elements enables for your Space.

  • You've connected an AI assistant to Elements; see 'Connect your AI assistant to Elements' above.

One secure endpoint

Your assistant talks to a single Elements address over a secure, authenticated connection. The connection itself stores nothing beyond the sign-in authorization you approved: your password is never shared with your assistant, and no copy of your data is created. There's no separate app or plugin to install on the Elements side; the connection is built into your account.

Diagram: your AI assistant (Claude, Codex, ChatGPT, Cursor, Microsoft Copilot Studio, or any OAuth 2.1 + PKCE MCP client) connects over MCP/HTTPS to the Elements MCP server, which checks your identity, approved Space(s), and role/plan/licenses on every call before reaching your Space. Your Space holds Salesforce metadata synced one-way, read-only, from your Salesforce org. There is no path between your AI assistant and your Salesforce org, ever.

Uses your existing Elements permissions

A connection never gives your assistant more access than you already have in Elements. Every request is checked against your Elements role, plan, and Elements permissions at the moment it's made, so if your access changes, what your assistant can see changes with it.

Per-Space access

When you connect, you choose which Space or Spaces your assistant can use. It only works in the Spaces you've selected, and a Space must be enabled for the MCP server by Elements before it can be used at all.

What it can access

Today, your assistant can read your Salesforce metadata and architecture data through Elements: objects, fields, flows, dependencies, permissions, and org-health analytics such as automation, technical debt, compliance, and governance. It can also create and change a limited set of things inside Elements: a new Space, a saved metadata view, a process-map or imported diagram draft, draft user stories, a proposed metadata node (a placeholder marked proposed for people to review, not a change to your org), and MetaFields (your own custom fields on metadata, including their values). Everything else is read-only. Nothing it does ever reaches Salesforce: it never creates, updates, deletes, or deploys Salesforce metadata, and it never overwrites your synced copy. There is no delete tool. The one thing to know is that MetaFields overwrite: populating a classification replaces whatever value was there, and narrowing a MetaField's definition can permanently remove values already held in Elements. Publishing an approved diagram version is deliberately not possible here; it stays a password-confirmed step in the Elements web app.

Supported clients

The Elements MCP server works with any AI assistant whose MCP client supports remote MCP servers with the MCP standard's secure sign-in (OAuth 2.1 with PKCE). It has been tested with Claude (CLI and Cowork), Codex CLI, ChatGPT (Work), and Cursor; see 'Connect your AI assistant to Elements' for setup steps.

MCP security & admin controls

This section explains how the Elements MCP server keeps your data safe and how you can govern and audit your connections. It's the section to share with your security team.

Prerequisites

  • MCP access is a licensed feature that Elements enables for your Space.

What the server can reach

Elements stores Salesforce metadata and configuration, along with usage telemetry used by some tools: record counts and Apex execution telemetry from Salesforce Event Monitoring logs. Metadata includes things like object and field definitions, flows, Apex classes, validation rules, and permission sets. It never stores Salesforce business records (accounts, contacts, opportunities, transactions), so nothing your AI assistant does through Elements can reach them either.

The MCP server never connects to your Salesforce org, and nothing it does can change your Salesforce org: Elements reads Salesforce metadata, it never writes it. When your assistant creates or changes something, it writes only Elements artifacts: a Space, a metadata view, MetaFields and their values, a proposed metadata node, a diagram, or a user story.

Authentication

You sign in with your existing Elements account using OAuth 2.1, an open, secure sign-in standard used across the industry. The sign-in flow uses PKCE, an additional safeguard that prevents an intercepted request from being reused by anyone else. You never share an Elements password with your AI assistant; you sign in through your browser, directly with Elements.

You choose what a connection can do

When you approve a connection, you're shown the client (for example, Claude Code) and its requested scope families; clients are offered the same full set by default, though a client may request fewer, and you never pick scopes. The choice you make is which Space or Spaces it can use. Elements controls which Spaces are licensed for MCP access, and your Space administrator controls the Elements permissions you have, which determine what will actually work. A connection only ever reaches the Spaces you selected; new Spaces are never added to an existing connection automatically. To change which Spaces a connection can use, revoke it and reconnect.

Per-Space enablement

Elements turns on MCP access for each Space individually; it is a licensed feature. A Space that hasn't been enabled can't be selected when you connect, and Elements checks this again on every single request, so disabling a Space takes effect immediately, even for connections that were approved earlier.

Tenant isolation

A connection only ever works inside the Spaces you granted it; it can't be used to reach any other Space, tenant, or customer's data. When no Space is active, Elements uses your Elements default Space if it is among the Spaces you consented to. The active_space_required error appears only when none of your consented Spaces is your default. Elements never uses a Space outside the grant. Behind the scenes, each access token is cryptographically tied to the Elements MCP server, so even if a token were somehow exposed, it couldn't be replayed against any other Elements service.

Token handling

Access tokens are short-lived and refresh automatically in the background. Refresh tokens rotate on each use and last 30 days from the last refresh, so a connection used at least monthly stays signed in. Elements never stores a token in plain text; only a keyed hash (HMAC-SHA-256) is kept.

Managing and revoking connections

You can review and revoke your own connections at any time: open your Elements profile, select the 'Connected apps' tab, find the connection, and click 'Revoke'. Each connection shows the client, the Space(s) it can use, its scope, and when it last signed in. Space administrators can review the connections into their Space and remove their Space from them. Removal takes effect immediately.

Audit logging

Every action your assistant takes through Elements is logged: who made the request, which Space it ran in, what it asked for, and whether it succeeded. Sign-ins, approvals, and revocations are logged too. These records are kept in secure, tamper-resistant storage operated by Elements and used for security monitoring and incident investigation. They aren't currently visible inside the Elements app; if you need a connection's activity investigated, contact Elements support. What you can see yourself, at any time, is every active connection, what it's allowed to do, and when it last signed in, on the 'Connected apps' tab of your profile.

Rate limits and safeguards

Each connection is limited to a safe rate of requests, and every request is checked against a strict, predefined set of allowed inputs before it runs, so it can't be used to send unexpected commands. Results are screened on the way back, too: hidden characters that could be used to smuggle instructions to an AI assistant are stripped from every response, and AI-generated explanations are checked and clearly marked so your assistant treats them as information to read, not instructions to follow.

Actions that create or change something in Elements still require your own Elements permissions. Your assistant acts as you: it can never do more than your Space administrator has already allowed you to do yourself, and approving a connection never raises your own Elements permissions. And nothing your assistant does ever changes your Salesforce org itself. The most significant changes are saved as drafts for a person to review in Elements: a proposed metadata node is clearly marked as proposed in your reference model, and an imported diagram only updates the diagram's working draft; publishing an approved version is a separate, deliberate step.

AI features and your data

Some tools use a large language model to produce answers: explain_metadata_item; the Decision Engine tools run_automation_inventory, run_automation_recommendation, run_schema_inventory, run_schema_recommendation, run_dependency_scan, run_change_impact_analysis, run_architecture_risk_analysis, run_backlog_draft, and get_analysis_result; and generate_process_map and generate_stories_from_diagram. These run through the same licensed AI features Elements already offers in the web application; connecting an assistant doesn't add any new AI integration or send your data anywhere new. Only the metadata needed to answer the question is sent, never Salesforce business records, which Elements doesn't hold. AI-generated narrative is screened and marked as untrusted data. Decision Engine runs keep their analysis as internal Elements artifacts.

Security certifications

The MCP server runs on the same platform as the rest of Elements. Our platform-level security documentation (including SOC 2, ISO 27001:2022, and our Data Processing Agreement) is available at trust.elements.cloud.

Supported tools in the Elements MCP server

Your AI assistant uses a set of underlying tools to answer questions through Elements. This section lists them for reference; you don't need to call them by name, since the skills described in 'What you can do with Elements in your AI assistant' choose the right one automatically.

Prerequisites

  • MCP access is a licensed feature that Elements enables for your Space.

Every tool respects your existing Elements permissions: a tool never returns more than you could already see in the Elements app. The set of available tools grows over time as Elements adds new skills.

Only a small set of tools write anything (the Read/Write column below shows which). There is no delete tool, and no tool ever mutates Salesforce itself; however, update_metafield can irreversibly remove MetaField values held in Elements when applicability is narrowed or options are removed, and set_metafield_values can clear values, so follow the counting-before-destructive-edit recipe in the elements-metafields skill before making those changes.

Some tools are only available on certain Elements plans, such as Pro or Enterprise, or to users with a required role. A tool that no authorized Space makes available through its plan, licenses, and your role won't appear in your assistant's tool list at all; if you call a visible tool in a Space that doesn't qualify, or without the required rights to the specific resource, your assistant lets you know.

Spaces

Tool

What it does

Read/Write

get_active_space

Shows which Space your assistant is currently using. It reports that Space even when a different Space id is passed.

Read

list_authorized_spaces

Lists every Space you're authorized to use.

Read

set_active_space

Switches your assistant to a different Space. Changes only your own session, not Org data.

Read

create_space

Creates a new Elements Space.

Write

revoke_access

Revokes this client's access to Elements. Also the way to re-authorize with a different space selection; the next request restarts the consent flow.

Write

Metadata

Tool

What it does

Read/Write

list_reference_models

Lists the Salesforce Orgs available to search.

Read

metadata_search

Finds Salesforce metadata (objects, fields, flows, and more) by keyword.

Read

get_metadata_node

Shows full detail for one metadata item, including its fields and relationships.

Read

get_dependencies

Shows what a metadata item depends on, and what depends on it.

Read

get_inbound_relationship_population

Lists inbound relationship fields for up to 25 objects from synced metadata and ranks them by population percentage. A null percentage means the population is unknown, not zero.

Read

explain_metadata_item

Explains, in plain language, what a metadata item does: what an automation does, how a field or object gets its value, or the order things run in when a record is saved.

Read

code_search

Searches Apex code and other metadata source for an exact text, such as an API name or a hardcoded ID.

Read

get_node_change_history

Shows who changed a metadata item, when, and what changed.

Read

get_access

Shows which Profiles, Permission Sets, Permission Set Groups, and Groups can access a metadata item, and how many users each one reaches.

Read

list_supported_metadata_types

Lists the Salesforce metadata types Elements can sync and analyze.

Read

list_metadata_columns

Lists the attributes you can filter on for a metadata type.

Read

list_metafields

Lists your Space's customer-defined MetaFields, including their options, applicability, and remaining capacity.

Read

create_metafield

Creates one customer-defined MetaField on Salesforce metadata in Elements.

Write

update_metafield

Updates a MetaField definition; narrowing its applicability or removing options also removes affected values.

Write

set_metafield_values

Sets or clears MetaField values on many metadata items and handles dependent picklists in bulk.

Write

list_metafield_dependencies

Lists dependent-picklist matrices between MetaFields, with their field and option labels.

Read

create_metafield_dependency

Creates a dependent-picklist matrix between two MetaFields.

Write

update_metafield_dependency

Replaces a MetaField dependency matrix without changing the paired fields.

Write

query_metadata

Builds a filtered list of metadata matching specific criteria.

Read

save_metadata_view

Saves a filtered metadata list as a named, reusable view.

Write

run_quick_cleanup_view

Returns one of Elements' ready-made cleanup lists, such as inactive automations or unused fields.

Read

create_proposed_node

Registers a proposed metadata item (a planned object, field, Flow, or Prompt Template) in a reference model, so intended metadata can be tracked and attached to diagrams.

Write

list_managed_packages

Lists the Salesforce managed packages installed in a reference model, each with its namespace prefix and a per-metadata-type component count.

Read

plan_package_uninstall

Plans the removal of an installed managed package: inventories its components, sweeps for incoming dependencies, separates real uninstall blockers from package-internal references, flags automations to deactivate, and returns a sequenced removal plan. Its external references include standard polymorphic lookup fields that usually point at most or all custom objects a package adds; these clear when the package goes and are counted separately. It plans only; it never uninstalls.

Read

Org health

Tool

What it does

Read/Write

get_org_structure

Summarizes the structural shape of your org: automation counts, data-holding objects, and integration technologies.

Read

get_automation_health

Summarizes the health of your org's automations: flows, triggers, and rules.

Read

get_tech_debt_summary

Summarizes technical debt across your org, such as inactive or unused metadata.

Read

get_compliance_summary

Summarizes your org's security and permissions posture across Profiles, Permission Sets, Roles, and Groups.

Read

get_governance_summary

Summarizes recent change velocity and description coverage across your org.

Read

get_field_population

Ranks objects by how well their fields are populated with data.

Read

get_object_dependency_analysis

Ranks objects by how many other components depend on them.

Read

get_object_dependency_drill_down

Lists the specific components behind an object's dependency count.

Read

Playbook tools

These tools exist for the Remove Unused Apex playbook and are described on its page. Apex execution telemetry comes from Salesforce Event Monitoring daily Apex event logs; no telemetry does not mean nothing is used.

Tool

What it does

Read/Write

has_event_monitoring

Checks whether the connected org has daily Apex event logs and reports the observed coverage within 30 days. Finding none is a successful result and does not prove that nothing is used.

Read

get_unused_apex_candidates

Ranks Apex classes and triggers that may be unused from synced metadata and execution evidence. The analysis may return a disqualified result when there is not enough evidence; completed bundle links expire after 120 seconds.

Read

Data load impact

Data load impact analysis uses fully synced configuration to show which automations, validations, and locking consequences a planned Salesforce data load can trigger before it runs.

Tool

What it does

Read/Write

run_data_load_impact

Analyzes one to five load targets for the automations, rules, and record locks they may trigger. It summarizes every target, and its complete evidence bundle link expires after 120 seconds.

Read

Drill-down

Tool

What it does

Read/Write

get_analytic_drill_down

Lists the specific metadata items behind any health or governance chart slice.

Read

Agent opportunities

Tool

What it does

Read/Write

scan_agentic_opportunities

Scans your whole Org and returns one ranked signal vector per object (volume, free-text ratio, automation density, growth, engagement) with the score factors that justify each agentic-opportunity ranking.

Read

get_object_usage

Returns the full usage and telemetry profile for a single object (record counts, daily deltas, last-activity dates, and engagement) to deep-dive an opportunity.

Read

Diagrams

Tool

What it does

Read/Write

list_diagrams

Lists the process-map diagrams in your Space, with your role and edit rights on each.

Read

get_process_map

Reads an existing diagram as structured data, and polls for completion of an in-progress generation.

Read

generate_process_map

Generates a UPN process map from a text description, transcript, or uploaded images.

Write

upload_process_map_image

Uploads an image for use as input to process-map generation.

Write

export_diagram

Exports a diagram as a ZIP for editing, with presigned download and upload links.

Read

import_diagram

Imports an edited diagram ZIP back into Elements, replacing the current draft. Releasing an approved version stays a person's job in the Elements UI.

Write

generate_org_to_process

Generates org-to-process diagrams for a Salesforce lifecycle object (Opportunity, Case, Lead…) from the org's actual record types, lifecycle fields, and synced automations.

Write

Stories

Tool

What it does

Read/Write

list_stories

Lists user stories in your Space, 20 per page by default and up to 100.

Read

generate_stories_from_diagram

Generates AI user stories from selected diagram activities, with headline, description, and acceptance criteria.

Write

Decision Engine

Analysis runs in the background: poll get_analysis_result before starting the next step. Elements stores analysis artifacts; requirements and stories remain drafts. Schema creation goes directly from an accepted create-new option to backlog; reuse and extension include dependency, impact, and risk analysis.

Tool

What it does

Read/Write

run_automation_inventory

Inventories the existing Salesforce automations related to an automation request (step 1 of the automation-review workflow).

Read

run_automation_recommendation

Recommends implementation options (update existing vs create new) and records the one you pick.

Read

run_schema_inventory

Inventories objects, fields, and record types relevant to a schema request; clarifies ambiguous parent objects.

Read

run_schema_recommendation

Recommends schema reuse, extension, or creation and records the selected approach.

Read

get_analysis_result

Polls the current mission run and returns its finished step result or failure.

Read

run_dependency_scan

Resolves the target metadata and scans its direct dependencies.

Read

run_change_impact_analysis

Analyzes change impact and produces a change plan, including a capped deletion cascade when requested.

Read

run_architecture_risk_analysis

Analyzes the change for architecture risks, with a confirmation gate on high-complexity changes.

Read

run_backlog_draft

Drafts a requirement and user stories for delivery. The draft is returned for review and is not written into Elements.

Read

What you can do with Elements in your AI assistant

Elements connects to your AI assistant so you can ask questions about your Salesforce Org in plain language, right inside the tools you already use. Built-in skills turn a plain-language request into the right Elements action, so you get an answer instead of digging through screens.

These fifteen skills are available today. Each one is built to recognize the kind of question you're asking and call the right Elements lookup automatically; you don't need to learn any special commands. If your client has the Elements skills installed (see 'Connect your AI assistant to Elements' above), you can also invoke a skill by name: use the slash form shown with each example, or $ in Codex (for example $elements-spaces).

Prerequisites

  • You're using an AI assistant with MCP support; Elements has been tested with Claude (CLI and Cowork), Codex CLI, ChatGPT (Work), and Cursor.

  • MCP access has been enabled by Elements for your Space.

  • You've connected your assistant to Elements. See 'Connect your AI assistant to Elements' above.

Understand your org

Work across your Spaces

Ask your assistant which Elements Space it's currently using, switch it to a different Space, or create a new one for a project.

"What Space are you working in right now? Switch to the Acme Corp space."
or directly: /elements-spaces switch to Acme Corp

Explore your Salesforce metadata

Ask about a specific object, field, flow, trigger, or Apex class: what it is, what it depends on, and what it does.

"What does the LoyaltyPointsFlow do, and what does it depend on?"
or directly: /elements-metadata LoyaltyPointsFlow

Audit who can access something

Ask which Profiles, Permission Sets, Permission Set Groups, or Groups can read or edit a field or object, and how many users each one reaches.

"Who can edit the Credit Limit field on Account, and how many people does each permission reach?"
or directly: /elements-access Credit Limit on Account

Build custom metadata lists

Ask for a filtered list of metadata that matches specific criteria, and save it as a named, reusable view.

"List every screen flow still on an old API version, and save that as a view called 'Flows to upgrade.'"
or directly: /elements-metadata-query screen flows on old API versions

Get an org health check

Ask for a full health check of your org (structure, automation, technical debt, compliance, and governance) in one pass, with a ranked summary of where to look first.

"Run a health check on my org and tell me where to look first."
or directly: /elements-org-diagnostic

See what changed recently

Ask what changed in your org over a given period, broken down by metadata type, with unusual spikes and automation bursts flagged.

"What changed in my org this week, and was anything unusual?"
or directly: /elements-change-briefing last 7 days

Find what to clean up first

Ask for a ranked list of what to fix or remove first, based on risk, how many other components depend on it, and how recently it changed.

"What should I clean up first, and why?"
or directly: /elements-tech-debt

Find where to use AI agents

Ask your assistant to scan your whole Org for agentic opportunities and rank them, with the evidence behind each, so you know where an Agentforce agent would pay off.

"Scan my Org and tell me the top few places we should use an Agentforce agent."
or directly: /elements-agent-opportunities

Plan a managed package removal

Ask what it would take to uninstall a managed package. Elements inventories the package's components (as completely as your Space's licensed tools allow), sweeps them for incoming dependencies, separates the real blockers from references that disappear on their own, and hands back a sequenced removal plan, from resolving blockers through a sandbox dry run to post-removal verification. It plans the removal; the uninstall itself stays in your hands.

"What would it take to remove the Consensus package from our org?"
or directly: /elements-package-uninstall Consensus

Across your orgs

Every skill above answers about one org at a time. This one composes those answers into a comparison across all the orgs in your Space.

Compare all the orgs in your Space

Ask for a view across every org you can see. Elements discovers the orgs in your Space, asks you to confirm the list, runs the same query against each one, and produces a self-contained HTML report you can email to someone who has no Elements access and no AI assistant. Every number on the page traces back to the raw response that produced it, and each org carries the timestamp of its last successful sync, so an org that has quietly stopped syncing is flagged rather than averaged in. A worked inventory report ships with it, and you can customize it by describing what you actually want; a technical-debt comparison is available as a data pull while its report is being redesigned. Because each run saves a dated snapshot, running it again next week turns the same report into a trend.

This one needs an assistant that can run Python: the report is produced by a script rather than written by the model, which is what makes the numbers reproducible.

"Give me an overview of our Salesforce orgs."
or directly: /elements-multi-org-analytics

Model & decide

Skills for structuring and classifying metadata, and evaluating how to make a change before you build it.

Define and populate MetaFields

Ask your assistant to set up the custom fields your Space uses to classify Salesforce metadata, connect dependent picklists, populate values in bulk, and verify the result. Definition changes stay in Elements, but narrowing applicability or removing options can purge existing MetaField values across synced Orgs.

"Set up a retention-priority MetaField for our objects, classify them, and verify the result."
or directly: /elements-metafields classify our objects by retention priority

See a Salesforce object's real lifecycle

Ask for the process behind a lifecycle object such as Opportunity, Case, or Lead. Your assistant builds it from the org's actual record types, lifecycle fields, and synced automations rather than a generic template, producing one diagram per record type.

"Show me the Case process."
or directly: /elements-org-to-process Case

Plan an automation or schema change

Ask how best to add or change Salesforce automation, objects, fields, or record types. Your assistant inventories existing metadata and recommends approaches. Once you select one, it analyzes existing targets and drafts a delivery backlog. A create-new schema selection goes directly to the draft. You receive a chat summary and local report; Elements stores analysis artifacts while requirements and stories remain drafts.

"We want Cases auto-assigned by region. What's the best way to build it and what would it affect?"
or directly: /elements-decision-engine

Deliver the change

Skills for turning a decision into diagrams and artifacts.

Create and edit process maps

Ask your assistant to turn a description, transcript, or images into a UPN process map, or to read and edit an existing diagram. Edited diagrams are saved as a draft for you to review and release in Elements.

"Turn this onboarding call transcript into a process map, then add an approval step before go-live."
or directly: /elements-diagrams

Turn a process map into user stories

Ask your assistant to list the user stories in a Space, or to generate stories from the activities on a process diagram, each with a headline, description, and acceptance criteria.

"Generate user stories from the activities on this onboarding diagram."
or directly: /elements-stories

More is coming

Elements keeps extending the MCP server. New skills appear here as they ship.

Playbooks

Playbooks are separate plugins that run a complete Salesforce process end to end. Read 'What is an MCP playbook?' to learn how they work and how to install one.

MCP troubleshooting

If your AI assistant can't connect to Elements, or something isn't behaving as expected, start here. Click any question below to expand it.

Prerequisites

MCP access is a licensed feature that Elements enables for your Space. You've followed the steps in 'Connect your AI assistant to Elements' above.

I can't connect, or no Spaces appear

This usually means the Space you're trying to use hasn't been enabled for the MCP server yet. MCP access is a licensed feature that Elements turns on per Space. Once the Space you need is licensed, try connecting again and it will appear.

I'm stuck in a sign-in loop

Clear your assistant's saved Elements authorization and try connecting again. In most clients this is an option in the same menu where you added the connection; look for 'Disconnect' or 'Remove server' before reconnecting.

Copilot Studio says 'The client_id is not registered'

The connector was created more than 24 hours before anyone signed in to it, so Elements discarded its registration. Delete the MCP server from your agent's 'Tools', add it again, and create a connection and sign in straight away. Once one sign-in succeeds, the registration is permanent. See the Microsoft Copilot Studio steps in 'Connect your client' above.

I get a 401 or 405 error when I open the URL

The Elements MCP endpoint only accepts signed-in POST requests, which your client's MCP library sends automatically. A plain browser visit sends a GET request instead, so you'll see an error: 401 Unauthorized if you're not signed in, or 405 Method Not Allowed if you are. Either way, this is expected and doesn't mean the service is down; connect through a supported client instead of opening the URL directly.

I get a 'too many requests' or 'server busy' message

To keep the service responsive for everyone, each connection is rate-limited and can run up to 20 requests at the same time; the server as a whole also has a limit and may reply 'server busy' under heavy load. Your assistant will report this as a rate limit (rate_limited), too many requests at once (too_many_concurrent_requests), or a busy server (server_busy), and each one says how many seconds to wait. Wait the full time before trying again; retrying sooner won't work, but it won't extend the pause either. Then ask your assistant to make fewer requests in parallel.

A large request times out

Large results aren't normally a problem: Elements returns long lists a page at a time, summarizes oversize results with a way to fetch the rest, and runs long analyses in the background while your assistant checks on progress. Each individual request still has an execution limit of about 30 seconds as a backstop, so if one very broad request does hit it, narrow the request (ask for fewer items, or a specific object or metadata type) and try again.

I have access to more than one Space

If your account belongs to more than one Space, Elements asks you to choose which one (or ones) the connection can use when you first sign in. To change which Spaces a connection can use, revoke it and reconnect; see 'MCP security & admin controls' above. When no Space is active, Elements uses your Elements default Space if it is among those you consented to. The active_space_required error means none of your consented Spaces is your default. Ask your assistant to switch Spaces at any time, for example: "Switch to the Acme Corp space."

I used the wrong instance host

Elements runs in more than one location, so an endpoint that works for one Org may not work for another. Always match the URL shown in your browser when you're logged into Elements to the endpoint in the table in 'Connect your AI assistant to Elements' above; never guess based on location.

ChatGPT says a plugin upload is a duplicate

The plugin name can remain on your account after you uninstall it. Log out of ChatGPT and back in. If ChatGPT still refuses the upload, the name is held by an earlier upload.

A plugin, its skills, or its tools don't appear in ChatGPT

After you upload or connect a plugin, log out of ChatGPT and back in.

Codex skills aren't listed

Run /skills and turn on the Elements skills you need. Invoke a skill with $, for example $elements-spaces.

Claude Desktop or claude.ai shows ${user_config.apiHost} in the connector URL

Replace ${user_config.apiHost} with your Elements host. See the Claude Desktop and claude.ai steps in 'Connect your client' above.

FAQs

Is my data stored outside Elements?

No. The MCP server reads from the same Elements data your account can already access; no additional copy of your data is created or stored by the connection itself.

Which AI assistants are supported?

Any assistant whose MCP client supports remote MCP servers with the MCP standard's secure sign-in (OAuth 2.1 with PKCE). Elements has been tested with Claude (CLI and Cowork), Codex CLI, ChatGPT (Work), and Cursor.

My assistant says it doesn't have a tool, or can't do something these articles describe.

Tool availability depends on each authorized Space's plan and licenses and your role there. A tool that none of those Spaces makes available is hidden from your assistant entirely, so it may simply say it can't help; and if your connection covers several Spaces, a tool available through one Space returns a clear not-authorized message when used in a Space that doesn't qualify. See 'Supported tools in the Elements MCP server' above for what each capability needs. After a licensing change, start a new conversation so your assistant picks up the updated tool list.

How do I revoke access?

Removing the server from your client's config stops that client using it, but the server-side connection remains until its refresh token expires, 30 days after its last refresh. A connection used at least monthly stays signed in. To revoke it immediately, go to your Elements profile, select the 'Connected apps' tab, find the connection, and click 'Revoke'. Space administrators can also revoke connections into their Space. Revoking takes effect immediately.

Did this answer your question?