Deep code insight for Business Central. For you, and for your AI agent.

Prism for AL reads your whole solution, including the apps you only have as packages, and turns it into a code graph you can ask questions of. You use it to understand and review code. Your AI coding agent uses the same graph through Prism's MCP server.

Answers a text search cannot give

Which user actions can reach this procedure? Can it commit? Which tables does it write? Prism answers from control flow across every module, including events, interfaces and extensions, not from matching characters in files.

Rule-based, so you can trust it

Static analysis over a typed graph. The same question gives the same answer every time, with a path you can click through to the code. When Prism says a procedure can reach a Commit, the path is in the code, not in a probability.

Built for the human in the loop

The agent asks the graph. You see the same graph as flow diagrams, RIMD signatures and commit reach. Review what the agent did with the evidence in front of you, not with its summary of it.

Agentic Prism: an MCP server for AI coding agents New

Your AI coding agent is good at AL and blind to your solution: the other apps, the events, the extensions, the packages you have no source for. Prism gives it the same whole-solution view you have, as tools it can call: what calls what, which page actions lead where, whether a procedure can commit and which tables it writes, which code reaches A and B but not C, where a symbol is used and how.

Prism does the graph work and hands the agent the answer, not the files. Straighter answers, fewer tokens. And every answer is a node in the graph Prism draws, so you can check it.

Compared with the AL Language extension's own MCP server

Microsoft ships an MCP server with the AL Language extension. It is good at what it does, and it does something different: it operates the toolchain. Prism explains the solution. Most teams will run both.

AL Language extension

Operates the toolchain

Build, compile and publish the app, download symbols, and read what the compiler says.

  • al_build
  • al_compile
  • al_publish
  • al_downloadsymbols
  • al_getdiagnostics
  • al_symbolrelations

Both

Find a symbol by name

  • al_symbolsearch
  • find_symbols

Prism for AL

Explains the solution

What the code reaches, what reaches it, and what it does to your data, across every module.

Trace
  • find_flows
  • find_shortest_path
  • find_reachability_set
Consequences
  • find_commits
  • find_rimd
  • find_user_actions
Structure
  • find_references
  • find_extensions
  • search_object_outline
  • get_module_graph

Question by question

  • Answers it
  • Partly
  • No
What an agent can ask each MCP server, compared with plain text search
What the agent needs Prism for AL AL Language extension Text search
Operate the toolchain
Build, compile, publish, download symbols, read compiler diagnostics NoUse Microsoft's Yesal_build al_compile al_publish al_downloadsymbols al_getdiagnostics No
Find
An object or member by name YesRegular expressions, every module including packages, paged YesPartial match, at most 200 results PartlyLiteral matches only
Every reference to a symbol, classified by how it is used YesAssignment, transfer and parameter flags, as metrics, summary or tree. find_references NoIn the editor and the LSP server, not over MCP PartlyMisses events, interfaces and property bindings
Trace
What calls this, transitively? What does it reach? Yesfind_flows find_shortest_path PartlyOne hop only. al_symbolrelations No
Which page actions and reports lead to this code? Yesfind_user_actions No No
Can it reach a Commit? Which tables does it read, insert, modify, delete? Yesfind_commits find_rimd No No
Reaches A and B, but not C YesEvaluated server-side. find_reachability_set No No
Structure
An object with its extensions merged into one outline Yessearch_object_outline find_extensions NoBase and extensions are separate symbols No
Dependencies you only have as .app packages YesSymbols always; source when the publisher includes it PartlySymbol search; nothing structural beyond one hop No
Module and namespace dependency graph Yesget_module_graph find_namespace_dependencies PartlyDeclared app.json dependencies only No
Runs Inside Prism, or headless with StaticalPrismCmd. HTTP or stdio Headless with altool. stdio or HTTP Everywhere

Based on the AL Language extension 18.0 documentation and the standalone almcp server. The extension also ships a call-graph command line, altool graph, which computes reachability over source folders. It is not exposed to agents over MCP, does not read .app packages, and does not model table operations or commits.

Writers

Who writes to Cust. Ledger Entry?

A question that takes a developer an afternoon with a text search, because a write is not a string: it is a Modify, with or without triggers, reached through calls, events and interfaces.

