What this is

The Docentric AX Knowledge Base server connects your AI assistant directly to Docentric’s own content — documentation, blog posts, forum threads, and a set of curated answers we have authored. Think of it as giving Claude or ChatGPT a search engine for our knowledge base instead of letting it guess from general training data.

This is not an agent. It doesn’t reason, decide, or take actions. It finds relevant content and returns it with source URLs. The AI client you’re talking to — Claude, Copilot, Cursor, whatever you use — is the one that reads those results, reasons about them, and writes the answer. The server’s job is retrieval only. The AI’s job is everything else.

The practical effect: when you ask “does Docentric support ZUGFeRD invoicing?”, the AI doesn’t guess — it searches the documentation, finds the answer, and cites the source URL. You stop getting answers where the AI confidently invents feature behaviour, edition differences, or pricing details it has no way of knowing.

Is this RAG? Yes. RAG (Retrieval-Augmented Generation) is the technique of retrieving relevant documents first and then having the AI generate an answer based on them, rather than relying on what the model memorised during training. That’s exactly what this server does. The name is a mouthful, but the idea is simple: look it up, then answer.

Why I built it

Honestly, because I got tired of Claude making things up. It’s a good assistant, but it fills the gaps with plausible-sounding nonsense. This connects it to the actual docs instead.

It’s also useful for not having to dig through the docs manually during a call. That’s it. No grand vision.

It works reasonably well for most questions. It will occasionally get things wrong, miss content, or give you an outdated answer. And even when it finds the right content, it doesn’t always know what part of it actually matters for your situation — that judgement is still yours. When something goes wrong, the feedback section at the bottom explains what to do.

Connecting Claude

If you can read this page, the server is already running. You just need to tell Claude where to find it.

The MCP endpoint is at:

Claude Code

Run this once in your terminal:

Claude Desktop

Open your Claude Desktop config file and add the entry below. On Windows the config is at %APPDATA%\Claude\claude_desktop_config.json, on macOS at ~/Library/Application Support/Claude/claude_desktop_config.json.

Restart Claude Desktop after saving. The tools will appear automatically in every conversation.

Connecting ChatGPT or other clients

The server also exposes a REST API with an OpenAPI spec. Use this to connect ChatGPT Actions, Copilot Studio, Postman, or any HTTP client.

Interactive API docs

Open the Swagger UI to browse and test all endpoints in the browser:

ChatGPT Actions

  1. Go to chatgpt.com → Explore GPTs → Create → Configure → Add action
  2. Choose Import from URL and paste the OpenAPI spec URL:

ChatGPT imports all endpoints automatically. No auth required.

Postman

Import → paste the OpenAPI spec URL above → Postman generates a full collection with request body schemas.

The two main tools

In MCP, a “tool” is a named function the AI can call during a conversation. When you ask a question, the AI decides on its own whether to call a tool, which one, and with what inputs — then reads the result and uses it to write its answer. You never interact with the tools directly; you just see the final response.

Think of it like this: you ask Claude a question, Claude silently searches our knowledge base using the appropriate tool, reads the results, and then replies. From your side, it looks like a normal conversation. The tool call happens in the background.

docentric_search

The general-purpose search tool. Searches across documentation, blog posts, forum threads, and any files we’ve added to the materials directory. Applies ranking boosts to prefer accepted answers, staff-authored posts, and recently updated content.

Use it for:

  • How-to questions and step-by-step procedures
  • Troubleshooting — “why is this happening, how do I fix it”
  • Feature questions that might be answered in docs, blog, or forum
  • Looking up what version something was introduced in
  • Finding prior discussion of a topic in forum threads

Example: “How do I configure a SharePoint print destination in Docentric?”

docentric_canonical_lookup

Searches a set of hand-authored answers written by the Docentric team. The key purpose is prioritization: when multiple answers exist in the knowledge base and we want the AI to prefer one specific version, a canonical answer makes that happen. Canonical answers are only reachable through this tool — docentric_search never surfaces them.

