Overview
Thecapabilities field in provider configuration allows you to specify:
- Unsupported methods - RPC methods the provider doesn’t support
- Limits - Block range and age restrictions
- Error rules - Custom error classification for provider-specific error codes
local_only methods are blocked by default).
Unsupported Methods
Unsupported Categories
List of method categories this provider doesn’t support. Requests for these methods will skip this provider during routing.Available categories:
debug- Debug namespace methods (debug_*)trace- Trace namespace methods (trace_*)txpool- Transaction pool methods (txpool_*)eip4844- EIP-4844 blob methodsfilters- Filter methods (eth_newFilter,eth_getFilterChanges, etc.)subscriptions- WebSocket subscriptions
Unsupported Methods
List of specific RPC methods this provider doesn’t support.
Example: Public Provider Restrictions
Limits
Limits define operational boundaries for the provider. Lasso uses these to filter providers before sending requests.Block Range Limit
Maximum block range for If a request exceeds this range, Lasso skips the provider or splits the request into smaller chunks (depending on routing strategy).
eth_getLogs and similar range queries.Block Age Limit
Maximum age (in blocks) for state methods on pruned providers.Providers with this limit are excluded for requests older than
current_block - max_block_age.Methods subject to
max_block_age limit. Typically state-reading methods.Example: Pruned Provider Configuration
- Only serves data from the last 1000 blocks
- Limits
eth_getLogsqueries to 1000-block ranges - Automatically excluded for historical state queries
Error Rules
Error rules allow you to classify provider-specific error codes for better routing decisions. Lasso uses error categories to determine retry behavior and provider health.List of error classification rules. First matching rule wins.Each rule can match by:
code- JSON-RPC error codemessage_contains- Substring in error message
category:capability_violation- Provider doesn’t support the methodrate_limit- Provider rate limit exceededrequires_archival- Request needs archival datainternal_error- Provider internal error
Error Categories
| Category | Description | Retry Behavior |
|---|---|---|
capability_violation | Method not supported | Skip provider permanently for this method |
rate_limit | Rate limit exceeded | Circuit breaker opens, retry other providers |
requires_archival | Needs historical data | Skip non-archival providers |
internal_error | Provider-side error | Retry with exponential backoff |
Example: dRPC Error Rules
Example: PublicNode Error Rules
Complete Example
Here’s a fully configured provider with all capability types:Default Behavior
Whencapabilities is omitted entirely:
- All methods are supported except
local_onlycategory - No block range or age limits
- Standard error code interpretation
- Your own full nodes
- Enterprise provider subscriptions with full support
- Initial testing before fine-tuning capabilities
Testing Capabilities
After configuring capabilities, verify they work correctly:Test Unsupported Methods
Test Block Range Limits
Test Error Rules
Trigger rate limits or capability violations and check the dashboard for correct error categorization.Best Practices
Start permissive, narrow down
Start permissive, narrow down
Begin with no capabilities configured. Monitor errors in the dashboard and add restrictions based on actual provider behavior.
Document provider limits
Document provider limits
Use YAML comments to note where capability values came from (provider docs, observed behavior, support tickets).
Match error rules to provider docs
Match error rules to provider docs
Provider API documentation often lists error codes. Create rules for rate limits, method restrictions, and data availability.
Test fallback behavior
Test fallback behavior
Verify that requests fail over correctly when a provider’s capabilities are insufficient.
Update capabilities as providers evolve
Update capabilities as providers evolve
Provider capabilities change (new methods, increased limits). Review configurations periodically.
Real-World Examples from default.yml
Archival Provider (dRPC)
Pruned Provider (PublicNode)
Limited Free Provider (Merkle)
Next Steps
Environment Variables
Configure runtime settings and API keys
Provider Configuration
Learn about provider setup and priorities