Elium AI

MCP

Connect Elium with ChatGPT, Claude, Microsoft Copilot Studio or your own system.

Updated on 14 October 2026

About

The Model Context Protocol (MCP) is an open standard that allows AI models and external applications to securely access real-time, contextual data from connected systems. In the context of Elium, MCP enables a bridge between your knowledge base and AI tools such as ChatGPT or other compliant assistants.

Through MCP, an AI assistant can query your Elium content, for example, to answer user questions, summarise documentation, or provide context-aware support without needing to manually copy or export data. Access is managed via OAuth authentication, ensuring that only authorised users and applications can retrieve information based on their Elium permissions.

Each Elium instance exposes its MCP endpoint at https://your-platform-name.elium.com/services/mcp, which can be used to connect your platform’s knowledge securely to external AI ecosystems.

Available tools

Once a connection is established, the Elium MCP server offers tools to search, read, create and update articles. Every tool runs with the permissions of the authenticated user, so an assistant can only ever access content that user is already allowed to see in Elium.

ToolWhat it does
findRelevantArticlesSearches the whole knowledge base by meaning. The default way to answer a question.
findSpecificArticlesSearches with filters: keywords, template, spaces, date range.
readArticleReturns the content and metadata of one article, including its language and version.
readAssetReturns the plain text of a document attached to an article.
findSpacesLists the spaces the user can access.
findSectionsLists the sections (folders) in a space.
findTemplatesLists the article templates available.
getContentSyntaxReturns the Markdown specification used for article bodies.
checkArticleBodyValidates a Markdown body before creating an article.
createArticleCreates an article from Markdown when writing is enabled.
updateArticleApplies targeted Markdown edits and saves a draft when writing is enabled.

findRelevantArticles

Performs a semantic (meaning-based) search of the whole knowledge base from a natural-language question and returns the most relevant articles, ranked by relevance. It takes no filters and no scoping. This is the tool an assistant uses by default to answer a question.

Each result includes the article title, a link to open it, and a matching content snippet. Snippets can also come from attached documents, when those are the best match.

findSpecificArticles

Runs a more targeted search, for when an assistant needs to filter rather than rank by meaning. It supports:

  • keyword search (a result must contain all the terms supplied)

  • filtering by template, by specific spaces, and by a date range

  • choosing the sort order

  • capping the number of results (10 by default, up to 50)

This is useful for requests such as "the five most recent articles created from the Policy template in the HR space".

readArticle

Retrieves the content of a single article from its identifier, returned as Markdown, together with its key metadata: owner, space, template, tags, any custom attributes (label and value), review or expiry date, approval status, last-version date, and whether the article is archived.

An assistant typically calls this after a search, when it needs more context than a snippet provides. It uses the metadata to judge how current and how reliable the content is.

When available, the owner, space and template include both an identifier and a name. The review information helps an assistant explain the status of its sources:

InformationHow to interpret it
Review or expiry dateA past date means the review is overdue. A future date means the review deadline has not yet passed. An absent date means no expiry is set.
Approval statusShows whether the latest approval process visible to you resulted in publication, is waiting for approval, needs correction or was cancelled.
Last-version dateThe publication date of the active version, or its creation date if unpublished. This is not the date of every edit.
Archived statusShows whether the article is archived.

The result also identifies the language, available translations and version read. An assistant can request the latest draft with draft: true if you have permission to access it.

readAsset

Retrieves the plain text of a document (file) attached to an article. Use this when more detail is needed from an attached document than the snippet returned by findRelevantArticles, or when the body of readArticle references a document worth reading in full.

The tool needs two identifiers: the article ID and the document UUID. The UUID comes from a findRelevantArticles result (the doc_uuid field) or from an <el-asset>, <el-asset-inline> or <el-asset-link> element in the body returned by readArticle (the data-asset attribute).

Returns null when the article or the document cannot be found. If no text could be extracted (for example, the file is an image or its text is not available yet), the tool refuses with a message pointing the user to the article URL.

createArticle

Ask your connected assistant to save content in Elium, for example: "Create a draft called Meeting notes in the Operations space from this Markdown."

  1. Ask the assistant to find the space with findSpaces and check that you can create content there.
  2. Provide the article title and Markdown body. The assistant sends these with the space identifier to createArticle. It creates a draft by default (publish: false).
  3. Open the returned article link in Elium. Review the draft, then follow your usual publication or approval process.

You can explicitly ask the assistant to publish the new article (publish: true). Your space permissions still apply: the article may need approval before publication. The result includes the article identifier, its link and whether it was published. An unpublished result can mean either a draft or an article awaiting approval.

The tool accepts standard Markdown, including tables, task lists, strikethrough, footnotes, maths, subscripts and superscripts. For syntax examples, see Markdown input format. Use the standard Markdown forms for this tool; it does not offer the Elium Markdown import mode.

