Lory, Lorikeet Security's AI pentester

Lory is the AI pentester living inside the Lorikeet Security dashboard — plans an engagement, tests your authorized scope, and writes evidence-backed findings for a human to countersign, 24/7 instead of once a year. This post introduces her properly: how she thinks, what she's tested against, and how her results compare to a traditional pentest. Then it covers the Lorikeet Security MCP server, which is how Claude Code, Cursor, or Claude Desktop read those findings and help you fix them without leaving your editor.

Most "AI pentesting" you'll see marketed right now is a vulnerability scanner with a chatbot bolted on the front — same CVE list, now with a paragraph of generated prose above it. That's not what we built. Lory plans an engagement the way a person does: recon first, then targeted probing based on what's actually exposed, then an attempt to chain anything she finds into real impact before she ever writes a finding down. And because Lory produces findings the same way our human pentesters do, the MCP server that lets Claude Code read and act on those findings works whether the finding came from Lory, from a human tester, or from your own team.

Who Is Lory?


Lorikeet Security is named after the lorikeet — a small, sharp, brightly-colored parrot. Lory is our mascot's namesake given a job: an offensive security agent that operates inside your portal, not a support chatbot that answers questions about your findings after the fact. The distinction matters. Lory doesn't wait for you to ask "is this endpoint vulnerable" — she goes and finds out, the same way a contracted pentester would, and brings back evidence.

What she is not: a wrapper around a scanner that summarizes CVE output with an LLM. Her toolbelt runs actual reconnaissance and exploitation attempts against your infrastructure, her technique selection is driven by what's actually exposed rather than a fixed checklist, and every finding she produces is checked by a person before it's real. She is scope-gated by design — she only touches assets you've explicitly authorized — and non-destructive by default, meaning her exploitation techniques are chosen to prove impact without breaking anything.

How Lory works, step by step

Step 1

Discover

Subdomain enumeration, technology fingerprinting, exposed service identification across your in-scope assets.

Step 2

Probe

Active testing for OWASP Top 10 classes, auth and access-control flaws, and misconfigurations — chosen from what's exposed, not a static playbook.

Step 3

Chain

Attempts to link individual weaknesses into a real attack path — recon → access → pivot → objective — instead of isolated, low-context CVEs.

Step 4

Report

CVSS-scored findings with evidence and AI-written remediation, mapped to a CWE and, where relevant, a MITRE ATT&CK technique.

Step 5

Human review

Held as pending_review until a Lorikeet Security pentester triages it. Nothing reaches a report without sign-off.

What Lory brings to an engagement

Multi-Stage Attack Chains

Recon → access → pivot → objective. Findings chained for real impact, not isolated CVEs.

MITRE ATT&CK Driven

Technique selection based on what's actually exposed, not a static playbook.

Adversary Emulation

Mirrors APT, ransomware, and insider TTPs against your environment.

Continuous, 24/7

Run it once or always-on. Catches drift the moment new attack surface appears.

Compliance-Mapped Reports

Every chain mapped to SOC 2, PCI-DSS, HIPAA, ISO 27001, and CMMC controls.

Safe-By-Default

Non-destructive exploitation, scope-gated tools, and human review on every finding.

What Lory Knows: The Numbers Behind the Guidance


The remediation guidance Lory writes isn't an unmoored model guess — it's grounded against Lorikeet Security's internal vulnerability knowledge base, which we import from MITRE and OWASP source material and keep query-indexed for both Lory and the kb.search MCP tool. Here's the actual breakdown, pulled straight from that database:

Vulnerability KB Entries by Source
MITRE CWE
965
MITRE CAPEC
615
OWASP ASVS
273
OWASP WSTG
96
OWASP Top 10 API
10
OWASP Top 10 Web
10
~1,969 entries total, including a small set of uncategorized/legacy imports not shown above · bar length = count relative to the largest category (MITRE CWE)

MITRE's two attack-pattern catalogs (CWE for weakness classes, CAPEC for attack patterns) make up the bulk of the volume, with OWASP's ASVS and WSTG providing structured, testable requirements on top. This is the same reference material a human Lorikeet Security pentester works from — Lory doesn't get a separate, thinner playbook.

