Identify the bound action name in the AL extension or the standard API v2.0 metadata: the action is exposed at <entityEndpoint>(<key>)/Microsoft.NAV.<ActionName>
POST to the bound action URL with an empty JSON body {} if the action has no parameters, or a JSON object matching the action's parameter schema
Authenticate using OAuth 2.0 (Azure AD app registration with Dynamics 365 Business Central delegated or application permissions) and include the Bearer token
Inspect the HTTP response code: 204 No Content indicates a successful action with no return value; 200 with a body indicates a return value
For custom API pages built with AL, confirm the action is marked with the [ServiceEnabled] attribute in the page extension or API page codeunit — otherwise the action is not exposed over OData
Known gotchas
Bound action URLs are case-sensitive in the Microsoft.NAV.<ActionName> segment; a typo returns 404, not a descriptive error
Business Central is deprecating OData UI page endpoints (legacy /Page/ URLs) in a future wave; build integrations against /api/v2.0/ or custom API pages, not legacy OData UI pages
An unbound action (codeunit-level) follows a different URL pattern and is not attached to a specific record key — do not confuse bound and unbound action URL structures
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp