Skip to main content
mcp

Lorikeet Security MCP Server

Point Claude — or any MCP-aware client — at your Lorikeet workspace and ask it questions in your own words. Nine tools cover penetration-test findings, asset inventory, scope, compliance posture and a curated vulnerability knowledge base.

endpoint
https://lorikeetsecurity.com/ptaas/mcp/
transport
Streamable HTTP
auth
OAuth 2.1 with Dynamic Client Registration, or a workspace API token
access
Hard-scoped to the company that owns the credential. No cross-tenant reads.
server name
lorikeet-mcp

What it does

The server gives an AI client read access to your security program, plus one write action: requesting a retest on a finding you believe is fixed. Every call is authenticated and strictly scoped to the company that owns the credential — there is no cross-tenant access. Tools that touch a concrete asset are checked against your scope rules before they run.

Writing to findings is not exposed to customer credentials. The findings:write scope exists for Lory's own internal engagement path and is deliberately not grantable on workspace tokens or OAuth grants. If a client offers to file findings into your workspace, it isn't using this server.

Connecting

Claude.ai and Claude Desktop (OAuth)

  1. Open Settings → Connectors → Add custom connector.
  2. Enter https://lorikeetsecurity.com/ptaas/mcp/ and add it.
  3. Claude registers itself (Dynamic Client Registration) and opens a Lorikeet sign-in page. Sign in and approve the consent screen.
  4. The tools appear in your conversation.

A grant that requests no scopes falls back to the read-only set — findings:read, kb:read, compliance:read. retest:request is never granted implicitly; ask for it explicitly if you want it.

Claude Code and custom clients (API token)

Generate a token under Dashboard → MCP Server, pick its scopes, then add it to your .mcp.json. The token is shown once at creation — only its SHA-256 is stored, so save it then.

.mcp.json
{
  "mcpServers": {
    "lorikeet": {
      "type": "http",
      "url":  "https://lorikeetsecurity.com/ptaas/mcp/",
      "headers": {
        "Authorization": "Bearer <your-token>"
      }
    }
  }
}

Verify the connection from a shell — ping needs no scope, so it works with any valid credential:

shell
curl -s -X POST https://lorikeetsecurity.com/ptaas/mcp/ \
  -H "Authorization: Bearer <your-token>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ping","arguments":{}}}'

A healthy response echoes your company id, the token prefix and the scopes the credential actually carries — the quickest way to confirm a token was issued with the permissions you expected.

Scopes

Four scopes are grantable, on both workspace tokens and OAuth grants. A credential only sees the tools its scopes allow — a tool you lack the scope for is absent from tools/list rather than failing at call time.

ScopeGrants
findings:readRead findings, assets, and scope verdicts
kb:readSearch the vulnerability knowledge base
compliance:readRead compliance frameworks and control status
retest:requestSubmit a retest request against a finding
(none)ping requires no scope

Tools

ToolScopeTypeDescription
findings.listfindings:readread List pentest findings. Filter by severity, status, or asset. Returns at most 50 rows (default 25).
findings.getfindings:readread The full body of one finding: description, attack scenario, remediation, CWE, CVSS and evidence.
asm.assetsfindings:readread The distinct assets appearing on your findings, each with its current scope verdict.
scope.checkfindings:readread Whether a domain, URL or IP is in_scope, out_of_scope or unknown for your company.
kb.searchkb:readread Free-text search of the knowledge base (OWASP ASVS, WSTG, Top 10; MITRE CWE and CAPEC). Up to 25 hits (default 10).
compliance.frameworkscompliance:readread Readiness summary per framework — SOC 2, ISO 27001, ISO 42001, PCI DSS — with control counts and percent complete.
compliance.controlscompliance:readread Controls for one framework with your status, owner and due date. Call compliance.frameworks first for the framework keys.
retest.requestretest:requestwrite Ask the Lorikeet team to re-test a finding. Does not modify the finding. Re-requesting one that already has an open retest returns the existing request.
pingnoneread Health check. Returns server time, your company id, the token prefix and the granted scopes.

Limits and response shapes

  • List calls are capped. findings.list returns at most 50 rows, kb.search at most 25. Both take a limit argument; anything higher is clamped rather than rejected.
  • Lists are summaries. findings.list returns id, title, severity and status. Fetch the full body with findings.get — don't try to page a whole report out of the list call.
  • Scanner findings are excluded. findings.list exposes PTaaS pentest findings only. Retired ASM scanner output is not surfaced over MCP.
  • AI findings await review. Findings produced by Lory are held in a review queue and only become readable once a Lorikeet pentester has approved them.
  • Responses are JSON in a text block. Every tool returns its payload as pretty-printed JSON inside a single MCP text content block.

Billing

MCP calls draw from your prepaid credit balance at 0.1 credit per tool call ($1 = 1 credit), and roll up to your monthly invoice alongside engagement usage. Per-tool call counts, average latency and your current balance are in Dashboard → Usage & Credits.

Auditing

Every call is written to the MCP audit log: the method and tool, the scopes used, a hash and redacted copy of the input, a summary of the output, status and error code, duration, source IP and user agent. Tokens are SHA-256 hashed at rest and revocable at any time from the dashboard — revoking takes effect on the next call.

Example prompts

  • "Show me every open critical finding from our last pentest and explain the remediation for each."
  • "Is api.example.com in scope for our current engagement?"
  • "Which SOC 2 controls are still not started, and who owns them?"
  • "Search the knowledge base for CWE-89 and summarise the attack scenario."
  • "We shipped a fix for finding 1423 — request a retest."
  • "List every asset with an open high or critical finding against it."

Troubleshooting

SymptomCause and fix
401 with a WWW-Authenticate headerMissing or expired credential. For OAuth, re-authorize the connector; for token clients, issue a new token in the dashboard.
A tool is missing from the listYour credential lacks that tool's scope. Tools you can't call are hidden rather than shown-and-failing. Re-issue the token with the scope you need.
An OAuth grant only has read toolsThe client requested no scopes, so it fell back to the read-only default. retest:request is never granted implicitly — request it explicitly.
out_of_scope errorsThe target isn't covered by an in-scope rule. Add it under Scope Settings, or call scope.check first to confirm before acting.
"Finding not found"The id belongs to another workspace, or the finding is a Lory result still awaiting human review. Calls are scoped to your company only.
An agent claims it can file findingsIt can't — not through this server. findings:write is not grantable on customer credentials.

Legal and support

Lory waving

Hi, I'm Lory! Need help finding the right service? Click to chat!