# MCP reference Connect to the hosted Prilog MCP endpoint with OAuth and use project-scoped tools to inspect errors, request fixes, and create pull requests. ## Connect The Prilog hosted MCP server uses **Streamable HTTP** at: ```text https://prilog.ai/api/mcp ``` Add this URL to an OAuth-capable remote MCP client, sign in to Prilog, and authorize one organization, selected projects, and the capabilities you need. Use the client's remote MCP connection flow; the endpoint is not a public unauthenticated REST API. The hosted connector works with existing projects and repositories. Complete repository setup in the dashboard or [CLI](/docs/cli/) first. You do not need to run a local MCP server or pass a monitoring DSN. ## Authorization Every tool is limited to the connection's selected projects and scopes: - `prilog:read` — list projects, inspect project status, list and read errors, and read diffs. - `prilog:ingest` — upload supplied telemetry text. - `prilog:issues` — import a public GitHub issue for the connected fork. - `prilog:fix` — request analysis and fix generation. - `prilog:pr` — create a pull request for an existing fix. Reconnect from your client to add projects or permissions. Revoke access in **Prilog Settings → Account → Connected apps**. ## Read tools Call `list_projects` first and use the returned project UUID on every other tool. Do not infer IDs from names or reuse IDs from another connection. - **`list_projects`** — no arguments. Returns authorized projects and organization identity. - **`get_status`** — required: `project_id`. Returns project identity and error/fix counts. - **`list_errors`** — required: `project_id`. Optional: `status`, `search`, `page`, `page_size`. Status is `all`, `pending`, `processing`, `completed`, `failed`, or `skipped`. Pages start at 1; page size defaults to 20 and accepts 1–100. - **`get_error`** — required: `project_id`, `error_id`. Returns the full error and current analysis state. - **`get_diff`** — required: `project_id`, `error_id`. Returns a generated diff or the current analysis state when it is not ready. Example `list_errors` arguments, replacing `PROJECT_UUID` with a returned ID: ```json { "project_id": "PROJECT_UUID", "status": "pending", "page": 1, "page_size": 20 } ``` Tool results contain `http_status` and `data`. Error-list messages longer than 1,000 characters are truncated and marked `message_truncated`; use `get_error` for full details. ## Write tools Every write requires `project_id` and a unique `idempotency_key` of 8–128 characters, such as a UUID. The requested action also needs these fields: - **`ingest_logs`** — `text`; optional `filename`. Accepts 1 byte to 1 MiB of supplied text. It cannot read a local path or download a remote URL. - **`import_github_issue`** — `issue_url`. The issue must be open and public, and match the project's connected fork and upstream base branch. - **`request_fix`** — `error_id`. Queues asynchronous analysis following the project's automation settings and billing allowance. - **`create_pull_request`** — `error_id`. Creates or returns a PR for an existing generated fix. Review `get_diff` first and publish only when the user requested it. Example `request_fix` arguments: ```json { "project_id": "PROJECT_UUID", "error_id": "ERROR_UUID", "idempotency_key": "a039ab19-63a8-46ba-b394-5f6052d11137" } ``` Generate a new key for a new requested action. Reuse the original key and identical arguments when retrying that same action. Changing arguments with an existing key is rejected. Do not rotate keys to repeat an operation with an uncertain outcome. ## Asynchronous workflow 1. Call `list_projects`, then `list_errors` and `get_error` for the selected project. 2. Call `request_fix` if the user requested analysis. 3. Report the returned error ID and review URL. Check state with `get_error`; avoid tight polling. The shared skill allows up to six checks about ten seconds apart when waiting is available. 4. When analysis completes, call `get_diff` and review the changes. 5. Call `create_pull_request` when publication is requested. Return the actual PR URL from `data.pr_url`, `data.resolution_url`, or resolution metadata. An empty diff can mean analysis is pending, processing, failed, skipped, or completed without code changes. An interrupted mutation can require support to reconcile its state; check the project/error before retrying. MCP does not provide merge or deployment tools.