Use it for:

  • Topics where the docs cover multiple approaches and you want the Docentric-recommended one — for example, extending a data source the Docentric way rather than the SSRS way
  • Edition comparisons (Free vs Full)
  • Product overviews and “what is Docentric” questions
  • Support model questions

Example: “What does Full Edition give you that Free doesn’t?”

If you want to be sure it uses the vetted answer, say “what’s our standard answer on X” or “what does our content say about X” — that framing steers it toward canonical.

X++ code tools

Two additional tools are available for D365FO developers who want to find, inspect, and build upon Docentric DSP (Data Source Provider) class examples. DSP classes are the X++ extension point that connects Docentric’s report engine to D365FO data — every Docentric report template is backed by one.

The tools retrieve full X++ source code from an indexed library of sample DSP classes. The AI uses that source to explain patterns, suggest modifications, or generate new code for your scenario.

The three-step workflow:

  1. Discoversearch_dsp_classes finds classes similar to what you need, by description or filter
  2. Inspectget_xpp_class fetches the full source of a specific class by name
  3. Create / Modify — the AI uses the returned source to suggest changes or generate new X++ code

The tools handle retrieval. The AI handles reasoning about the code.

search_dsp_classes

Semantic search over the indexed DSP class library. You don’t need to know exact class names — describe what you’re looking for in plain language. Optional filters narrow results before scoring:

  • base_class — only return classes extending this base (e.g. DocDataSourceProviderSrsProforma)
  • table_name — only return classes that reference this table (e.g. CustInvoiceJour)
  • method_name — only return classes that implement this method (e.g. overrideReportRunSettings)

Returns full X++ source, metadata (base class, tables referenced, methods, macros, placeholders), and a relevance score.

get_xpp_class

Exact lookup by class name — no embedding, direct database query. Use it when you already know which class you want. Returns null if the class is not indexed.

Known DSP base classes

Base class Used for
DocDataSourceProviderSrsReporting Standard SSRS reports (most common)
DocDataSourceProviderSrsProforma Proforma / invoice reports
DocDataSourceProviderMailMerge Word mail-merge documents
DocDataSourceProviderBasicReporting Basic reports (abstract base)

Example prompts

Finding a starting point for a new report

“I need to build a DSP for the Free Text Invoice report. Find me existing DSPs that work with CustInvoiceJour and CustInvoiceTrans tables.”

The AI calls search_dsp_classes with those table names in the description, reviews the returned classes, and explains what to adapt — which methods to override, which tables are already handled, which patterns to copy.

Understanding how a pattern is implemented

“How do existing DSPs implement custom placeholders? Show me a few examples.”

The AI searches for classes with placeholder-related methods, reviews the source from multiple results, and explains the pattern with concrete code references — how DocPlaceholderAttribute is used and how placeholders map to template variables.

Modifying an existing DSP

“I have DocPurchPurchaseOrderReportDSP_Sample but I need to add inventory dimension fields to the line items. How should I modify it?”

The AI fetches the full source with get_xpp_class, optionally searches for inventory dimension examples in other classes, then suggests specific modifications — which method to change, which table to join, which addCalculatedField calls to add.

Creating a new DSP from scratch

“I need a DSP for a custom report showing vendor payments grouped by payment method, with bank account details. What’s the best approach?”

The AI searches for relevant patterns, reviews the closest matches, then generates a new X++ class with explanations — which base class to extend, how to structure the XML data source, which macros to define.

Tips

Name specific tables when you know them. Table names are the strongest signal for semantic search. “DSP that uses CustInvoiceJour” finds better matches than “invoice DSP.”
Use filters for precision. If you know the base class or a specific method name, add the filter — it eliminates noise before scoring.
Describe the business scenario, not the X++ pattern. “Vendor payment report grouped by bank account” works better than “DSP using addChildRecord with nested grouping” — the semantic search finds the right classes, the AI explains the pattern.
Ask “how do existing DSPs do X.” The tools retrieve real, working code. “How do existing DSPs expose tax line data?” finds concrete examples rather than generic explanations.

Common workflows with example prompts