If the importer reports formatting or content it cannot preserve, the request is rejected before creating an article. Ask the assistant to correct the reported issues and try again.

updateArticle

Ask your connected assistant to change a specific passage, for example: "In the travel policy, replace the meal allowance of €25 with €30 and save a draft."

  1. Ask the assistant to read the article first, including its latest draft if it has unpublished changes.
  2. Describe the passages to change. The assistant sends the exact existing Markdown and its replacement. It should include the version it read, so Elium rejects the update if a newer version exists. For a translated article, it must also name the language it read; only that translation changes.
  3. Open the returned article link in Elium. Review the draft, then follow your usual publication or approval process. The tool never publishes the changes.

Each passage must match exactly one location unless the assistant explicitly requests all matches. A replacement can be empty to delete text. If a passage is missing, ambiguous or overlaps another edit, the whole request is rejected and nothing changes. Edits are also refused while someone else is editing the article. After a version conflict, ask the assistant to read the latest draft before trying again.

The tool changes the article body only. It can add a short comment to version history and reports any formatting adjustments. For supported formatting, see Markdown input format.

findSpaces

Lists the spaces the user can access. This shows an assistant how the knowledge base is organised, and it returns the space IDs needed to scope a search with findSpecificArticles.

An optional name filter narrows the list. It matches anywhere in the name and ignores case and accents. Results are ordered by name and limited to 50 spaces per request, including when no filter is supplied. Use a name filter if the space you need is missing. Archived spaces are excluded.

Each result includes the space's identifier, name, link, visibility type and any description or space group. It also gives your role, the number of members, whether you can create content and whether you can publish directly. If you can create content but cannot publish directly, an approval is needed before publication.

This is useful as a first step before a targeted search, or for requests such as "which spaces can I publish to?".

findSections

Lists the sections (folders) a space uses to organise its articles. Only spaces configured for it have sections; the result is empty for the others, and articles created there are simply left unsorted.

Each result includes the section identifier, its full path (parent names separated by " / ") and its description when set. The description usually explains what belongs in that section.

Pass the section id as the section_id parameter of createArticle to file a new article in that section.

findTemplates

Lists enabled article templates (article types) available across the platform or installed in spaces visible to you. Each result includes the template's identifier, name, icon if set, and whether it is available in every space. For templates installed in specific spaces, it returns only the identifiers of spaces visible to you.

It takes the same optional name filter as findSpaces. Results are ordered by name and limited to 50 templates per request. Use a name filter if the template you need is missing.

This lets an assistant find the right template before it filters a search, for requests such as "find all articles that use the FAQ template".

getContentSyntax

Returns the Markdown specification used for article bodies. This documents every block and inline element with its attributes, the Markdown and HTML forms each one takes, and the elements each kind of document accepts.

Read it before writing or editing a body that needs more than paragraphs, lists and links. This is the dialect readArticle returns and createArticle and updateArticle expect.

The tool takes no arguments and returns the specification as Markdown. The same document is also available as a resource at elium://content/syntax.

checkArticleBody

Dry-runs the import of an article body and reports what it would be stored as. Nothing is written.

This is the check createArticle runs before it writes anything: a body that comes back as importable is one the tool will accept. Compare the returned canonical_markdown with what you sent: markup Elium does not recognise is dropped or kept as text, which shows there rather than as a problem.

The result includes:

  • importable: whether createArticle would accept this body

  • canonical_markdown: the body as it would be stored, rendered back to Markdown

  • problems: what the import would lose or rewrite, one line each

Use this before createArticle when the body contains complex formatting. If problems are reported, ask getContentSyntax to learn the supported markup, fix the body, and check again.

Examples in practice

Here are a few things a connected assistant can do, and the tools it uses behind the scenes.

  • "How do I request parental leave?" A meaning-based search (findRelevantArticles) answers from the most relevant HR articles, with links.

  • "Summarise the policies we updated this quarter." A filter by template and date range (findSpecificArticles), then a read of each result (readArticle) to summarise it.

  • "Is our data-retention policy still up to date?" A read of the article (readArticle), then a check of its review date and approval status before answering.

  • "Which spaces can I post to?" A list of the user's spaces and their rights (findSpaces).

  • "Find every FAQ article in the Support space." A template lookup (findTemplates), a space lookup (findSpaces), then a filtered search (findSpecificArticles).

  • "Read the PDF attached to this article." After reading an article (readArticle), the assistant calls readAsset with the document UUID from the body to retrieve its full text.

  • "Create a guide in the Installation folder of the Handbook space." A space lookup (findSpaces), then a section lookup (findSections) to find the folder, then createArticle with the section ID.

  • "Check if this Markdown is valid before creating the article." A dry run (checkArticleBody) reports any formatting issues before createArticle writes anything.

Every example runs with the user's own permissions. The assistant never sees content that the user could not already open in Elium.

Regarding authentication