Engagement Depths: Choosing How Far Lory Goes


Every engagement runs one of three depths. These aren't marketing tiers layered over identical behavior — each one changes what Lory actually attempts:

Surface
1–2 hours
Standard
4–6 hours
Deep
1–3 days

Bar length reflects relative depth of engagement, not a linear time scale (Deep runs 10–20× longer than Surface, not 5×).

Lory vs. the annual pentest

The honest comparison isn't "AI vs. human" — Lory's findings are human-reviewed either way. It's cadence: a scheduled, point-in-time engagement vs. something that can run continuously against drift.

DimensionTraditional annual pentestLory AI engagements
CadenceScheduled once or twice a year, booked weeks in advanceOn-demand or continuous — re-run the moment scope changes
Time to first findingTypically weeks from scoping call to report deliveryHours to days depending on depth (Surface: 1–2h, Deep: 1–3 days)
Coverage between engagementsBlind spot until the next scheduled testCatches new attack surface as it appears, if run continuously
Review modelHuman tester writes and reviews their own workAI drafts, a separate human Lorikeet Security pentester countersigns
Compliance mappingUsually a manual mapping pass after the reportFindings mapped to SOC 2, PCI-DSS, HIPAA, ISO 27001, CMMC as generated
Cost modelFixed project fee per engagementScoped by depth tier and frequency

Neither replaces the other. Lory is built to close the gap between scheduled engagements, not to be the only test you ever run. Deep engagements still route through the same human pentesters who'd run a manual test — Lory just gets them there faster and keeps working in between.

Starting an engagement

  1. Make sure the target is registered as an asset and marked in-scope. Anything outside your authorized scope is held for a human scope review before Lory will touch it, so add and confirm scope first under Manage scope.
  2. Pick the asset from the dropdown on the AI Pentester page — Lory reads its engagement type from your scope rules automatically.
  3. Choose a depth: Surface, Standard, or Deep.
  4. Optionally leave notes for Lory — credentials for authenticated testing, areas to focus on, or things to avoid.
  5. Click Request engagement. In-scope targets kick off immediately; you'll get a Teams and email notification when the report is ready for review.

Findings show up in your normal findings workflow once a human has signed off, alongside anything from a traditional Lorikeet Security engagement. That's the point — Lory is another way findings get into your portal, not a separate, siloed product.


