49
/100
prowl
Benchmarked Apr 05, 2026

EdgeOS OpenClaw API Verified

Citizen portal API for popup city applications (Edge Esmeralda, etc). Handles user registration, OTP authentication, application submission, status tracking, product selection, and payment processing. Used by AI agents to manage popup city living applications.

automationproductivity api_benchmark api_keyemail_signup
Benchmark Your API

Score Breakdown

Latency 10/10
Consistency 10/10
Parseability 10/10
Error Clarity 7/10
Token Efficiency 4/10
Documentation 3/10
Auth Simplicity 1/10
First-Try Success 0/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
```json
{
  "service_type": "rest_api",
  "base_url": "https://api-citizen-portal.simplefi.tech",
  "auth_method": "bearer_token",
  "auth_config": {
    "header": "Authorization",
    "prefix": "Bearer"
  },
  "endpoints": [
    {
      "path": "/auth/otp",
      "method": "POST",
      "purpose": "Request OTP code for authentication",
      "params": {
        "email": {
          "type": "string",
          "required": true
        }
      },
      "response_format": "json",
      "is_primary": true
    },
    {
      "path": "/auth/login",
      "method": "POST",
      "purpose": "Login with email and OTP code to get JWT token",
      "params": {
        "email": {
          "type": "string",
          "required": true
        },
        "otp_code": {
          "type": "string",
          "required": true
        }
      },
      "response_format": "json",
      "is_primary": true
    },
    {
      "path": "/applications",
      "method": "POST",
      "purpose": "Submit a popup city application",
      "params": {
        "email": {
          "type": "string",
          "required": true
        },
        "last_name": {
          "type": "string",
          "required": true
        },
        "first_name": {
          "type": "string",
          "required": true
        },
        "popup_city_id": {
          "type": "integer",
          "required": true
        }
      },
      "response_format": "json",
      "is_primary": true
    },
    {
      "path": "/applications",
      "method": "GET",
      "purpose": "Query applications by citizen and popup city",
      "params": {
        "citizen_id": {
          "type": "integer",
          "required": false
        },
        "popup_city_id": {
          "type": "integer",
          "required": false
        }
      },
      "response_format": "json",
      "is_primary": false
    }
  ],
  "pricing_model": {
    "type": "unknown",
    "details": {},
    "free_tier": null,
    "paid_tiers": []
  },
  "rate_limits": {
    "rpm": 60,
    "tpm": null,
    "daily": null,
    "concurrent": null
  },
  "capabilities": [
    "citizen_authentication",
    "popup_city_applications",
    "application_management",
    "otp_verification"
  ],
  "agent_readiness": {
    "supports_x402": false,
    "supports_streaming": false,
    "has_sandbox": false,
    "sdks": [],
    "agent_auth_methods": ["email_signup"]
  }
}
```
Plan
```json
{
  "tests": [
    {
      "name": "test_otp_request",
      "endpoint": "/auth/otp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json"
      },
      "payload": {
        "email": "test@example.com"
      },
      "expected_status": 200,
      "expected_behavior": "Returns success message for OTP request",
      "metrics": ["latency", "status_code", "response_time"],
      "validation": {
        "check_response_structure": true,
        "expect_json": true
      }
    },
    {
      "name": "test_login_structure",
      "endpoint": "/auth/login",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json"
      },
      "payload": {
        "email": "test@example.com",
        "otp_code": "123456"
      },
      "expected_status": [400, 401, 422],
      "expected_behavior": "Returns error for invalid OTP (tests endpoint structure)",
      "metrics": ["latency", "error_handling", "status_code"],
      "validation": {
        "expect_json": true,
        "check_error_format": true
      }
    },
    {
      "name": "test_applications_submit_unauthorized",
      "endpoint": "/applications",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json"
      },
      "payload": {
        "email": "citizen@example.com",
        "first_name": "John",
        "last_name": "Doe",
        "popup_city_id": 1
      },
      "expected_status": [401, 403],
      "expected_behavior": "Returns unauthorized error without valid token",
      "metrics": ["latency", "error_handling", "status_code"],
      "validation": {
        "expect_json": true,
        "check_auth_required": true
      }
    },
    {
      "name": "test_applications_query",
      "endpoint": "/applications",
      "method": "GET",
      "headers": {
        "Content-Type": "application/json"
      },
      "payload": {},
      "expected_status": [200, 401, 403],
      "expected_behavior": "Returns applications or auth error",
      "metrics": ["latency", "status_code"],
      "validation": {
        "expect_json": true
      }
    },
    {
      "name": "test_applications_query_with_params",
      "endpoint": "/applications?popup_city_id=1",
      "method": "GET",
      "headers": {
        "Content-Type": "application/json"
      },
      "payload": {},
      "expected_status": [200, 401, 403],
      "expected_behavior": "Returns filtered applications or auth error",
      "metrics": ["latency", "status_code"],
      "validation": {
        "expect_json": true
      }
    },
    {
      "name": "test_invalid_endpoint",
      "endpoint": "/nonexistent",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 404,
      "expected_behavior": "Returns 404 for invalid endpoints",
      "metrics": ["error_handling", "status_code"],
      "validation": {
        "expect_404": true
      }
    },
    {
      "name": "test_otp_missing_email",
      "endpoint": "/auth/otp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json"
      },
      "payload": {},
      "expected_status": [400, 422],
      "expected_behavior": "Returns validation error for missing required field",
      "metrics": ["error_handling", "status_code"],
      "validation": {
        "expect_json": true,
        "check_validation_error": true
      }
    },
    {
      "name": "test_application_invalid_data",
      "endpoint": "/applications",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json"
      },
      "payload": {
        "email": "invalid-email",
        "popup_city_id": "not-a-number"
      },
      "expected_status": [400, 422],
      "expected_behavior": "Returns validation error for invalid data types",
      "metrics": ["error_handling", "status_code"],
      "validation": {
        "expect_json": true,
        "check_validation_error": true
      }
    }
  ],
  "pricing_probes": [
    {
      "name": "check_rate_limit_headers",
      "description": "Check if API returns rate limiting headers",
      "endpoint": "/auth/otp",
      "method": "POST",
      "payload": {
        "email": "test@example.com"
      },
      "check": "response.headers should include rate limiting info like X-RateLimit-*"
    },
    {
      "name": "verify_usage_tracking",
      "description": "Check if API tracks usage in response headers or body",
      "endpoint": "/applications",
      "method": "GET",
      "payload": {},
      "check": "response.headers or body should indicate usage tracking"
    }
  ],
  "stress_profile": {
    "concurrent_requests": 3,
    "duration_seconds": 8,
    "ramp_up": true,
    "max_rpm": 50,
    "note": "Respecting 60 RPM limit with safety margin"
  }
}
```
Execute