These are real prompts, not abstractions. Copy and adapt them.

Answering a feature question during a call

“Does Docentric support ZUGFeRD invoicing? Which edition do you need?”

The AI calls docentric_search, finds the relevant documentation or blog content, and returns the answer with edition information and a source URL you can read back to the prospect or paste into an email.

ZUGFeRD is specific enough that the search will find the exact docs page if we’ve written about it. If we haven’t, the AI should say so — it won’t invent an answer about a feature that’s not in the content.

Troubleshooting a customer’s problem

“A customer is getting a SharePoint access token error when saving reports. What does the forum say?”

The AI searches forum content — staff replies and community threads — finds relevant discussion, and summarises the resolution. It will tell you if it finds an accepted answer vs. a general discussion.

Tip: mention “forum” explicitly if you specifically want forum threads. Otherwise the AI searches everything and may prioritise docs over relevant forum discussion.

Edition comparison during a sales call

“Quickly — what does Full Edition give me over Free?”

The AI hits the canonical answer for edition comparison, which is the vetted version we want to give prospects. The answer will be grounded in what we actually claim, not what sounds plausible.

Walking through a setup procedure during a demo

“How do I set up print management with multiple destinations? Walk me through the steps.”

The AI finds the print management how-to page in our documentation and summarises the steps, linking to the full page. You get something you can follow live.

Quick fact check before sending a proposal

“Does Docentric work with the cloud or on-premises version of D365FO, or both?”

The AI searches docs and canonical answers, returns the accurate answer with citations. You don’t have to remember it; you just verify it.

Finding what we’ve said about a topic before

“Has anyone asked about integrating Docentric with Power Automate? What did we tell them?”

The AI searches forum and blog content. If we’ve discussed it, you get a summary and links. If not, the AI should say “I didn’t find prior discussion of this” — which is itself useful, because it tells you this might be a gap in our canonical answers.

Comparing two approaches for a prospect

“What’s the difference between using a Word template versus the legacy SSRS report design for invoices in Docentric?”

The AI searches both topics, retrieves content about Word templates and SSRS, and synthesises a comparison. It cites both sources so you can check the specifics.

Support model question from a prospect

“What kind of support do customers get with the Free Edition? Is there a paid support tier?”

The AI uses docentric_canonical_lookup to find the vetted answer on our support model. Exactly the kind of question where we want a consistent, on-message answer rather than improvisation.

Checking language and localisation coverage

“Does Docentric support printing reports in Arabic or other right-to-left languages?”

The AI searches docs and blog for localisation and language-related content. If we’ve covered this, you get the answer with a source. If not, that’s a signal that the canonical answer set might need a new entry.

Preparing for an objection about implementation complexity

“What does a customer typically need to set up before going live with Docentric? What are the prerequisites?”

The AI searches documentation for installation and prerequisites content, summarises the key requirements. Useful before a technical deep-dive call when you want to pre-empt setup questions.

Checking what’s new for a specific release

“What’s new in the latest version of Docentric? Any recent features worth highlighting?”

The AI searches blog and documentation for release notes and update content. What it finds depends on how recently the server was re-indexed — see the limitations section for the freshness caveat.

Tips for effective prompts

Use Docentric terminology exactly. Say “print destination” not “output type.” Say “Free Edition” or “Full Edition,” not “the free version.” Say “Word template” not “Word file.” The search matches against the vocabulary we actually use in our content — the closer you get, the better the results.
Mention the edition when it’s relevant. “In Free Edition, how do I…” or “is this available in Full Edition only?” Both the search and the AI will use that context. Without it, you may get an answer that covers both editions when you only need one.
Ask “what does our content say about X” rather than “what is X.” This framing tells the AI you want retrieval from our actual content, not a general explanation. It’s less likely to blend in knowledge from elsewhere.
Break multi-part questions into separate prompts. “How does print management work, and what’s the difference between Free and Full for email sending, and can we integrate with Sendgrid?” is three questions. Ask them one at a time — each gets a focused search and a cleaner answer.
If the answer feels thin or wrong, ask “what sources did you use?” The AI can show you the specific chunks it retrieved — titles, source types, URLs. You can judge whether the retrieval was relevant before deciding whether to trust the answer.
For positioning questions, ask for the canonical version explicitly. “What’s our standard answer on the support model?” tends to route the AI toward docentric_canonical_lookup. This matters when you want the on-message version, not a synthesis of whatever it found across docs and blog.

