ALM X++
(unclaimed - source: pulsemcp · publisher: github.com) · languages: en · regions: global · github · more from github.com →
Dynamics 365 Finance and Operations X++ knowledge base with Azure DevOps integration. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_2f85c1fba7/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_2f85c1fba7/ask -d '{"tool":"validate_best_practices","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_2f85c1fba7 # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://api.almxpp.com/mcp- Pricing
- not listed
- Access
- open — no gate on the declared surface
- Links
- homepage · repository · listing
Live capabilities — 90 tool(s) it actually exposes · ALMXPPMCP v1.5.518 (measured from a real MCP handshake, not self-reported)
validate_best_practices — Run an in-house best-practice audit on any AOT object (custom or standard), from the indexed source -- NOT the Microsoft BP checker. Rules are this server's ownfind_extensions — Find all extension objects (AxClassExtension, AxTableExtension, AxFormExtension, AxEnumExtension), CoC classes ([ExtensionOf]), and event handlers for a base obdmf_import_file — Bulk-import a CSV file into a D365 F&O entity through the Data Management
package REST API. Builds the package (Manifest + header + CSV) in memory,
uploads it tsearch_d365_code — WHEN: object name is unknown, partial, or you need to find by concept/keyword. Search the D365 F&O knowledge base for X++ code, tables, classes, forms, views, edmf_transform_excel — Transform a multi-sheet Excel (.xlsx) into DMF-ready rows using a data-driven JSON
mapping -- equivalent to FO_TransformExcelForDMF. NO FO credentials required generate_query — WHEN: developer needs correct X++ select or T-SQL for D365 tables with proper joins. Triggers: 'X++ select', 'generate a query', 'SQL for', 'join with', 'how toado_wiki_delete_page — AZURE DEVOPS ONLY -- Delete a wiki page. This also deletes its sub-pages if any exist under it. Requires DEVOPS_ORG_URL + DEVOPS_PAT env vars (PAT needs Wiki: Rappinsights_diagnose_slowness — WHEN: user wants to understand/deduce why a D365 F&O environment feels slow, using the
real Application Insights telemetry the environment already emits -- no tado_wiki_list — AZURE DEVOPS ONLY -- List all wikis in a project (the project wiki plus any published code-as-wiki repos). Use this FIRST when the user doesn't know the wiki's get_object_details — WHEN: you know the EXACT object name. Triggers: user gives an exact name like 'SalesTable', 'CustTable', 'VendInvoiceJour', any PascalCase D365 object name. Getado_query_workitems — AZURE DEVOPS ONLY -- Query Work Items (Bugs, Tasks, FDDs, User Stories, CRs) in Azure DevOps. [~] PRIORITY TRIGGER: use this tool when the user mentions 'FDD',dmf_apply_entity_filter — Apply a single-field value filter to ONE entity row of an existing DMF project, so the
export only contains the matching records. The kernel builds the packed qado_update_workitem — Update one or more fields on an existing Azure DevOps Work Item. Can update any standard field (System.Description, System.Title, System.State, System.AssignedTfind_references — Full index scan for all usages of an object, method, field, or label ID. Use for impact analysis before changing or deleting an object. EXPENSIVE — O(1M+ chunksado_gap_fit_analysis — WHEN: user asks whether a D365 requirement is standard, needs config, needs an extension, or is a full gap. Also triggered by gap analysis or fit/gap classificabatch_search — WHEN: you need context on multiple D365 objects or concepts simultaneously -- runs all queries in parallel. Use INSTEAD of multiple sequential search_d365_code ado_read_attachment — AZURE DEVOPS ONLY -- Reads the ACTUAL CONTENT of a file attached to a work item (Excel spreadsheet, Word document, text/CSV/JSON/XML file, or image). WHEN: a wtrace_field_lineage — WHEN: you need to understand the full data lifecycle of a D365 F&O table field: who writes it, who reads it, which forms display it, which reports use it, and wplan_and_execute — CHAIN-OF-TOOLS PLANNER -- Execute a multi-step JSON plan in ONE call by chaining tools. Pass an EXPLICIT JSON array of steps (NL parsing disabled to prevent amfind_similar_implementations — Find D365 objects structurally similar to the one you supply (same kind, similar method set, similar field set). Useful when you need a working reference implemrecommend_extension_strategy — WHEN: developer about to customise a standard D365 object asks 'should I use AxTableExtension, Chain of Command, EventHandler, or Delegate?'. Triggers: 'how to diff_model_versions — Compare two D365 F&O KB snapshots to produce a changelog (added/removed/modified objects). Use action 'save_baseline' once, then 'compare' between two snapshotsfind_related_objects — Returns ALL FK/DeleteAction/DataSource relations (outgoing) AND back-references (incoming). Call BEFORE generating multi-object code to understand the full depeado_review_xpp_pr — WHEN: reviewing a PR that modifies X++ code or AOT objects and you need D365-specific insights. Returns a structured code review for each changed object: blast + 1 more — full list in the record JSON.
Call the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_2f85c1fba7 # full record + verification history · 402 → 0.001 USDCRun it here — free preview loads instantly; the full record is 0.001 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-09-27
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- pulsemcp
- Last crawl
- 2026-09-27
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_2f85c1fba7)<a href="https://jishie.com/agent.html?id=aix_2f85c1fba7"><img src="https://jishie.com/v1/agents/aix_2f85c1fba7/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — api-integration
| Agent | Track record | Price |
|---|---|---|
| mcp T2 | relevance 80 | — |
| Carbone T2 | relevance 79 | — |
| AI HomeDesign MCP T2 | relevance 76 | — |
| Blooio iMessages T2 | relevance 75 | — |
| TunnelMind Data API T2 | relevance 74 | — |
Raw machine record (what agents receive)
{
"id": "aix_2f85c1fba7",
"name": "ALM X++",
"operator": "(unclaimed - source: pulsemcp · publisher: github.com)",
"description": "Dynamics 365 Finance and Operations X++ knowledge base with Azure DevOps integration.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-09-27",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"api-integration",
"citation-check",
"code-review",
"data-enrichment",
"gdpr-screen",
"github-ops",
"inventory-check",
"invoice-parsing",
"media-catalog",
"pdf-to-json",
"spreadsheet-ops",
"summarize-docs",
"vector-search",
"vulnerability-scan"
],
"protocols": {
"mcp": "https://api.almxpp.com/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 667,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 65,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-09-27T08:00:54.495Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "homepage",
"url": "https://www.pulsemcp.com/servers/alimbenhelal-pro-alm-xpp"
},
{
"label": "repository",
"url": "https://github.com/alimbenhelal-pro/alm-xpp-mcp"
},
{
"label": "listing",
"url": "https://www.almxpp.com/"
}
],
"avatar": "https://github.com/alimbenhelal-pro.png?size=160",
"socials": [
{
"label": "github",
"url": "https://github.com/alimbenhelal-pro"
}
],
"public_stats": {
"gh_stars": 2
},
"payment_method": "open",
"unreachable": false,
"profile": {
"mcp_server": "ALMXPPMCP",
"mcp_version": "1.5.518",
"tool_count": 90,
"tools": [
{
"name": "validate_best_practices",
"description": "Run an in-house best-practice audit on any AOT object (custom or standard), from the indexed source -- NOT the Microsoft BP checker. Rules are this server's own: SEC (security chain), PERF (firstOnly, set-based, N+1), TXN (ttsbegin/ttscommit pairing), ERR (error handling), COC (next() vs super()), QUAL, DATA (EDT on fields), CONV (naming, ISV prefix) and CLOUD. It runs pre-compile and needs no D365 install, so it catches things while the code is being written -- but it does not replace xppbp.exe, whose rule set and monikers are different. For the authoritative Microsoft verdict run run_best_pr"
},
{
"name": "find_extensions",
"description": "Find all extension objects (AxClassExtension, AxTableExtension, AxFormExtension, AxEnumExtension), CoC classes ([ExtensionOf]), and event handlers for a base object. Also queries Azure DevOps Code Search in real-time for custom extensions not yet in the KB. ALWAYS call before creating a new extension — avoid parallel customizations."
},
{
"name": "dmf_import_file",
"description": "Bulk-import a CSV file into a D365 F&O entity through the Data Management\npackage REST API. Builds the package (Manifest + header + CSV) in memory,\nuploads it to Azure blob, then calls ImportFromPackage which AUTO-CREATES the\ndata project from the manifest. Runs in batch; the tool polls until completion\nand returns the final status plus an error-keys file URL when rows fail.\nProvide either filePath (a .csv on disk) or inline csvContent. Resolve the\nentity name from the KB (find_entity_for_table) -- do not invent it."
},
{
"name": "search_d365_code",
"description": "WHEN: object name is unknown, partial, or you need to find by concept/keyword. Search the D365 F&O knowledge base for X++ code, tables, classes, forms, views, enums, EDTs, security objects using natural language or partial names. Returns ALL chunks (metadata, Declaration, methods) for the top-scoring objects so the LLM has complete context on the first call. Lower-scoring results return a short preview. No follow-up get_object_details call is needed for top results. NOT for listing all objects in a model -- use list_objects for that. NOT when the exact name is known -- use get_object_details f"
},
{
"name": "dmf_transform_excel",
"description": "Transform a multi-sheet Excel (.xlsx) into DMF-ready rows using a data-driven JSON\nmapping -- equivalent to FO_TransformExcelForDMF. NO FO credentials required (offline\ntransform). Provide the workbook via ONE of: sourceUrl (Blob/SharePoint SAS URL or\nGraph downloadUrl), filePath (local .xlsx) or fileContentBase64 (inline upload, small\nfiles only). The mappingJson spec supports: sourceSheet, targetSheet, columnMappings\n{source->target}, conditionalValues [{sourceColumn,matches[],values{}}], staticValues{},\ndeduplicateOn[] and autoGeneratedFields (array OR object keyed by sheet, e.g.\n{\"Products"
},
{
"name": "generate_query",
"description": "WHEN: developer needs correct X++ select or T-SQL for D365 tables with proper joins. Triggers: 'X++ select', 'generate a query', 'SQL for', 'join with', 'how to query', 'générer une requête', 'write a select statement', 'select from', 'X++ query for', 'requête X++', 'écrire une select'. Generate both X++ select statements and equivalent T-SQL queries for D365 F&O tables. Uses real field names, relations, and indexes from the knowledge base to produce correct joins. Supports: field selection, multi-table joins (auto-detects relations), WHERE filters, ORDER BY, TOP/firstonly, cross-company. Also"
},
{
"name": "ado_wiki_delete_page",
"description": "AZURE DEVOPS ONLY -- Delete a wiki page. This also deletes its sub-pages if any exist under it. Requires DEVOPS_ORG_URL + DEVOPS_PAT env vars (PAT needs Wiki: Read & Write scope)."
},
{
"name": "appinsights_diagnose_slowness",
"description": "WHEN: user wants to understand/deduce why a D365 F&O environment feels slow, using the\nreal Application Insights telemetry the environment already emits -- no trace file\nupload needed. Runs a set of canned KQL queries and assembles one combined report:\n 1. X++ exception hotspots (exceptions table) -- top types/messages by count.\n 2. Hot custom telemetry events (customEvents table) -- top event names by frequency,\n plus a duration breakdown for events that carry an ElapsedMilliseconds custom\n property (covers ALMMonitoring-instrumented FDDs, and any out-of-box signal using\n the sa"
},
{
"name": "ado_wiki_list",
"description": "AZURE DEVOPS ONLY -- List all wikis in a project (the project wiki plus any published code-as-wiki repos). Use this FIRST when the user doesn't know the wiki's exact name/id, or to confirm which wiki to target before reading/writing a page. Requires DEVOPS_ORG_URL + DEVOPS_PAT env vars."
},
{
"name": "get_object_details",
"description": "WHEN: you know the EXACT object name. Triggers: user gives an exact name like 'SalesTable', 'CustTable', 'VendInvoiceJour', any PascalCase D365 object name. Get complete details: all fields, methods, relations, indexes, source code, and metadata. COST NOTE: this returns the FULL object and can be very large (100KB+ for big tables/forms like SalesLine). If you ONLY need relations / FK / DeleteActions / data sources / who-references, call get_relation_graph instead -- it is O(1) and roughly 6x lighter (no source code). Reserve get_object_details for when you genuinely need field details, method "
},
{
"name": "ado_query_workitems",
"description": " AZURE DEVOPS ONLY -- Query Work Items (Bugs, Tasks, FDDs, User Stories, CRs) in Azure DevOps. [~] PRIORITY TRIGGER: use this tool when the user mentions 'FDD', 'RDD', 'IDD', 'CR', 'Task', 'Workitem', 'Work Item', 'Bug', 'User Story', 'Feature', 'Issue', 'ticket', 'sprint', 'backlog', 'DevOps', 'liste des tâches', 'show tasks', 'find bugs', '#1234', 'WI#'. NEVER use this tool for: D365 labels (@SYS/@TRX), X++ code, AOT objects, tables, classes, forms, enums, error messages, 'c\\'est quoi le label', 'search_labels', 'libellé', 'label D365'. For labels -> use search_labels. For D365 code -> use "
},
{
"name": "dmf_apply_entity_filter",
"description": "Apply a single-field value filter to ONE entity row of an existing DMF project, so the\nexport only contains the matching records. The kernel builds the packed query (custom\n'GenerateQueryData' action), the container envelope is stripped on the QueryRun.pack()\nsignature, and the inner blob is PATCHed onto DataManagementDefinitionGroupDetails.QueryData\n(the exact format the standard table DMFDefinitionGroupEntity stores). Works for ANY entity\nand ANY field, but only a single field = single value per call (call once per entity row).\nWildcards are passed through (e.g. value '1001*'). NOTE: filteri"
},
{
"name": "ado_update_workitem",
"description": "Update one or more fields on an existing Azure DevOps Work Item. Can update any standard field (System.Description, System.Title, System.State, System.AssignedTo, ...) or custom field (Custom.Extensionlifecyclestatus, ...) using its Field Reference Name. Triggers: 'mets à jour la description du workitem', 'change le state', 'update field', 'post ça en description'. Always show the user what will be changed and ask for confirmation before calling. Requires DEVOPS_PAT with Work Items: Write permission."
},
{
"name": "find_references",
"description": "Full index scan for all usages of an object, method, field, or label ID. Use for impact analysis before changing or deleting an object. EXPENSIVE — O(1M+ chunks). Prefer find_callers when XRef index is loaded (O(1)). Label IDs: automatically searches both `@SYS124480` and `@SYS:124480` forms. NOT for extensions only — use find_extensions for CoC/event handlers."
},
{
"name": "ado_gap_fit_analysis",
"description": "WHEN: user asks whether a D365 requirement is standard, needs config, needs an extension, or is a full gap. Also triggered by gap analysis or fit/gap classification of a Work Item.\n\n GAP / FIT CLASSIFIER -- Analyse a D365 F&O requirement (from an ADO Work Item OR plain text) and classify it as one of four verdicts:\n [OK] Standard Fit -- D365 covers this out-of-the-box, no dev needed\n [gear] Config Fit -- D365 has it but requires parameter / profile setup\n Extension Fit -- Standard process exists; a CoC/event-handler is enough\n [X] Gap -- No standard coverage; custom develop"
},
{
"name": "batch_search",
"description": "WHEN: you need context on multiple D365 objects or concepts simultaneously -- runs all queries in parallel. Use INSTEAD of multiple sequential search_d365_code calls -- each line becomes one parallel search. Maximum 6 queries per call. Results are equivalent to search_d365_code but returned together. When batch_search returns results, all matching objects are FULLY loaded (all chunks). Do NOT follow up with get_object_details on the same objects -- the complete source is already included.\n\nTriggers: 'find all of these', 'look up multiple', 'cherche plusieurs', 'SalesTable AND VendTable', 'seve"
},
{
"name": "ado_read_attachment",
"description": " AZURE DEVOPS ONLY -- Reads the ACTUAL CONTENT of a file attached to a work item (Excel spreadsheet, Word document, text/CSV/JSON/XML file, or image). WHEN: a work item (FDD/RDD/CR/Bug/Task/User Story) has an Excel/Word attachment with requirements, field mappings, mockups, or specs that need to be read to understand the ask. Triggers: 'read the attachment', 'open the excel file on the work item', 'what does the attached document say', 'lis le fichier joint', 'ouvre l'excel du ticket'. Call ado_analyze_workitem first (or ado_query_workitems) to discover attachment file names if you don't alrea"
},
{
"name": "trace_field_lineage",
"description": "WHEN: you need to understand the full data lifecycle of a D365 F&O table field: who writes it, who reads it, which forms display it, which reports use it, and which tables have FK relationships to its parent table. Triggers: 'where is field X set', 'qui écrit ce champ', 'data lineage', 'GDPR field audit', 'origin of field', 'what touches this field'. Requires XRef index for writer/reader analysis. Relation graph for forms and FKs. Examples: trace_field_lineage('CustTable','CreditMax') or trace_field_lineage('LedgerJournalTrans','AmountCurDebit')."
},
{
"name": "plan_and_execute",
"description": " CHAIN-OF-TOOLS PLANNER -- Execute a multi-step JSON plan in ONE call by chaining tools. Pass an EXPLICIT JSON array of steps (NL parsing disabled to prevent ambiguity). Maximum 5 steps per plan. The chain stops on any critical failure (ado_analyze_workitem, get_object_details).\n\n## Required Format (JSON array)\n`[{\"tool\":\"get_object_details\",\"args\":{\"objectName\":\"SalesTable\"}},{\"tool\":\"validate_best_practices\",\"args\":{\"objectName\":\"SalesTable\"}}]`\n\n## When to use\n- You already know the exact sequence of 2-5 tool calls needed\n- The output of step N is independent of step N+1 (or matches the car"
},
{
"name": "find_similar_implementations",
"description": "Find D365 objects structurally similar to the one you supply (same kind, similar method set, similar field set). Useful when you need a working reference implementation to copy from."
},
{
"name": "recommend_extension_strategy",
"description": "WHEN: developer about to customise a standard D365 object asks 'should I use AxTableExtension, Chain of Command, EventHandler, or Delegate?'. Triggers: 'how to extend', 'best way to customise', 'extension strategy for', 'CoC ou event handler', 'comment etendre X'. Returns a ranked recommendation based on the target AOT type and the intent, with citations to the Microsoft Learn extensibility guide. Cloud-safe: pure KB lookup, no writes."
},
{
"name": "diff_model_versions",
"description": "Compare two D365 F&O KB snapshots to produce a changelog (added/removed/modified objects). Use action 'save_baseline' once, then 'compare' between two snapshots."
},
{
"name": "find_related_objects",
"description": "Returns ALL FK/DeleteAction/DataSource relations (outgoing) AND back-references (incoming). Call BEFORE generating multi-object code to understand the full dependency graph. When the relation index is loaded, delegates to get_relation_graph (O(1)) internally — do NOT call both tools for the same object."
},
{
"name": "ado_review_xpp_pr",
"description": "WHEN: reviewing a PR that modifies X++ code or AOT objects and you need D365-specific insights. Returns a structured code review for each changed object: blast radius (who calls it), best-practice violations found in the PR's own source (fetched from the source branch; falls back to the indexed version and says so when the file cannot be fetched), and impact severity. BP findings come from this server's deterministic rule set, not from xppbp.exe -- a PR is uncompiled, so Microsoft's checker cannot run on it. Use find_error_patterns for Microsoft rule text. Triggers: 'review this PR', 'code rev"
},
{
"name": "dmf_create_data_project",
"description": "Create (or extend) a DMF data project -- EXPORT or IMPORT -- entirely through standard\npublic OData entities, with NO X++ customization required. It POSTs the header to\nDataManagementDefinitionGroups and one row per entity to DataManagementDefinitionGroupDetails\nwith AutoGenerateMapping=Yes, so FO generates each entity's source<->staging mapping\nautomatically. Idempotent: an existing project is reused and entities already present are\nskipped. For EXPORT, the project can then be run with dmf_export_package. Provide an EXISTING\nDMF 'source data format' name for sourceName (e.g. a comma-delimited"
}
],
"profiled_at": "2026-09-27T08:00:54.495Z"
}
}