# alternative-data Two servers that look outside the market tape: X post search and general web scraping. ## `x_api` ships with an empty `env` on purpose The bearer token reaches the tool as a per-call argument read from the vault (`from vault import get; get("X_BEARER_TOKEN")`), never from the MCP subprocess environment. In a multi-tenant deployment every user gets their own token that way; putting it in `env` would hand one host-wide token to all of them. A single-tenant self-host that wants the convenience can add `"X_BEARER_TOKEN": "${X_BEARER_TOKEN}"` to the server's `env` in `mcp.json`. The tool falls back to the process environment when the argument is omitted. ## `scrape` is ours rather than `scrapling mcp` It imports `scrapling` as a library and runs under either `mcp` SDK era. The package's own `scrapling mcp` entrypoint is pinned to `mcp` 1.x and cannot start from a 2.x environment, which is the failure this server exists to avoid.