Full LLM thinking from the 4-phase benchmark pipeline.
```json
{
"service_type": "crypto_app",
"base_url": "https://eth-mainnet.alchemyapi.io/v2",
"auth_method": "api_key_header",
"auth_config": {
"header_name": "X-API-Key",
"also_supports_url_path": true
},
"endpoints": [
{"path": "/eth_getBalance", "method": "POST", "purpose": "get account balance"},
{"path": "/eth_getTransactionByHash", "method": "POST", "purpose": "get transaction details"},
{"path": "/eth_call", "method": "POST", "purpose": "execute contract call"},
{"path": "/alchemy_getTokenBalances", "method": "POST", "purpose": "get all token balances"},
{"path": "/alchemy_getTokenMetadata", "method": "POST", "purpose": "get token metadata"},
{"path": "/getNFTs", "method": "GET", "purpose": "get NFTs for address"},
{"path": "/getTransfers", "method": "GET", "purpose": "get asset transfers"}
],
"pricing_model": {
"type": "tiered",
"details": {
"free_tier": "300M compute units/month",
"paid_tiers": "starts at $49/month",
"billing_unit": "compute_units"
}
},
"rate_limits": {
"rpm": 330,
"rps": 25,
"note": "varies by plan and endpoint"
},
"capabilities": [
"ethereum_node",
"enhanced_apis",
"nft_apis",
"webhooks",
"trace_apis",
"mempool",
"analytics"
],
"crypto_specifics": {
"supported_chains": [
"ethereum",
"polygon",
"arbitrum",
"optimism",
"base",
"solana"
],
"token_count": "all_erc20_tokens",
"has_websocket": true,
"has_orderbook": false,
"fee_structure": "compute_unit_based",
"security_features": [
"api_key_auth",
"webhook_signatures",
"rate_limiting",
"ddos_protection"
],
"enhanced_features": [
"trace_api",
"debug_namespace",
"nft_api",
"token_api",
"notify_api"
]
}
}
```
```json
{
"tests": [
{
"name": "test_eth_get_balance",
"endpoint": "/eth_getBalance",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"X-API-Key": "{api_key}"
},
"payload": {
"jsonrpc": "2.0",
"id": 1,
"method": "eth_getBalance",
"params": ["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "latest"]
},
"expected_status": 200,
"expected_behavior": "Returns ETH balance in wei for vitalik.eth address",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "result",
"type": "string",
"pattern": "^0x[0-9a-fA-F]+$"
}
},
{
"name": "test_get_transaction_by_hash",
"endpoint": "/eth_getTransactionByHash",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"X-API-Key": "{api_key}"
},
"payload": {
"jsonrpc": "2.0",
"id": 1,
"method": "eth_getTransactionByHash",
"params": ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]
},
"expected_status": 200,
"expected_behavior": "Returns transaction details for known ETH transaction",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "result.hash",
"type": "string",
"equals": "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"
}
},
{
"name": "test_alchemy_get_token_balances",
"endpoint": "/alchemy_getTokenBalances",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"X-API-Key": "{api_key}"
},
"payload": {
"jsonrpc": "2.0",
"id": 1,
"method": "alchemy_getTokenBalances",
"params": ["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"]
},
"expected_status": 200,
"expected_behavior": "Returns token balances for address",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "result.tokenBalances",
"type": "array",
"min_length": 0
}
},
{
"name": "test_alchemy_get_token_metadata",
"endpoint": "/alchemy_getTokenMetadata",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"X-API-Key": "{api_key}"
},
"payload": {
"jsonrpc": "2.0",
"id": 1,
"method": "alchemy_getTokenMetadata",
"params": ["0xA0b86a33E6411CFf7Bc207F9D52A9C2D5AE6cF41"]
},
"expected_status": 200,
"expected_behavior": "Returns metadata for USDT token",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "result.name",
"type": "string",
"min_length": 1
}
},
{
"name": "test_get_nfts",
"endpoint": "/getNFTs",
"method": "GET",
"headers": {
"X-API-Key": "{api_key}"
},
"payload": {},
"query_params": {
"owner": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"withMetadata": "true"
},
"expected_status": 200,
"expected_behavior": "Returns NFTs owned by address",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "ownedNfts",
"type": "array",
"min_length": 0
}
},
{
"name": "test_get_transfers",
"endpoint": "/getTransfers",
"method": "GET",
"headers": {
"X-API-Key": "{api_key}"
},
"payload": {},
"query_params": {
"fromAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"category": ["erc20", "erc721", "erc1155"]
},
"expected_status": 200,
"expected_behavior": "Returns asset transfers from address",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "transfers",
"type": "array",
"min_length": 0
}
},
{
"name": "test_invalid_address_error_handling",
"endpoint": "/eth_getBalance",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"X-API-Key": "{api_key}"
},
"payload": {
"jsonrpc": "2.0",
"id": 1,
"method": "eth_getBalance",
"params": ["invalid_address", "latest"]
},
"expected_status": 200,
"expected_behavior": "Returns JSON-RPC error for invalid address",
"metrics": ["latency", "error_handling", "status_code"],
"validation": {
"field": "error.code",
"type": "number",
"not_null": true
}
},
{
"name": "test_missing_auth_error",
"endpoint": "/eth_getBalance",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"payload": {
"jsonrpc": "2.0",
"id": 1,
"method": "eth_getBalance",
"params0/8 tests passed
| Test | Endpoint | Status | Latency |
|---|---|---|---|
| test_eth_get_balance | POST /eth_getBalance | 410 | 97ms |
| test_get_transaction_by_hash | POST /eth_getTransactionByHash | 410 | 51ms |
| test_alchemy_get_token_balances | POST /alchemy_getTokenBalances | 410 | 59ms |
| test_alchemy_get_token_metadata | POST /alchemy_getTokenMetadata | 410 | 51ms |
| test_get_nfts | GET /getNFTs | 405 | 61ms |
| test_get_transfers | GET /getTransfers | 405 | 50ms |
| test_invalid_address_error_handling | POST /eth_getBalance | 410 | 64ms |
| test_missing_auth_error | POST /eth_getBalance | 410 | 52ms |
Looking at these benchmark results, this appears to be Alchemy's deprecated API endpoint. All tests are failing with HTTP 410 errors indicating the service has been permanently moved.
```json
{
"overall": 18,
"dimensions": {
"token_efficiency": 0.0,
"first_try_success": 0.0,
"response_parseability": 0.0,
"error_clarity": 7.0,
"doc_quality": 2.0,
"auth_simplicity": 0.0,
"latency": 8.0,
"consistency": 0.0
},
"pricing_normalized": {
"maker_fee_bps": null,
"taker_fee_bps": null,
"withdrawal_fee_usd": null,
"free_tier_requests": null
},
"issues": [
"Service completely deprecated - all endpoints return HTTP 410",
"Zero functional endpoints for blockchain data retrieval",
"Documentation points to non-functional domain (alchemyapi.io)",
"HTTP method mismatches (GET vs POST requirements)",
"No security headers present in responses"
],
"recommendations": [
"Migrate to g.alchemy.com as indicated in error messages",
"Update API documentation to reflect current endpoints",
"Fix HTTP method specifications for REST endpoints",
"Implement proper error handling for deprecated services",
"Add security headers for production readiness"
]
}
```
**Analysis Summary:**
- **Complete service failure**: All 8 tests failed due to deprecated endpoints
- **Clear migration path**: Error messages properly direct users to new domain
- **Good latency**: 50-97ms response times when functional
- **Poor agent experience**: Zero success rate makes this unusable for automated systems
The service gets credit only for clear error messaging and low latency, but fails on all functional dimensions since no blockchain data can be retrieved.
Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.
<a href="https://prowl.world/service/alchemy-ethereum">
<img src="https://prowl.world/badge/alchemy-ethereum.svg" height="56" alt="Agent-readiness on Prowl">
</a>
See operational metrics, LLM evaluations, agent readiness, and more.
Open in Dashboard