Part 2: The MCP Server — Getting Your Data (and Lory's Findings) Into Claude Code

Everything above happens in the dashboard. The Lorikeet Security MCP server is what lets an AI agent you already work in — Claude Code, Claude Desktop, Cursor, or anything else that speaks Model Context Protocol — reach into that same data without you switching tabs. Once it's connected, you can ask Claude things like "what are my open critical findings" or "is api.acme.io in scope" and get answers pulled live from your workspace, scoped strictly to your company — a token can't see another tenant's data.

Setting it up in Claude Code

First, generate a token from the MCP Server page in your dashboard — it's shown once, so save it somewhere safe (a password manager, not a repo). Then add the server to ~/.claude/mcp.json (user-level) or your project's .mcp.json:

{ "mcpServers": { "lorikeet": { "type": "http", "url": "https://lorikeetsecurity.com/ptaas/mcp/", "headers": { "Authorization": "Bearer lkmcp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } } } }

Run /mcp in any Claude Code session to confirm the connection — you should see lorikeet come up with a green status. Claude Desktop and Cursor follow the same shape: point a streamable-HTTP MCP client at the same URL with the same bearer token in the Authorization header. Full JSON-RPC and curl examples for every method live in our MCP docs.

Treat the token like an API key. Never commit it to git or paste it into an untrusted tool. All MCP traffic is audit-logged on our end, and you can rotate a token instantly from the dashboard if you suspect it leaked.

What you can actually do with it

Every tool is invoked through tools/call, but in practice you just talk to Claude in plain English and it picks the right tool. Here's the current toolset:

ToolScopeWhat it does
pingnoneHealth check — confirms your token, company, and granted scopes.
findings.listfindings:readLists your PTaaS findings, filterable by severity, status, project, or asset.
findings.getfindings:readFull detail on one finding — description, evidence, remediation, CVSS, CWE.
findings.createfindings:writeFiles a new finding from your own agent's testing, held for human review.
kb.searchkb:readFull-text search over the OWASP/MITRE-backed vulnerability knowledge base charted above.
asm.assetsfindings:readLists your known assets with finding counts and scope verdicts.
scope.checkfindings:readChecks whether a specific host is in-scope, out-of-scope, or unknown.
retest.requestretest:requestSubmits a retest request for a finding you believe is fixed.
compliance.frameworkscompliance:readLists frameworks you're tracking (SOC 2, ISO 27001, ISO 42001, PCI-DSS) with progress.
compliance.controlscompliance:readLists controls under a framework with your current status per control.
engagement.updatefindings:writeAppends a timestamped progress note to a running AI engagement, including Lory's own.

Read scopes (findings:read, kb:read, compliance:read) are self-serve on any token you issue. Write scopes — findings:write, retest:request, tickets:write — require an explicit grant from your account manager, since they let an agent take actions on your behalf rather than just read.

The workflow that matters: fixing a finding without leaving Claude Code

This is the part worth actually adopting. Instead of reading a finding in the portal, translating it into a code change in your head, and jumping between three tabs to fix it:

  1. Pull the finding. Ask Claude Code something like "pull my open critical findings from Lorikeet." It calls findings.list, then findings.get on the one you care about to get the full description, evidence, and affected asset.
  2. Find the code. With the affected asset and evidence in context, Claude greps your actual repository for the vulnerable endpoint, query, or component — the same way it would for any bug you described to it directly.
  3. Pull remediation context. If the finding's guidance needs backup, Claude can call kb.search against the OWASP/MITRE-backed KB charted above for the specific vulnerability class (SSRF, IDOR, broken auth, whatever it is) to ground the fix in the right pattern rather than guessing.
  4. Fix it and review the diff. Claude proposes the change; you review it like any other diff before merging. Nothing here auto-merges — the write surface into your codebase is the same one you already trust.
  5. Close the loop. Once the fix ships, ask Claude to file the retest: it calls retest.request with a note on what changed. A Lorikeet Security pentester re-tests and marks the finding resolved — no portal round-trip required.

If you're running your own agent against an authorized engagement — the "bring your own AI" path — findings.create and engagement.update exist for the same reason Lory writes to pending_review: your agent can propose a finding or leave progress notes on an active engagement, but the affected asset has to pass a live scope.check first, and everything still lands in front of a human before it's real.

Practical tip: Before pointing any agent at active testing against a target, have it call scope.check first. Findings and write tools scope-check the asset automatically and will reject anything out-of-scope, but checking up front saves you a round trip and keeps your agent honest about what it's authorized to touch.

Pulling more than just findings

The MCP server isn't only a bug-fixing pipeline. A few other things it's genuinely useful for from inside Claude Code or Cursor:


Why We Built These Together

The failure mode we were trying to avoid is the one most security tooling still has: findings live in a portal, fixes live in a codebase, and a human has to be the router between them, manually, every time. Lory produces validated findings around the clock instead of once or twice a year. The MCP server means the tool you're already using to write the fix — Claude Code, in your actual repo — can read those findings, ground its fix in the same knowledge base charted above, and close the loop with a retest request, all without a copy-paste in sight.

Neither piece removes the human. Lory's findings are countersigned before they're real; Claude's fixes still go through your normal review before they merge. What both pieces remove is the friction between "we found it" and "we fixed it."

Try Lory, or wire up MCP today

Start an AI-driven engagement from your dashboard, or connect Claude Code, Cursor, or Claude Desktop to your workspace in a few minutes.

Start a Lory Engagement Read the MCP Docs
-- views
Link copied!
Lorikeet Security

Lorikeet Security Team

Penetration Testing & Cybersecurity Consulting

Lorikeet Security helps modern engineering teams ship safer software. Our work spans web applications, APIs, cloud infrastructure, and AI-generated codebases — and everything we publish here comes from patterns we see in real client engagements.