# X1-BaaS Scraping API

> Stealth scraping API for AI agents. Clean Markdown from any URL. x402 crypto payments.

- name: com.tazpal/x1-baas
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 76/100 flags: no-repository
- quality: 92/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.tazpal%2Fx1-baas
- tools: https://api.protogrid.dev/v1/servers/com.tazpal%2Fx1-baas/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "x1-baas": {
      "type": "http",
      "url": "https://api.tazpal.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 85
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-97% ~updated-53d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 92/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 3 of 3 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 825 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 3, about 825 tokens to load them all
- tool set hash: a5956e9ca82246f5aae8c3c9437f014a
- badge: [![protogrid quality](https://protogrid.dev/badge/com.tazpal/x1-baas.svg)](https://protogrid.dev/servers/com.tazpal/x1-baas)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://api.tazpal.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9745763)

## Packages

_none_

## Tools (3)

- `get_pricing`: 
    Check current pricing and payment requirements for the BaaS scrape engine.

    Returns pricing info, supported networks, and payment instructions.
    No authentication required.

    Returns:
        Current pricing details and payment instructions.
    
- `scrape`: 
    Scrape a URL and return content in your preferred format.

    Supported output formats:
    - markdown (default): Clean LLM-ready Markdown text
    - screenshot: PNG/JPEG image of the page
    - pdf: PDF document of the page
    - csv: Table data extracted as CSV
    - html: Sanitized HTML with scripts/ads removed

    This tool handles:
    - JavaScript rendering (SPA, dynamic content)
    - Anti-bot bypass (Cloudflare Turnstile, Datadome)
    - DOM cleaning (strips scripts, nav, footer, ads)
    - HTML-to-Markdown conversion (Mozilla Readability engine)
    - Automatic retry with escalating wait strategies
    - Domain cooldown to avoid rate-limiting
    - Response caching (5 min TTL)

    Args:
        url: The URL to scrape (must start with http:// or https://)
        output: Output format: "markdown" (default), "screenshot", "pdf", "csv", "html"
        wait_for_selector: Optional CSS selector to wait for before extraction (e.g., ".article-content")
        timeout_ms: Navigation timeout in milliseconds (default: 20000, max: 120000)
        block_media: Block images/fonts/video for faster loading (default: true)
        wait_strategy: Wait strategy: "default", "spa", "heavy", "cloudflare" (auto-detected if omitted)
        retry: Enable automatic retry on failure (default: true)
        bypass_cache: Skip cache, force fresh scrape (default: false)
        javascript: Custom JavaScript to execute after page load (e.g., "window.scrollTo(0, 1000)")

    Returns:
        Content in the requested format, or an error message.
    
- `server_status`: 
    Check the BaaS engine health and operational status.

    Returns browser status, uptime, x402 payment mode, and context count.

    Returns:
        Server health and diagnostic information.
    
