CydraLabs

Documentation

MCP and connector references

Connectors discover agents, models, MCP servers, tools and identities from the platforms you already use and reconcile them into the CydraShield registry. This page covers each connector, how MCP servers are discovered and trusted, how MCP tool calls are mediated, and the connector contract.

Overview

  • An integration is a configured source (for example your Anthropic account). Each has a connector that runs discovery through an adapter.
  • Adapters run in mock mode (fictional data, for evaluation) or live mode (calls the provider's API with a credential you reference).
  • Discovery never writes: adapters list and read, and change nothing in the source system.
  • Results are reconciled into the registry: new agents, models, MCP servers, tools, resources, identities and permissions are added; risk scores and the Agent Security Graph are recalculated afterwards.

Connector catalogue

Every adapter is available in mock mode. Live modes have the status shown.

Connectors
KindLive mode readsConfigurationLive status
anthropicModels, and managed agents where the API key has access (otherwise the model inventory)environmentPreview
openaiThe models available to the accountbase_url (default the OpenAI API; HTTPS required)Preview
mcpOne MCP server's identity and tool list (see below)endpoint, name, tool_prefixBeta
entra_idService principals carrying a tag (default cydra-agent), via Microsoft Graphdirectory_tenant_id, client_id, agent_tagPreview
githubAgent manifests (.cydra/agent.json) in the organisation's repositories (up to 100)organisationPreview

Agents built on other platforms can be registered in the portal, through the API, or with a manifest in GitHub. The integrations planned next are listed on the platform page.

Running discovery

  1. Create an integration: Integrations → Add integration (kind, name, mode, an optional credential reference and non-secret JSON configuration).
  2. Choose Run discovery. Runs are manual in this release. You can pass an idempotency_key through the API so a retried request returns the original run.
  3. Each run records its status (running, then succeeded or failed), counters (agents, models, MCP servers, tools, resources and identities added; tools changed; findings opened), warnings and any error. Runs are audited.

How results are reconciled

Reconciliation rules
RecordMatched onBehaviour
AgentsExternal referenceNew agents are added with an owner-attestation finding; existing agents get a last-seen time and a new version when their model or description changes
MCP serversEndpointNew servers with unknown or unsigned provenance open a finding; a change in the server's tool set opens a finding and moves an approved server back to unknown
ToolsTool keyNew financial, destructive and admin tools require single approval by default; schema changes are recorded
Models, resourcesProvider and name / nameAdded when new; existing records are kept

Discovery never deletes records. Items that disappear from a source stay in the registry until you remove or contain them.

Credentials

  • Live adapters use a credential reference: a pointer to a secret in your secret store (provider and path), never the secret itself. Integration configuration rejects keys such as secret, password, api_key, token and client_secret.
  • The secret is resolved at run time and sent to the provider's own endpoint and nowhere else. It is never stored or returned by CydraLabs.
  • Credential references can be revoked or rotated as a containment action.
  • Outbound requests from live adapters are checked against SSRF rules: loopback, private, link-local and cloud metadata addresses are refused.

MCP discovery

The MCP connector reads one server over the streamable HTTP transport:

  1. initialize (protocol version 2025-06-18, client cydra-discovery), keeping the Mcp-Session-Id the server returns.
  2. notifications/initialized, then tools/list. JSON and server-sent-event responses are accepted (up to 2 MB); redirects are not followed.
  3. Each tool becomes <tool_prefix>.<tool name> with its title, description and input schema.

CydraLabs assigns each tool a privilege class (read, write, destructive, financial or admin) from its name and description, independently of what the server claims. A server's readOnlyHint annotation is recorded: if the server declares a tool as not modifying anything while CydraLabs classifies it as able to change something, a high severity tool poisoning finding is opened. Security teams can reclassify any tool.

MCP trust states

MCP server trust states
StateMeaningEffect
approvedProvenance reviewed and acceptedIts tools are evaluated like any other granted tool
unknownNot reviewed (the default for discovered servers)Privileged tools denied; adds 6 points to the Agent Risk Score
unsignedProvenance cannot be establishedPrivileged tools denied; adds 12 points
quarantinedDeliberately isolated by your security teamPrivileged tools denied; adds 12 points
  • "Privileged" means write, destructive, financial or admin. Baseline rule POL-006 denies those calls with UNTRUSTED_MCP_PRIVILEGED_TOOL; read tools stay available. To stop a specific tool entirely, block it.
  • Changing a trust state (PATCH /api/v1/mcp-servers/{id} with a reason) needs the inventory:control permission and is written to the audit log and the evidence chain.
  • If a later discovery finds that an approved server's tools changed (a different capability hash), the server returns to unknown and a finding is opened, so changed tools are reviewed before privileged use.
  • In the Agent Security Graph, servers appear as mcp_server nodes linked to the tools they expose and the agents that use them; unknown, unsigned and quarantined servers are highlighted on high-risk paths.

MCP mediation

Agents send each proposed MCP tool call to CydraGateway as an action, before calling the tool. The gateway resolves the tool and its MCP server, adds tool.target_type = "mcp_tool" and the server's tool.mcp_trust_state to the decision input, and applies the same ten-step decision as any other action: policy, inspection, approval and evidence. See the architecture and policy language.

An MCP tool call submitted for a decision
POST /api/v1/actions
Authorization: Bearer <agent workload token>
Idempotency-Key: crm-update-7f3c

{
  "tool": "hr-records.employees.update",
  "operation": "invoke",
  "target": "hr://employees/E-1042",
  "parameters": {"employee_id": "E-1042", "department": "Finance"},
  "justification": "Transfer approved by HR ticket HR-5521"
}

GitHub agent manifest

The GitHub connector reads .cydra/agent.json from each repository. One manifest describes one agent:

.cydra/agent.json
{
  "name": "Code Review Agent",
  "description": "Reviews pull requests and suggests changes",
  "purpose": "Developer productivity",
  "framework": "langgraph",
  "environment": "production",
  "owner": {"name": "Sam Rivera", "email": "sam.rivera@example.com"},
  "tools": ["github.pull_requests.read", "github.comments.create"]
}

Tool keys listed in the manifest become permissions for the agent when the tools exist in your inventory (for example from the MCP connector).

Connector contract

Adapters implement one small interface, which keeps model, identity and developer platforms interchangeable. Pilot customers can add adapters for their own systems with CydraLabs.

Adapter interface (Python)
class ConnectorAdapter(Protocol):
    key: str    # e.g. "mcp" or "mock.mcp"
    kind: str   # openai | anthropic | mcp | entra_id | github
    mode: str   # "live" or "mock"

    def discover(self, config: dict[str, Any], secret: str | None) -> DiscoveryResult: ...
Discovery result
ElementFields
DiscoveryResultadapter, mode, agents, models, mcp_servers, resources, warnings
DiscoveredAgentexternal_ref, name, description, purpose, framework, environment, model, owner name and email, data classification, exposure attributes (internet, code execution, memory, approval coverage), business unit, identities, tool and resource grants, delegations
DiscoveredMCPServername, endpoint, transport, auth type, publisher, trust state, protocol version, tools
DiscoveredTooltool_key, name, description, privilege class, input schema, declared readOnlyHint, operations, related data or API resource, idempotent
DiscoveredModelprovider, model name and version, hosting, data policy
DiscoveredResourcename, kind (data or api), system, classification, contains personal data, base URL
DiscoveredIdentityidentity type, subject, issuer, authentication strength

Adapters raise a connector error for expected failures (for example a missing credential); the run is then recorded as failed with the message.

Endpoints

Integration, connector and MCP endpoints
EndpointPermissionPurpose
GET /integrationsintegration:readIntegrations and their connectors
GET /integrations/catalogueintegration:readAdapters and their status
POST /integrationsintegration:manageCreate an integration (kind, name, mode, configuration, credential reference)
POST /integrations/{id}/statusintegration:manageActivate or disable an integration
POST /connectors/{id}/runconnector:runRun discovery now
GET /connectors/{id}/runsintegration:readRun history (last 50)
POST /connectors/{id}/enabledintegration:manageEnable or disable a connector (containment)
GET / POST /mcp-serversinventory:read / inventory:writeList or register MCP servers
PATCH /mcp-servers/{id}inventory:controlChange trust state (with a reason)
GET / POST /tools, PATCH /tools/{id}inventory:read / inventory:writeList, register or reclassify tools
POST /tools/{id}/blockinventory:controlBlock or unblock a tool
POST /resources/credentialsintegration:manageRegister a credential reference

All paths are under /api/v1. Full request and response details are in the API reference.

Applies to the CydraLabs proof-of-concept platform. Last updated 4 October 2026. Questions or corrections: contact us.