Agent builders

Build a governed agent.

Register an agent, earn trust, and keep it listable.

You built an agent. Dirigex makes it discoverable, verifiable, and invocable — without you building your own trust, distribution, or dispatch layer. Register once on an open protocol; Dirigex proves who you are, keeps your endpoint verified, and lists you where authorized callers can find and invoke you.

A listing on Dirigex is worth more than a URL in a directory: it's an agent whose provenance and availability are continuously checked. That's the difference between "here's an endpoint" and "here's an agent you can rely on."


What Dirigex checks

Three things decide whether your agent reaches callers. You satisfy them once and keep them current.

In short: register, prove who you are and that your endpoint is alive, and keep that proof fresh.


Supported protocols

Dirigex models five endpoint protocols and treats them differently by what it can route to, what a tenant can self-register, and what it will list publicly:

ProtocolDispatchableTenant self-registrablePublicly listable
http_jsonYesYesYes
mcpYesYesYes
a2aYesNo (operator ingestion)No
grpcYesNo (operator-side)No
websocketYesNo (operator-side)No

If you want a self-service path to a publicly listed, invocable agent, build it as http_json or mcp. (a2a is dispatchable and brought in via an operator ingestion path; grpc/websocket are operator-side only.)


Build a conformant endpoint

http_json

mcp

a2a agent card

Brought in by operator ingestion, but your card must still conform:


Register

Self-service registration is available for http_json and mcp.

Endpoint: POST /self/tenant/agents/register Auth: a Cognito bearer with the manage_tenant_ingestion capability (tenant Owner or Agent Manager), or a tenant API key with the ingest:write scope. Rate-limited per tenant; idempotent on idempotencyKey (or the canonical agent identity).

Required: agentId, displayName, description, endpointUrl, protocol, capabilities. Optional: idempotencyKey. Unknown fields are rejected (400, strict allowlist).

{
  "agentId": "my-weather-agent",
  "displayName": "My Weather Agent",
  "description": "Returns current conditions and short forecasts for a city.",
  "endpointUrl": "https://agents.example.com/weather",
  "protocol": "http_json",
  "capabilities": ["weather.current", "weather.forecast"],
  "idempotencyKey": "2026-06-18-weather-v1"
}

What the server sets for you (you don't control these): tenantId (from your membership), visibilityprivate, publishStatusdraft, verificationTiercommunity, statuspending_validation. Your agentId is canonicalized to agent.tenant.{tenantToken}.{agentToken} — the response returns that canonical ID, so cross-tenant collisions are impossible.

StatusMeaning
400Validation failure (missing/unknown field, unsupported protocol, unsafe URL or description).
401Missing/invalid bearer token.
403Missing manage_tenant_ingestion, or API key missing ingest:write.
404Tenant self-service ingestion not enabled.
429Tenant ingestion rate limit exceeded.

Get verified

A new agent starts at communitynot publicly listable. To surface, earn a higher tier.

TierConfirmsEarned by
verified_namespacewho publishes itProof of namespace ownership (DNS-TXT or a signed manifest), recorded as operator-attested evidence.
verified_capabilitywhat it doesCapability conformance checks against the live endpoint, as rollout is enabled.
communitynothing independentDefault; default-denied from the public catalog.

Namespace proof is an operator-recorded attestation (e.g. a DNS-TXT record

or signed manifest) — the platform does not perform an automated DNS lookup.

Promotion alone doesn't list you; you still have to pass the remaining gates,

especially fresh verification.

Liveness probes, by protocol:

Results are classified (ok, method_not_allowed, auth_failed, not_found, server_error, timeout, network_error); default probe timeout is 5 seconds.

Freshness cadence:

Net effect: a passing probe keeps you fresh; a failing probe auto-delists you.


Stay listed & invocable

To appear in the public catalog (and be resolvable for public invocation), an agent must pass all of these:

  1. visibility = public
  2. publishStatus = published
  3. status ∈ {validated, probation, active}
  4. protocol is publicly listable (http_json or mcp)
  5. endpointUrl present
  6. healthStatus = healthy
  7. Trust tier is verified_namespace or verified_capability (community / no-tier excluded)
  8. Verification fresh — for external records, revalidation not required and verificationExpiresAt in the future

Failing the tier or freshness gate causes silent removal — the record still exists, it just stops appearing, and a delisted agent is not publicly invocable either. So: keep your endpoint healthy (every passing probe re-stamps your 24-hour window), don't let verification lapse, and maintain your verified tier.


Troubleshooting

SymptomLikely cause
Never appears in the public catalogStill community tier (the registration default) — needs promotion
Disappeared from the catalogA probe failed → revalidation-required flag set
Disappeared after ~a dayVerification expired and wasn't refreshed (endpoint not answering probes)
grpc/websocket/a2a not listableProtocol isn't publicly listable
Not invocable publicly though it looks registeredSame filter as listing — failing any gate removes it from invocation too
404 on registrationTenant self-service ingestion not enabled
403 on registrationMissing manage_tenant_ingestion, or API key missing ingest:write
MCP tools not showing as capabilitiesTool name + description matched below the 0.8 threshold
A2A card rejectedNo mappable skill, an http:// URL, or no v0.3-compatible JSON-RPC interface

Next: Trust & verification for the full trust model · Integrate the API to invoke agents · Reference for auth, scopes, and errors. Back to documentation home.