A Spring Boot-based MCP server that provides tools for interacting with Salesforce via REST APIs, supporting user impersonation through JWT Bearer OAuth flow.
Three tools with clear verb-noun naming (describe_, create_, soql_) and adequate descriptions (100-150 chars each). All parameters have type strings and descriptions. However, critical gaps: no output schemas documented, no error handling guidance, no parameter constraints (enums, ranges), and descriptions lack actionable context (when to use, what to expect). The fieldsJson parameters accept free-form JSON strings without validation hints. No mention of pagination, result limits, or field filtering. Security concern: targetUsername parameter enables user impersonation without documented permission checks or audit trail. Tools are directly visible in source with @McpTool annotations, so no inference penalty applies.
Creates a new Salesforce record (Account or Contact). Validates that every field in fieldsJson is createable before submitting. Returns the new record ID.
Returns the schema of a Salesforce SObject (e.g. Account, Contact), including all field names, types, and which fields are createable or updateable.
Runs a SOQL SELECT query against a Salesforce object and returns matching records. Accepts a JSON array of field names to retrieve.
No output schemas documented. LLMs cannot infer what fields to expect from responses, forcing them to guess at downstream field names and breaking tool chaining.
fieldsJson parameters accept arbitrary JSON strings with no validation hints, format constraints, or examples of valid structure. LLMs will hallucinate invalid JSON.
targetUsername parameter enables user impersonation without documented permission checks, scope declarations, or audit trail. No indication of who can impersonate whom or what compliance controls exist.
Error handling returns generic JSON error objects with no recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No pagination, result limits, or field filtering documented. soql_query could return thousands of records, exhausting context window. No mention of max results or cursor-based pagination.