Channels
Scribe speaks your protocol. Pick a channel — LDAP, REST, GraphQL, or MCP — and start querying. All channels share the same query engine, so results are identical regardless of which one you use.
Pick a channel
Section titled “Pick a channel”| Channel | What it’s for | Status |
|---|---|---|
| LDAP | Existing LDAP apps — no code changes needed | Stable |
| REST | HTTP/JSON for microservices and automation | Stable |
| GraphQL | Flexible queries for frontends | Stable |
| MCP | AI coding assistants (Cursor, Claude, VS Code) | Experimental |
| gRPC | Service mesh and high-throughput pipelines | Roadmap |
Not sure? This decision tree walks you through it:
Answer a few questions to find the right protocol
How they compare
Section titled “How they compare”Choose the right protocol for your use case
Shared pipeline
Section titled “Shared pipeline”Every query passes through the same four-stage pipeline, regardless of channel:
Unified processing across all channels
- Parse query
- Validate syntax
- Map attributes
- Analyze filter
- Choose indexes
- Optimize access
- Generate SQL
- Bind parameters
- Prepare statement
- Run query
- Stream results
- Format response
An LDAP search and a GraphQL query for the same data produce identical results. The channel determines the wire format; the query engine handles everything else.
What’s shared across channels
Section titled “What’s shared across channels”Authentication. All channels support bearer token authentication. LDAP also supports bind-based authentication with username/password or proxy authorization.
Authorization. Permissions are evaluated at the directory level during query execution, not per-channel.
Pagination. Each channel uses pagination native to its protocol:
| Channel | Style | Parameters |
|---|---|---|
| LDAP | Simple Paged Results, VLV | LDAP controls |
| REST | Cursor pagination | first/after, last/before, limit |
| GraphQL | Cursor pagination (Relay) | first/after, last/before |
| MCP | Cursor pagination | limit/after |
Entry identifiers. Every entry can be looked up by GlobalId, UUID, UOID, or DN. All channels accept all formats. See Data Model for details.
Operational attributes. Metadata like entryID, entryUUID, timestamps, and ETags are available on every entry. See Data Model for the full list.
Filters. Queries accept FleX, JSON, SCIM, or LDAP filter syntax. Scribe auto-detects the format.
Temporal references. Time-based parameters support ISO timestamps, durations, relative expressions (now-1h), and natural language (yesterday, last 3 days). See Filters reference.
Errors. All channels share the unified failure model. Errors map to protocol-appropriate responses. See Error Handling.
API discovery
Section titled “API discovery”The /.well-known/api-catalog endpoint provides machine-readable API discovery per RFC 9727. Clients can discover all enabled channels, their base paths, and schema URLs from a single request.
Get channel runtime status (bound ports, enabled channels) at /observe/channels. See Endpoints Reference for response details.
For configuration options, see Configuration Reference.