Attest and AI agents¶
CYBO Attest publishes an MCP server at https://attest.ulapcybo.app/mcp. Connect it to Claude, Claude Code, VS Code, or any other MCP client and the agent can work your authorization pipeline the way you do in the console: see where each build stands, start scans, read findings, plan fixes, draft justifications, and send a version toward review. It signs in as you, so it can do exactly what your account can do and nothing more.
This page covers what the server offers and when it is worth using. For setup, pick a client guide at the bottom.
What the server offers¶
The server exposes the Attest pipeline as tools an agent can call. Grouped by stage:
| Stage | What the agent can do | Tools |
|---|---|---|
| Onboard | List the repositories Attest can see, register one as an application, choose which Dockerfile to build, retry provisioning | list_github_repositories, add_github_repository, choose_dockerfile, retry_provisioning |
| Scan | Start a scan, follow its runs and jobs, read logs, pull the evidence package | start_scan, get_application_progress, list_scan_jobs, get_scan_job_log, get_scan_evidence |
| Understand | List findings, explain one in plain language, see what changed between scans, read a gate and the controls behind it | list_findings, explain_finding, get_finding_change, explain_gate, explain_gate_controls |
| Fix | Get an ordered fix plan naming the approved base tag and package versions, get a corrected Dockerfile, apply it | plan_fixes, get_dockerfile_fix, use_fixed_dockerfile, list_base_images |
| Justify | Draft a justification a Security Control Assessor can check, submit it, apply approved ones, withdraw one | draft_justification, propose_justification, apply_justifications, withdraw_justification |
| Authorize | Read security posture against the gates, see which applications are ready, request authorization, read the decision | get_security_posture, list_authorization_candidates, request_authorization, get_decision |
Two things the server deliberately does not offer. Approving or rejecting a build stays with a named Security Control Assessor in the console; no tool can do it. Platform and organization administration also stay in the console. The full tool list with read and write markings is in Claude: Deep Dive.
Why connect an agent¶
The work moves to where developers already are. Most of what Attest asks a developer to do happens between scans: read the worklist, understand a finding, change a Dockerfile, write a justification, rescan. Each of those is a trip to the console. With the server connected, the developer asks for it in the chat or terminal they already have open, and the answer arrives next to the code it refers to.
Findings get explained, not just listed. explain_finding and explain_gate return the reasoning Attest's explainable AI produced, in plain language. An agent can take that, look at the repository, and say which file and line it applies to. That is the difference between "CVE in libxml2" and "the vulnerable parser is pulled in by the PDF export route; here is the patch."
Fixes are concrete. plan_fixes names the approved base image tag to rebuild on and the package versions to move to, in order. A coding agent can apply that plan to the repo, run the tests, and start the rescan without a person copying values between windows.
Justifications get written once, properly. Drafting a justification that an assessor will accept is the slowest part of the pipeline for most teams. The agent drafts it with the finding's context already loaded, the developer edits, and it is submitted with the developer's name on it.
Nothing bypasses the record. Every write the agent makes is logged with the user's name and the client that made it. The agent asks before destructive actions. Reviewers see the same package they would have seen if the developer had done it all by hand.
Use cases¶
A developer closing out a worklist. "Pull the open critical findings for this app, fix the ones in this repo, run the tests, rescan, and tell me what is left." In Claude Code that is one prompt and one review of the diff.
A developer onboarding a new service. "Add this GitHub repo to Attest, scan it, and give me the criticals, a fix plan, and the posture summary." The agent registers the repo, waits for provisioning, scans, and reports. A GitLab repo is added in the console instead, because its read token never passes through the agent; the agent gives you the link.
A team lead checking posture before a review meeting. "Which of our applications are ready to request authorization, and which gates are the others failing?" Read only, no approvals needed, runs in seconds from a phone.
A security engineer reviewing justifications. "Show me every justification submitted this week and the finding each one covers." The agent reads them; the decision still happens in the console.
A CI pipeline running a read only check. A scheduled Claude Code job pulls posture and new critical findings after each merge to main and posts the summary to the team channel. No person in the loop, no write tools allowed.
Research across applications. In Claude's Research mode: "Across all my applications, which findings recur and which base images cause them?" Dozens of read calls, one answer.
What it costs you¶
Nothing on the Attest side. The server is available to every Attest account, including the free trial, with no extra licence. The agent runs under your existing AI client subscription. Setup is a URL and a browser sign in; most clients are connected in under three minutes.
Pick a client¶
| Client | Guide | Time |
|---|---|---|
| Claude (web, desktop, mobile), individual account | Claude: Quick Setup | 2 minutes |
| Claude Team or Enterprise | Claude: Team and Enterprise Setup | Owner 2 minutes, members 1 minute |
| Claude, everything in depth | Claude: Deep Dive | Reference |
| Claude Code | Claude Code | 1 minute |
| VS Code with GitHub Copilot | VS Code | 3 clicks and a login |
Cursor, Windsurf, and the GitHub Copilot CLI use the same URL and are covered in the VS Code guide. For the permissions model and what the agent can and cannot do, see Connecting an AI agent.
Everyone needs an Attest account first, created at attest.ulapcybo.app.