Bilis
Features Pricing Docs Blog
Documentation

Reference

View raw

MCP server

Connect Claude Code, Claude Desktop, Cursor or any MCP client to Bilis in one line, and let your agent read your logs and traces while it works.

Bilis speaks the Model Context Protocol. Point an AI client at your instance and it can search your logs, open a trace as a waterfall, and tell you which service is slow — while it is working in the codebase that produced them.

There is no API key to copy. The server authenticates over OAuth: the first time your client connects, a browser opens, you sign in as yourself and approve the connection on a consent screen. The client registers itself.

Connect Claude Code

One line in your terminal:

claude mcp add --transport http bilis https://bilis.example.com/mcp

The next time you talk to Claude it walks you through signing in, and the Bilis tools are there.

Connect Claude Desktop, Cursor or anything else

Add one entry to the client's mcpServers block:

{
    "mcpServers": {
        "bilis": {
            "url": "https://bilis.example.com/mcp"
        }
    }
}

Restart the client and approve the sign-in when it opens your browser. Any MCP client works the same way — it is a standard Streamable HTTP server with OAuth, so the URL is the whole configuration. Cursor and VS Code hand back a private-use URI scheme rather than a localhost URL; those are accepted.

What your agent can do

Eight tools, all of them reads, scoped to the teams you belong to.

Tool What it does
list-teams The teams you belong to, and which one the other tools default to.
list-projects A team's projects, and whether each has ever received logs or spans.
list-services The service names a project actually sends, so the service filter is never a guess.
search-logs Log lines over a window, filtered by service, severity, a full-text term, or a trace or span id.
error-summary A window's errors folded into distinct problems, with counts and a trace id to open. The "what broke?" call.
list-traces Traces over a window, with duration and error count. Filter to failures or to anything above a threshold.
get-trace One request as a text waterfall — every span, its service, duration, status and the attributes that locate a bug.
service-latency p95 and p99 per service over a window, slowest first.

Two prompts come with them: instrument-with-bilis, which teaches a fresh assistant how to wire an app up to send here, and debug-with-bilis, which turns a reported symptom into a plan across the tools above.

Every read is a time window, and it defaults to the last hour. Pass from and to when the question is about something older.

What it deliberately cannot do

The MCP server is read-only. Your agent can read logs and traces and list teams, projects and services. It cannot send a log line, delete anything, create a project, read or issue an API key, change a setting, or start an Autofix job. Those stay in the web app, behind a real click.

The access token expires after 24 hours and refreshes silently for up to 30 days while the client keeps using it. Approving a connection is always an explicit click — Bilis has no trusted client that skips the consent screen.

Self-hosting

The server is part of the app; there is nothing extra to run. It needs one thing in the environment, and it needs it to stay the same across deploys:

PASSPORT_PRIVATE_KEY=
PASSPORT_PUBLIC_KEY=

Generate a pair with php artisan passport:keys and paste the PEM bodies into those variables. Written to disk instead, they live in a container filesystem that does not survive a deploy — and a regenerated pair invalidates every connected agent silently, with nothing in the logs to say why.