Modular MCP servers for enterprise HR systems providing integration with SAP Ariba, Coupa, Jira, Salesforce, and SAP SuccessFactors
32 tools across 5 integrations (Ariba, Coupa, Jira, Salesforce, SuccessFactors). Tool naming follows verb_noun convention (get_, list_, create_, update_, approve_, reject_). Descriptions present but generic (avg ~60 chars, well below 194-char baseline). Input schemas visible with type definitions and parameter descriptions. Critical gaps: no output schemas documented, no error handling guidance, no pagination details despite list_ tools, no tool annotations (readOnlyHint/destructiveHint), duplicate tool names across modules (tool_list_invoices appears in both Ariba and Coupa), no idempotency guarantees for write operations. Mock data fallback in Ariba suggests incomplete API integration. Descriptions lack WHEN/WHY context and recovery guidance.
Add a comment to a Jira issue.
Approve a purchase requisition in SAP Ariba.
Create a standalone Salesforce task.
Get background check history from SAP SuccessFactors.
Get employee documents from SAP SuccessFactors.
Get employee profile from SAP SuccessFactors.
Get invoice payment status from SAP Ariba.
Duplicate tool names across modules: tool_list_invoices, tool_list_purchase_orders, tool_list_requisitions, tool_list_suppliers, tool_list_catalog, tool_list_approvals appear in multiple integrations (Ariba, Coupa, Salesforce) without namespace differentiation. LLMs cannot distinguish which system to query.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., invoice_id from list_invoices to pass to reject_invoice). Violates pattern:tool and pattern:response-shaper.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear READ_ONLY vs WRITE risk classification in metadata. Agents cannot determine which tools are safe to retry or have side effects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Get full details, comments, and transitions for a Jira issue.
Get leave balance for an employee from SAP SuccessFactors.
Get detailed pay stub information from SAP SuccessFactors.
Get pay stubs for an employee from SAP SuccessFactors.
Get purchase order status from SAP Ariba.
Get details for a single Salesforce task.
Get time off history for an employee from SAP SuccessFactors.
List pending approvals from SAP Ariba.
List pending approvals in Salesforce.
List catalog items from SAP Ariba.
List catalog items from Coupa.
List invoices from Coupa.
List invoices from SAP Ariba.
Search Jira issues using JQL or common filters.
List purchase orders from SAP Ariba.
List purchase orders from Coupa.
List goods receipts from SAP Ariba.
List purchase requisitions from SAP Ariba.
List purchase requisitions from Coupa.
List suppliers from SAP Ariba.
List suppliers from Coupa.
List Salesforce tasks.
Reject an invoice in SAP Ariba.
Transition a Jira issue to a new status.
Update a Salesforce task.
List tools (tool_list_*) lack pagination parameters (offset, limit, cursor) and no documented result limits. Descriptions do not specify max results returned. Risk of context window exhaustion with large datasets.
Descriptions are generic and lack WHEN/WHY context. E.g., 'Get invoice payment status from SAP Ariba' does not explain when to use this vs tool_get_invoice or tool_list_invoices, or what fields are returned. Average description length ~60 chars vs 194-char baseline.