Deep code insight for Business Central. For you, and for your AI agent.
.app packages, building one graph across modules, events, interfaces, and extensions.
One code graph for you and your AI agent. Prism for AL maps your entire solution into a unified code graph. Trace execution flows interactively, review complex logic, and power your AI agent with instant MCP queries.
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.
Prism on your own code, free for 14 days
Extensive code graph
Gain deep code insights and visualize procedural control flows: inbound and outbound flow graphs, event publishers and subscribers, triggers and properties.

MCP server for AI agents New
Give coding agents the same graph-based insight: flows, references, reachability and dependencies
Total solution overview
Module dependency graph, module overview, object index and more
Semantic search
Find usages, find built-in function usages, semantic filtering, and much more
Rich code browsing experience
Extended object view, semantic code coloring, Visual Studio Code integration, etc.
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_buildal_compileal_publishal_downloadsymbolsal_getdiagnosticsal_symbolrelations
Both
Find a symbol by name
al_symbolsearchfind_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_flowsfind_shortest_pathfind_reachability_set
- Consequences
find_commitsfind_rimdfind_user_actions
- Structure
find_referencesfind_extensionssearch_object_outlineget_module_graph
Question by question
- Answers it
- Partly
- No
| 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 | Yesfind_symbolsRegular expressions, every module including packages, paged |
Yesal_symbolsearchPartial match, at most 200 results |
PartlyLiteral matches only |
| Every reference to a symbol, classified by how it is used | Yesfind_referencesAssignment, transfer and parameter flags, as metrics, summary or tree. |
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 |
Partlyal_symbolrelationsOne hop only. |
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 | Yesfind_reachability_setOne call, not three result sets to compare: fewer tokens. |
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 |
Every Prism tool, grouped by what it does, in the MCP server manual
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.
Four questions, one workspace
What a reviewer asks, and how to check the answers
Asked of the LearnPrism workspace behind every screenshot on this page: 19 apps,
8,794 objects, Microsoft's Base Application among them. The counts below are
this workspace's; in yours, Prism counts your code.
Modify
Who modifies Cust. Ledger Entry?
29procedures and triggers modify it
A question that takes a developer an afternoon with a text search, because a modify is not a string to search for:
it is a Modify, with or without triggers, reached through calls, events and interfaces.
Asked through Prism, it is one call. Out of 10,373 places that can lead to that modify, the agent gets the 29 and never reads the rest.

Commit
Which of them can also commit?
22procedures modify it and can reach a commit
The same question, and the code must also be able to reach a Commit. That is
the set a reviewer wants: a ledger entry modify and a commit in one flow is how half-applied entries end up in
the database.
One of them is ProcessElectronicPayment in codeunit CheckManagement. Its only reachable
Commit sits in RemoveCreditTransfers, one call down.

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?
3ways in to ProcessElectronicPayment
Two page actions and a report:
- Void Payments on the Payment Journal
- Transmit Payments on the Payment Journal
- 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.

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.
- 02CommitWhich of them can also commit?
- 03User actionsCan a user get there?
- 01ModifyWho modifies Cust. Ledger Entry?

More screenshots 3Fewer screenshots

RemoveCreditTransfers.
Find Shortest Path shows how it is reached.

Credit Transfer Entry
and Credit Transfer Register.

Payment Journal and one report. Three entry
points, all of them checkable.
Connect
Connect your agent in a few minutes
Install the Connector. In Visual Studio Code, the
Prism for AL Connector
registers Prism's MCP server for any folder with an app.json, so GitHub Copilot finds it
with no mcp.json to write. It also tells Copilot when to use Prism's tools instead of text search.
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.

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. Find usages shows only the direct callers. The inbound flow-graph traces every path that leads there, so an indirect caller doesn't slip past.
Use the Outbound flow-graph of a procedure or trigger to visualize what happens when the procedure or trigger executes.

ProcessElectronicPayment.

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.


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.

ProcessElectronicPayment can reach an explicit call of Commit.
Click the Commit button to see where the Commit gets called.

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.

ProcessElectronicPayment.
Click e.g. Delete to see which two tables data is deleted from.

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.


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

Total solution overview
Open a solution the way that suits you, then see what it is made of: its modules, how they depend on each other, its translations and every object.
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 file: Opens a Visual Studio Code
.code-workspacefile. - Open from BC: Opens a solution from a running Business Central service.
- Open folder: Opens a folder of Visual Studio Code projects or
.alsource files and packages (.app). - Open package: Opens a single package (
.appfile).
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

Module graph
See how your modules depend on each other
app.json names only a module's direct dependencies, and what those depend on stays out of sight.
Prism draws the whole graph for your solution, including propagated dependencies such as Application.
- Visually traverse dependencies
- Propagated dependencies (e.g. Application)
- Modules with only symbols marked with asterisk (*)
- Flexible display options, e.g. version constraints

Translations
Translation files overview and insight
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 lists the XLIFF files that apply to each module and shows which translation wins.


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.


sales*setup), object number, object number ranges or combine with '|'.

Rich code browsing experience
Read code faster: an object view with its extensions inlined, semantic colouring, an outline and its dependencies, and Visual Studio Code one step away.
Object view
Designed so you get insight quicker
Structured and colourful, packaged with information not available in the source code.





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.

Group Member Submissions before
VATReturnStatus.

Group Member Submissions
before base page's VATReturnStatus.
Semantic colouring
Read code faster with semantic colours
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.
Dependencies
Know an object by what it uses and what uses it
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

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.


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.


Semantic search
Find usages of anything from anywhere, see where built-in functions are called, search events, and explore the data model visually.
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.

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.



Event search
Find events fit for your purpose
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.

on*notification.

OnAfterNotificationSent: raised twice and subscribed once.
Table relations
Explore your data model visually
Understanding the data model is crucial for efficient AL development. With 1,500+ 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

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
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.
Džoka MitrovSwissSalary Everything I need for AL code analysis in one tool. And it’s blazing fast.
Jurica BogunovicTheta Prism for AL is irreplaceable. Best solution analyzer since … I guess since Prism for C/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.
Filip CrombezNavitrans Prism for AL has some unique features to discover your full AL stack which is not possible with Visual Studio Code.
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.
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- €37 1–4 users
- €32 5–19 users
- €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.