Elium uses the OAuth 2.0 protocol to authenticate and authorise access to the MCP endpoint. OAuth ensures that external applications can only access Elium data on behalf of users who have explicitly granted permission.

There are two ways to configure OAuth authentication for MCP integrations:

Elium supports Dynamic Client Registration (DCR), and it is enabled on every platform. With DCR, an assistant registers itself as an OAuth client on your platform. Nobody has to create a client ID and secret by hand.

Elium only accepts registrations from known applications, such as ChatGPT and Microsoft Copilot Studio. Each one must use a redirect URL that Elium allows, so access tokens only go to these applications. Registered applications appear in Connected apps with a "DCR" badge: see Dynamic client registration.

By default, Claude uses a close variant of DCR. Instead of registering, it gives Elium the address of a client description that Anthropic publishes, called a Client ID Metadata Document (CIMD). The result is the same for you: there is nothing to create in Elium.

To connect another application through DCR, contact support@elium.com with its name (client_name) and the redirect URLs it uses (redirect_uris). Only ask for applications you trust.

2. Manual OAuth client creation

Platform administrators can create an OAuth client manually, in Settings > Connected apps.

Once the client is created, its credentials (client ID and client secret) can be used to authenticate with the MCP endpoint according to the OAuth 2.0 flow.

This approach gives administrators full control over the client configuration and redirect URLs.

Recommendation

Use DCR whenever your assistant supports it, as ChatGPT and Copilot Studio do, and Claude’s published identity for Claude: in both cases, there is nothing to create in Elium. Use manual OAuth client creation for an application that supports neither, or when you need to manage client credentials and redirect URLs yourself.

Setup instructions

Follow the section for your assistant.

Setup for Copilot Studio

Copilot Studio registers itself with Elium through dynamic client registration (DCR), so you do not need to create a connected app in Elium.

  1. In Copilot Studio, add an MCP server to your agent. Use https://your-platform-name.elium.com/services/mcp as the Server URL, replacing your-platform-name with your Elium platform name.
  2. Select OAuth 2.0, then Dynamic discovery. This registers the connection without asking you to create a client ID and secret manually.
  3. Create the connection, sign in to Elium and approve the requested access. Add the MCP tools to your agent, then test with a question about an article you can read in Elium.

See Microsoft’s Copilot Studio setup instructions for the current screens and connection steps.

Setup for ChatGPT

ChatGPT registers itself with Elium through dynamic client registration (DCR), so you do not need to create a connected app in Elium.

These steps use the ChatGPT desktop app.

  1. Open Customize, then Plugins.

  2. Click Add in the top right corner, then click Add custom MCP server.

  3. Complete the form:

    • Name: Elium

    • Description (optional): a short description, for example Trusted Knowledge Base

    • Connection: keep Server URL selected and enter https://your-platform-name.elium.com/services/mcp, with your Elium platform name in place of your-platform-name

    • Authentication: OAuth

    You do not need to open Advanced OAuth settings. ChatGPT reads Elium’s OAuth configuration and chooses DCR on its own.

  4. Read the warning about custom MCP servers. Select I understand and want to continue, then click Create as a plugin.

  5. In the Connect Elium window, click Continue to Elium.

  6. Elium opens in your browser. Sign in if Elium asks you to, then approve the access that ChatGPT requests.

You can now search your Elium platform from a ChatGPT conversation.

Elium is listed on the Personal tab of the Plugins page, under Created by you. If you closed the Connect Elium window before step 6, click + next to Elium to open it again.

Setup for Claude

Claude identifies itself to Elium on its own, so you do not need to create a connected app in Elium.

These steps use Claude in a web browser, with a Pro or Max plan. On a Team or Enterprise plan, an owner adds the connector first: see the end of this section.

  1. Open Customize, then Connectors.

  2. Click Add in the top right corner, then click Add custom connector.

  3. Complete the form:

    • Name: Elium

    • MCP server URL: https://your-platform-name.elium.com/services/mcp, with your Elium platform name in place of your-platform-name

    Then click Continue.

  4. Claude reads Elium’s OAuth configuration and selects the settings on its own: Sign in now under Authentication, and Use Claude’s published identity under OAuth client. Keep these settings and click Add. You do not need a client ID or a client secret.

  5. Claude opens the new connector’s page. Click Connect.

  6. Elium opens. Sign in if Elium asks you to. Claude asks for two permissions: to search and read the knowledge base, and to create articles. If you want Claude to read only, clear the second one. Then click Accept.

  7. In a conversation, click + at the bottom left of the message box, open Connectors and check that Elium is switched on.

You can now search your Elium platform from a Claude conversation.

On a Team or Enterprise plan, an owner adds Elium once for the whole organisation. In Organization settings > Connectors, the owner clicks Add, chooses Custom > Web, then completes steps 3 and 4. Each member then opens Customize > Connectors, clicks Connect next to Elium and clicks Accept in Elium. See Anthropic’s instructions for custom connectors for the current screens.