Comprehensive guidance for integrating Jupiter APIs (Ultra Swap, Lend, Perps, Trigger, Recurring, Tokens, Price, Portfolio, Prediction Markets, Send, Studio, Lock, Routing).
86
Quality
84%
Does it follow best practices?
Impact
91%
1.85xAverage score across 5 eval scenarios
{
"context": "Tests whether the agent correctly implements Jupiter cross-API error handling patterns including the JupiterResult type, error code classification by category (rate limit, negative Ultra codes, positive program codes), exponential backoff with jitter, retry-only-transient policy, async state reconciliation, actionable UX error states, and graceful degradation.",
"type": "weighted_checklist",
"checklist": [
{
"name": "JupiterResult type pattern",
"description": "Defines a result type with ok boolean, optional result of generic type T, and optional error with code (string or number), message (string), and retryable (boolean)",
"max_score": 10
},
{
"name": "Rate limit classification",
"description": "Classifies HTTP 429 or code 'RATE_LIMITED' as a retryable error with appropriate code and message",
"max_score": 8
},
{
"name": "Negative code Ultra execute errors",
"description": "Identifies negative numeric error codes as Ultra execute errors; classifies specific codes (-1, -1000, -1001, -1005, -1006, -2000, -2003, -2005) as retryable and other negative codes as non-retryable",
"max_score": 12
},
{
"name": "Positive code program errors",
"description": "Identifies positive numeric error codes as program/on-chain errors that are NOT retryable (e.g., 6001 = slippage)",
"max_score": 8
},
{
"name": "Exponential backoff with jitter",
"description": "Retry delay formula uses exponential backoff (baseDelay * 2^attempt) combined with random jitter; includes a maximum delay cap",
"max_score": 12
},
{
"name": "Retry only transient errors",
"description": "The retry function only retries errors classified as retryable (transient, network, rate-limit); non-retryable errors are surfaced immediately without retry",
"max_score": 10
},
{
"name": "Response parsing with text fallback",
"description": "Parses non-ok responses by first reading as text, then attempting JSON parse, falling back to the raw text if JSON parse fails; includes the HTTP status in the error",
"max_score": 8
},
{
"name": "Transaction state reconciliation",
"description": "Tracks and reconciles async transaction states with at least three states: submitted, confirmed, and failed; checks state before declaring success to the user",
"max_score": 10
},
{
"name": "Actionable user messages",
"description": "Maps errors to user-facing actions; includes at least: retry (for transient), adjust params (for validation/slippage), insufficient balance, and rate limited as distinct actionable states",
"max_score": 10
},
{
"name": "Graceful degradation",
"description": "Includes logic for degrading gracefully when the service is unhealthy (e.g., circuit breaker pattern, health check, or fallback behavior rather than cascading failures)",
"max_score": 6
},
{
"name": "API key auth with fail-fast",
"description": "Includes x-api-key header in requests; validates the key is present at initialization and fails immediately if missing",
"max_score": 6
}
]
}Install with Tessl CLI
npx tessl i tessl-skill-index-evals/jup-ag__agent-skills__integrating-jupiter@0.0.1