What to do when the answer seems wrong

AI works in mysterious ways. The AI reads your question, decides which tool to call, chooses what to search for, picks which results to include, and then writes an answer — all in a single opaque step. It doesn’t show its working unless you ask. And sometimes it makes choices that, in hindsight, make no sense whatsoever.

When an answer feels wrong, incomplete, or suspiciously confident, don’t just shrug. Ask the AI to explain itself. Use this prompt right after the answer you’re questioning:

“That answer doesn’t look right to me. Can you tell me exactly what you searched, which tool you used, what results came back, and why you decided those results supported your answer?”

This forces the AI to surface what actually happened. You’ll usually find one of three things:

  • It searched for the right thing, found weak or outdated content, and used it anyway — the content is the problem.
  • It searched for the wrong thing entirely — a phrasing choice led it somewhere irrelevant — try rephrasing.
  • It found good content and then added something from its general training knowledge on top — that addition is the hallucination.

Knowing which of these happened is what makes a report useful.

Why this matters for canonical answers. Canonical answers have higher priority in search — when a vetted answer exists for a topic, the AI finds it first. Many wrong answers happen on topics where we don’t have a canonical answer yet, so the AI falls back to docs or blog content and interprets it as best it can. Reporting a gap means we can write a canonical answer and the same question gets a better result for everyone going forward.

What to send. Copy the AI’s explanation — what it searched, what came back, why it used it — along with your original question and the correct answer if you know it, and email martin.pregl@docentric.com. “The answer was wrong” is not enough to act on. “It searched for ‘email destination’ and found a blog post from 2021, then presented that as the current behaviour” — that we can fix.

What the AI does not know

Honest limitations. Knowing these saves you from trusting an answer the tool isn’t actually qualified to give.

No customer-specific data. This server has no access to our CRM, support tickets, contracts, or any per-customer information. If you ask “what did we tell Contoso about their integration issue last month,” the AI has nothing to work with.

No pricing. Pricing is not in the indexed content. If the AI gives you a number, treat it as a hallucination and ignore it. Ask sales.

Content has a refresh lag. The server indexes content when it is deployed or reindexed. If a feature shipped last week and the server hasn’t been updated since, that content won’t be there. If an answer feels outdated, check the source URL.

It does not learn from your conversations. The index is static. Asking the AI a question doesn’t update the knowledge base, train the model, or store anything for next time. Every conversation starts from the same fixed snapshot. The knowledge base also has no memory of previous sessions — it doesn’t know what other team members have asked, and it can’t recall “what we told a customer last week.”

AX 2012 is not indexed. The content covers D365FO only. If a customer is asking about AX 2012 specifically, this tool will not help and the AI may retrieve D365FO content that doesn’t apply.

It will not generate Docentric configuration for you. It can find how-to guides and summarise steps, but it has no access to a running D365FO environment. It finds instructions; you or the customer execute them.

It will not always find something. If the search returns no good results, the AI should say so rather than make something up. That’s a correct answer, not a bug.

Feedback during beta

The server is only as good as the content it indexes and the canonical answers we’ve written. Both have gaps.

Flag these specifically:

  • Questions where retrieval gave a weak or wrong answer — include the question you asked and what the AI returned. This helps diagnose whether it’s a search quality issue or a missing canonical answer.
  • Topics that should have a canonical answer but don’t — positioning questions, competitive questions, support model edge cases.
  • Workflows the tool should support but doesn’t — if you tried to use it for something reasonable and it couldn’t help, that’s worth noting.

Send feedback to martin.pregl@docentric.com. Include the question you asked and what came back — that context is what makes feedback actionable.