Asked through Prism, it is one call. On the LearnPrism workspace behind every screenshot on this page (19 apps, 8,794 objects, Microsoft's Base Application among them) the answer is 29 procedures and triggers, in 149 ms. Behind them are 10,373 places that can lead to that write. The agent gets the 29 and never reads the rest.

An AI coding agent in Visual Studio Code answering, through Prism, which procedures modify Cust. Ledger Entry: 29, all at distance 1
GitHub Copilot in Visual Studio Code with Prism connected: nine steps, 52 seconds. All 29 came back at distance 1, so they are the actual call sites, not upstream callers. The full answer lists them grouped by object, 17 objects in all.

Commit

Which of them can also commit?

The same question, and the code must also be able to reach a Commit. That is the set a reviewer wants: a ledger write and a commit in one flow is how half a posting ends up in the database.

22 procedures, in 186 ms. One of them is ProcessElectronicPayment in codeunit CheckManagement. Its only reachable Commit sits in RemoveCreditTransfers, one call down.

An AI coding agent in Visual Studio Code answering, through Prism, which procedures both modify Cust. Ledger Entry and reach a Commit: 22 minimal witnesses
GitHub Copilot in Visual Studio Code: four steps, 35 seconds. The answer opens with the five procedures in Payment Tolerance Management that modify and commit directly, and works outwards to PostCust in Gen. Jnl.-Post Line at distance 17. Every row carries its Prism Path, so you can open it in Prism.

User actions

Can a user get there?

For ProcessElectronicPayment: 3 ways in. Void Payments and Transmit Payments on the Payment Journal, and the report Void/Transmit Elec. Pmnts.

From Void Payments to the commit: seven steps through procedures and triggers you can open. The agent noticed on its own that the commit fires from a report's OnAfterGetRecord, once per journal line.

An AI coding agent in Visual Studio Code listing, through Prism, the three user actions that reach ProcessElectronicPayment
GitHub Copilot in Visual Studio Code: eight steps, 37 seconds. Two page actions and one report, each with its Prism Path. The same answer continues with the seven-step path from Void Payments to the commit, through the report's OnAfterGetRecord trigger.

Review

Review what the agent did

Every answer the agent gets is a node in the graph Prism draws. Open ProcessElectronicPayment in Prism, and one strip of Immediate insights answers all three questions above: Commit reachable, 3 user actions, 8 tables modified. Each button opens the query behind the number.

Same rules, drawn for a person. The agent's claim becomes a picture you can check, and the picture is built by the analysis that answered the agent.

Prism for AL: Immediate insights for ProcessElectronicPayment showing Commit, 3 user actions and 8 modified tables
Commit is reachable, 3 user actions lead here, 8 tables can be modified. The agent's three answers, on one line.
More screenshots 3Fewer screenshots
Prism for AL: the one reachable procedure that commits, RemoveCreditTransfers
The Commit button: exactly one reachable place commits, RemoveCreditTransfers. Find Shortest Path shows how it is reached.
Prism for AL: RIMD query for ProcessElectronicPayment listing the tables it can touch
The RIMD buttons: 26 tables this procedure can touch. Under Delete, two: Credit Transfer Entry and Credit Transfer Register.
Prism for AL: inbound flow to ProcessElectronicPayment filtered to user actions
The UserAction button: two actions on the Payment Journal and one report. Three entry points, all of them checkable.

Connect

Connect your agent in a few minutes

Connect over HTTP. Press Start on the MCP Server page, or run the server from the command line, and the agent connects to it. It works on a workspace that is already loaded, graph already built.

Start over stdio. With a stdio entry in the project's mcp.json, the agent starts the server itself whenever you open the folder or workspace. No window, nothing to start by hand; the index is built on each launch.

Works with any MCP-capable agent: GitHub Copilot in Visual Studio Code, Claude Code, Cursor. The tools read your AL source and .app packages, and never touch a database or a tenant.

How to connect your agent

Prism for AL: the MCP client config card on the MCP Server page, with the Visual Studio Code entry ready to copy
The MCP client config card on the MCP Server page writes the entry for the client you pick, named after the workspace, and copies it to the clipboard. The whole configuration for Visual Studio Code is seven lines.

Extensive code graph

Gain deep insights into syntax, references and control flow through calls to procedures and built-in functions, event publishers/subscribers, triggers and properties.

Flow visualization

Visualize control flows at procedure and trigger level

Use the Inbound flow-graph of a procedure or trigger to visualize the control flow paths that lead to the procedure or trigger getting called. This is Find usages on steroids.

Use the Outbound flow-graph of a procedure or trigger to visualize what happens when the procedure or trigger executes.

Prism for AL: Inbound flow-graph
Inbound flow to procedure ProcessElectronicPayment.
Prism for AL: Outbound flow-graph
Outbound flow from procedure ProcessElectronicPayment.

Publishers

Find event publishers that you can subscribe to

Customizing Business Central is all about finding the right events to subscribe to. Find where the existing business logic begins, then click the EventPublisher button to find event publishers that may be reached by the business logic. Use Find Shortest Path to help you understand under which circumstances the event publisher can be reached.

Prism for AL: Immediate insights - event publishers
1. Click EventPublisher button on any procedure or trigger.
Prism for AL: Reachable event publishers
2. Browse reachable event publishers. Invoke Find Shortest Path to display flow path to the event publisher.

Commit

Can this procedure reach a commit?

When calling a procedure it is critical to know if it may reach an explicit Commit call as this could break database integrity.

Prism for AL: Immediate insights - commit
Immediate insights indicates that procedure ProcessElectronicPayment can reach an explicit call of Commit. Click the Commit button to see where the Commit gets called.
Prism for AL: Reachable committing nodes
Only procedure RemoveCreditTransfers calls Commit and is reachable from ProcessElectronicPayment. Use Find Shortest Path on the RemoveCreditTransfers node to see how the procedure is reachable from ProcessElectronicPayment.

RIMD

How does a business process use tables?

Look at the Read, Insert, Modify, Delete (RIMD) signature of a procedure or trigger to get a deeper understanding of how it works and which database trigger events you can subscribe to.

Prism for AL: Immediate insights - RIMD
Immediate insights with aggregated information about reachable RIMD operations for procedure ProcessElectronicPayment. Click e.g. Delete to see which two tables data is deleted from.
Prism for AL: RIMD overview
Credit Transfer Entry and Credit Transfer Register: the two tables ProcessElectronicPayment deletes from. Click the buttons to add more RIMD operations. Use the context menu on a table to view where the database operations take place.

User actions

Which user actions can lead to this procedure being called?

Backtrack control flow all the way back to user actions such as clicking a page action or running a report. Click the UserAction button to find which user actions potentially lead to the procedure or trigger being called.

Prism for AL: Backtrack to user actions
Click the UserAction button on any procedure or trigger.
Prism for AL: Backtrack to user actions
Three ways in, among them the report Void/Transmit Elec. Pmnts. Invoke Find Shortest Path to display a flow path from a user action to the procedure.

Shortest path

Connect the dots

No matter if a flow result originates from an outbound search (example: reachable event publishers) or inbound flow (example: backtracking to user actions), Find Shortest Path shows you the shortest control flow path between a start and an end point. Click the steps to view the code, so you can identify branching and looping statements; this will help you understand under which circumstances the flow is possible.

  • Show flow path from source to target node
  • Steps are numbered
  • Tree view provides context
  • Click on a flow node to navigate in Prism
  • Use expand/collapse buttons to get high-level overview
  • Use filter to reduce amount of data
Prism for AL: Find shortest path

Total solution overview

Open solution

Flexible options for opening a solution

We include source code of dependencies when available, so you get the full solution overview. When source code is not available for an app, we include symbol information from the .app file (most information apart from procedure and trigger bodies.)

  • Open workspace: opens a Visual Studio Code .code-workspace file.
  • Open from BC: opens a solution from a running Business Central service.
  • Open folder: opens a folder of Visual Studio Code projects or .al source files and packages (.app.)
  • Open package: opens a single package (.app file.)
Prism for AL: Open solution

Module overview

What is your solution made of?

The solution page provides a quick overview of which modules (apps) the solution consists of and how they are related.

  • Modules: metadata from app.json, number of objects per type
  • Dependencies: used by (inbound), usings (outbound), and navigation between them
  • Translations: XLIFF file overview
Prism for AL: Solution page module overview

Module graph

Tame the complexity and make sense of it all

Awareness and understanding of module dependencies is key. A picture says more than 1000 dependency declarations, so Prism generates a dependency graph for your solution.

  • Visually traverse dependencies
  • Propagated dependencies (e.g. Application)
  • Modules with only symbols marked with asterisk (*)
  • Flexible display options, e.g. version constraints
Prism for AL: Graph of dependencies between modules (app.json dependencies, application, platform) and propagated dependencies

Translations

Translation files overview and insight

See which XLIFF files apply to a module, and which translation of a label wins.

Read moreShow less

As a solution grows, it can become hard to figure out which XLIFF files apply to a module and in case of multiple translations of the same label, which translation wins. Prism for AL comes to the rescue.

Prism for AL: Translations overview
Base application translation overview: Origin tells you which app owns the XLIFF file.
Prism for AL: Translations applied
Inline view of field translation with insight into priority. In this case, the translation in LearnPrism overshadows the translation of the French language (France) app.

Object index

Filter, group and order objects as you like

Quickly locate objects with flexible object filtering. By default, objects are grouped by module and object type and modules are sorted by 'topological order' induced by the module dependencies.

Prism for AL object index grouping and sorting
Configure grouping and ordering.
More screenshots 2Fewer screenshots
Prism for AL object index
Filter objects by name with wildcards (here sales*setup), object number, object number ranges or combine with '|'.
Prism for AL object-level menu
Object context menu.

Rich code browsing experience

Object view

Designed so you get insight quicker

Structured and colourful, packaged with information not available in the source code.

Prism for AL lists the object's extensions and customizations
List of object extensions and customizations.
More screenshots 4Fewer screenshots
Quick navigation links
Quick navigation to object detail sections.
Prism for AL: Object references are annotated with their defining module
Object reference inlays for defining module.
Prism for AL: Trigger events are displayed when subscribers exist.
Trigger events are displayed when subscribers exist.
Prism for AL: Overloaded procedures are numbered and have previous/next navigation
Overloaded procedures are numbered and provide previous/next navigation.

Extended view

Inlined extension elements provide a consolidated object view

In the "Extended" view, which is the default view, we inline all declarations from extended objects as if they were included in the base object. Elements "imported" like that are marked with a merge symbol in front of the element name. Click the symbol to navigate to the extension object.

Prism for AL: Extended page shows added fields inlined
Extended view of base page shows extension object's Group Member Submissions before VATReturnStatus.
More screenshots 1Fewer screenshots
Prism for AL: Page extension adds a field to the base page with addbefore
Page extension that adds field Group Member Submissions before base page's VATReturnStatus.

Semantic colouring

Turbo charged code reading speed

Code coloured by meaning: fields, variables, parameters, procedures, and every commit and delete.

Read moreShow less

In general, developers spend a lot more time reading than writing code. This is especially true with AL, as Business Central's base application alone has around half a million lines of code. So code reading speed matters. And semantic code colouring helps.

  • Field
  • Variable (globals in italic)
  • Parameter
  • Return variable
  • Built-in method
  • Procedure
  • Object and namespace (namespaces in italic)
  • Data type
  • Commit
  • Delete

Variables, parameters and return variables holding a temporary record are underlined with a dotted line.

Prism for AL semantic code colouring

Dependencies

Tell me who your friends are and I will tell you who you are

Which objects an object uses, which use it, and how.

Read moreShow less

Understand the purpose of an object better by looking at how it relates to other objects. Answer questions like "Which pages have a certain table as SourceTable?"

  • Usings (outbound) and usages (inbound)
  • Checkmark indicates existence of kind of dependency
  • Find usages on each object dependency via context menu
  • Follow the dependency chain with each row's Go button
  • Search objects to reduce candidates
Prism for AL: object dependencies - used by and using - drill-down into actual usages

Outline

Find your way in the current object

Outlines the current object as a tree structure for overview and navigation purposes. Use wildcard filter to restrict to what you are looking for. Configure what you want to see, e.g. 'only extensions' if you want to see how a base object is extended.

Prism for AL: Object outline settings, e.g. filter an extended object to only show what is added by extensions
Filtered to show only items that are added by an extension.
More screenshots 1Fewer screenshots
Prism for AL: Object outline with filtering
Object outline.

Visual Studio Code

Browse and analyse in Prism, edit in Visual Studio Code

Seamless two-way integration between Prism for AL and Visual Studio Code gives you easy access to Prism functionality in your daily work. The integration from Prism to Visual Studio Code is enabled for any source object which is located in your Visual Studio Code workspace folder. Navigation from Visual Studio Code to Prism requires Prism for AL Connector.

From Visual Studio Code, navigate to current location in Prism for AL
From Visual Studio Code to Prism for AL.
From Prism for AL, go to line in Visual Studio Code
From Prism for AL to Visual Studio Code.

Semantic search

Find usages

Find usages of anything from anywhere

Find usages of any declaration (object, procedure, field, key, control etc) in any module across your whole solution. Right-click any declaration to invoke. Prism finds usages even in symbol files (where available). Save time by using result filters to narrow down the number of results.

Prism for AL: Find usages and filter to where a field is assigned a value
Field usages filtered to where the field is assigned a value. Invoke new Find usages directly from the usages window.

Built-in function usages

How did we get this data into the database?

Find Built-in Function Usages allows you to quickly answer questions like the one above. Select which instance methods you search for. For table functions like Insert, save time by narrowing the result to non-temporary records.

Prism for AL: Find built-in function usages result. Filter table functions usages to where the table is non-temporary.
The usages found, filtered to non-temporary records.
More screenshots 2Fewer screenshots
Prism for AL: Invoke Find Built-in Function Usages from object-level menu
How to get there, 1: invoke the function from, for example, the object index.
Prism for AL: Select built-in functions to find usages of
2: select the instance methods to search for.

Event search

Find events fit for your purpose

Search events by name pattern, then see where each one is raised and subscribed.

Read moreShow less

Developing in AL necessitates a lot of searching for appropriate integration and business events to subscribe to. Unless you are 100% familiar with an event, use Find usages on the event, so you understand exactly when and how the event is raised.

Prism for AL: Event search based on event name pattern
Search for events where name matches on*notification.
Prism for AL: Event usages - where is the event raised and subscribed?
Usages of event OnAfterNotificationSent: raised twice and subscribed once.

Table relations

Explore your data model visually

Understanding the data model is crucial for efficient AL development. With approximately 1500 tables in Microsoft's base application alone, presenting the full data model in one diagram is not an option. Instead, Prism for AL lets you explore the data model gradually.

  • Right-click the start table
  • Immediate in- and outbound table relations are shown
  • Navigate to objects and table relation definitions
  • Expand diagram by exploring in- and outbound relations
Prism for AL: Explore table relations by adding new in- and outbound relations

Try Prism for AL on your own code

Download it and press Get trial license key on its Home page. The license key reaches your inbox straight away, and the 14-day trial includes the MCP server.

Book a live demo

We take you through Prism for AL and answer your questions. Suggest a couple of times—we are pretty flexible.

7 usages of Prism for AL

  • Marije BrummelMarije Brummel's blog

    Performance troubleshooting for Business Central is impossible without the use of Prism for AL. It’s the fastest way to search across extensions for usages of fields and keys. I could not do my job without Prism for AL.

  • Suresh Kulla

    Prism for AL has significantly enhanced my efficiency over the past year by facilitating the identification of issues and the development of solutions.

  • Tine StaričMVP, Tech Adventures in Business Central

    Seriously, Visual Studio Code reference search is nothing compared to the powers of Prism for AL's code graph.

  • Jurica BogunovicTheta

    Prism for AL is irreplaceable. Best solution analyzer since … I guess since Prism for C/AL.

  • Filip CrombezNavitrans

    Prism for AL has some unique features to discover your full AL stack which is not possible with Visual Studio Code.

  • Džoka MitrovSwissSalary

    Everything I need for AL code analysis in one tool. And it’s blazing fast.

  • Filip CrombezNavitrans

    From within Prism for AL you can open the object in Visual Studio Code and the other way round! So I'm using Prism for AL as a base tool to explore and then do modifications in Visual Studio Code.

Pricing

Per named user per month, billed yearly. The size of your team sets the price for every user on the subscription.

Prices in DKK, EUR and USD
  1. €37 1–4 users
  2. €32 5–19 users
  3. €27 20+ users

Ready to sign up?

If you would like to know more before you decide, then please visit our extensive documentation or the subscription FAQ. Also, feel free to contact us with any questions or suggestions you may have.

Sign up