An MCP server that provides tools to query PayPal data through JDBC connections. Enables SQL queries, table discovery, and column inspection for PayPal data sources.
The PayPal MCP server has three tools with visible schemas and descriptions, but quality is inconsistent. All tools have descriptions (good), but parameter descriptions are generic, output schemas are undocumented, and error handling is minimal. The server follows a discovery + query pattern (similar to Arcade's pattern:data-query), but lacks the sophistication expected for production use. Tool names are clear and verb-prefixed (get_, run_), which is correct. However, parameter descriptions lack detail about format, constraints, and expected values. Output format is CSV (not documented as a schema structure for LLM consumption), and error messages are raw exceptions without recovery guidance.
Retrieves a list of fields, dimensions, or measures (as columns) for an object, entity or collection (table). Use the `paypal_get_tables` tool to get a list of available tables. The output of the tool will be returned in CSV format, with the first line containing column headers.
Retrieves a list of objects, entities, collections, etc. (as tables) available in the data source. Use the `paypal_get_columns` tool to list available columns on a table. Both `catalog` and `schema` are optional parameters. The output of the tool will be returned in CSV format, with the first line containing column headers.
Execute a SQL SELECT statement.
Output schemas undocumented. All three tools return CSV format but provide no documented schema structure for LLM parsing. LLMs cannot plan downstream use of results without knowing field names and types.
Parameter descriptions are minimal (1-3 words: 'The catalog name', 'The schema name', 'The table name'). Lack detail about format, constraints, allowed values, and when each is required vs optional. LLMs cannot infer if empty string is valid, whether names are case-sensitive, or how to handle special characters.
Error handling provides no recovery guidance. Code throws RuntimeException('ERROR: ' + exception message) with no categorization of error type (retryable, user-fixable, fatal) or actionable next steps for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 12 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 49 | - | v1 |
paypal_run_query description mentions valid SQL clauses (FROM, INNER JOIN, LEFT JOIN, GROUP BY, ORDER BY, LIMIT/OFFSET) in tool description rather than as documented constraints. No mention of: whether subqueries are allowed, max query complexity, timeout behavior, or how to handle SQL errors (syntax vs execution).
No pagination support documented or visible. If paypal_get_tables or paypal_get_columns return large result sets, LLMs have no limit parameter to cap results, risking context window exhaustion. Tool descriptions do not mention result limits or how many rows are returned.