Endpoint:
https://mcp.enokilabs.ai/mcp (streamable HTTP).Prerequisites
- An Enoki workspace (you sign in at app.enokilabs.ai).
- A workspace API key with the
readandwritescopes — andtest:runif you want your agent to trigger assessments. See API keys & scopes for how to mint one (workspace admins only). Keys look likeegk_…and are shown once.
Connect your client
Authenticate with your API key as a Bearer token. Pick your client:- Claude Code
- Cursor
- VS Code / other
- Claude Desktop / claude.ai
One command. Verify with
--scope user makes the server available in every project, not
just the current one:claude mcp list (or /mcp inside a session). The tools appear as
mcp__enoki__get_setup_guide, mcp__enoki__create_target, and so on.Register your first target
A target is one of your agent endpoints, registered so Enoki can test it. Your agent builds the config from your endpoint’s own API docs; start withget_setup_guide, which ships the full field reference and worked examples.
1
Read the setup guide
Call
get_setup_guide. It returns the config field reference plus the
semantics the schema can’t express (dot-paths, request-body templating,
streaming modes, session capture) and worked examples for HTTP, SSE, and
WebSocket endpoints.2
Check for duplicates
Call
list_targets first. Creates aren’t deduplicated, so a matching name
and endpoint_host in the same environment is the same target; reuse its
model_id rather than making a second. If only the name or only the host
matches, confirm before creating.3
Create the target
Call
create_target with your config. It’s atomic prove-then-persist:
Enoki fires one live probe and saves the target only if it succeeds. On failure
it returns a category (unreachable, auth_failed, parse_error, unknown)
and saves nothing, so fix and retry (see Troubleshooting).
There’s no update or delete over MCP; edit stored targets in the dashboard.If your agent sits behind OAuth, use it. Set
auth_type to
oauth_client_credentials and pass an oauth block (token_url,
client_id, and scope or audience if your provider wants one), with the
client secret as credential. Enoki mints an access token and re-mints it
before it expires.That matters because an assessment can run for hours: a static bearer
that lapses part-way through fails the run, not just one request. Reach for
a hand-minted token only when your provider offers nothing else.4
Run an assessment
On success you get a
model_id. Pass it to trigger_assessment, poll
get_assessment_status, then read results with list_findings and
get_finding. See the MCP tool reference.Scoped, change-relevant runs
A full assessment covers the whole security taxonomy. To gate a frequent deploy on something faster, focus the run on the categories a change actually touches: list the categories, pick the relevant subset, pass those keys to the trigger.1
List the categories
MCP: call
list_categories. REST: GET /api/v1/category (scope
read). Each entry carries a key, a display_name, and a description.
The description is what makes an automated choice viable, so hand your agent
the whole list rather than a name-only summary. The response is static
platform metadata and is cacheable for an hour.2
Trigger with the subset
Pass the chosen keys as
categories to trigger_assessment (MCP) or
POST /api/v1/run (REST), then poll as usual.What’s next
What we test for
The coverage summary behind the category catalogue.
MCP tool reference
Every tool, its inputs and outputs, and the scope each requires.
Troubleshooting
Probe error categories, auth failures (401/403), and rate limits.