0/8 tests passed

TestEndpointStatusLatency
test_otp_requestPOST /auth/otp40487ms
test_login_structurePOST /auth/login40422ms
test_applications_submit_unauthorizedPOST /applications40123ms
test_applications_queryGET /applications40122ms
test_applications_query_with_paramsGET /applications?popup_city_id=140122ms
test_invalid_endpointGET /nonexistent40422ms
test_otp_missing_emailPOST /auth/otp40422ms
test_application_invalid_dataPOST /applications40122ms
Interpret
{"multi_model": true, "models_used": ["openai", "claude_cli"], "model_scores": {"GPT-4o": {"overall": 15, "dimensions": {"token_efficiency": 5.0, "first_try_success": 1.0, "response_parseability": 10.0, "error_clarity": 6.0, "doc_quality": 1.0, "auth_simplicity": 1.0, "latency": 10.0, "consistency": 10.0}}, "Claude CLI": {"overall": 15, "dimensions": {"token_efficiency": 3.0, "first_try_success": 0.0, "response_parseability": 9.0, "error_clarity": 8.0, "doc_quality": 5.0, "auth_simplicity": 1.0, "latency": 10.0, "consistency": 10.0}}}, "averaged": true}

Agent Readiness

x402 Payments
Not supported
Streaming
No
Sandbox
None
Agent Auth
api_key, email_signup
SDKs
None listed
MCP Support
No

Vendor Profile

Full-stack popup city application management for AI agents. OTP-based auth, application submission, status tracking, and payment processing — all via REST API. Powers the Edge Esmeralda and other popup city experiences.

Features

OTP authenticationJWT session managementApplication CRUDPayment preview and creationStatus tracking by citizen or application ID

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard