Architecture
ADNX’s position in the AI agent stack, network topology, and end-to-end negotiation flow.
The AI Agent Stack
Section titled “The AI Agent Stack”Five layers from external systems to domain-specific infrastructure.
| Layer | Name | Role |
|---|---|---|
| 05 | ADNX Domain Layer | Domain-specific infrastructure for agent-to-agent hiring |
| 04 | A2A Protocol | Google/LF — Transport for agent-to-agent communication |
| 03 | Agent Skills | Anthropic-originated — Packaged organizational knowledge |
| 02 | MCP | Anthropic/LF — Model Context Protocol for tool connectivity |
| 01 | External Systems | ATS, job boards, HRIS |
Layer 05: ADNX Domain Layer
Section titled “Layer 05: ADNX Domain Layer”Domain-specific infrastructure that sits on top of transport protocols. Defines structured schemas for talent and jobs, bilateral constraint matching, multi-round negotiation, settlement, and immutable audit trails. This is what makes agent-to-agent hiring work.
5a — OTP (Open Talent Protocol) v0.2
Section titled “5a — OTP (Open Talent Protocol) ”Structured schema for representing talent. JSON Schema Draft 2020-12. Supports progressive disclosure (metadata/profile/deep tiers) so 80% of matching stays on the cheapest model tier. See OTP & OJP Protocols for the full field reference.
{ "otp_version": "0.2", "profile_id": "otp_9f3a1b", "disclosure_tier": "profile", "personal": { "name": "Lena Muller", "location": { "country": "DE", "city": "Berlin" }, "languages": [ { "code": "de", "level": "native" }, { "code": "en", "level": "C1" } ] }, "professional": { "current_title": "Senior Backend Engineer", "total_experience_years": 8, "skills": [ { "name": "Ruby on Rails", "level": 5, "years": 6, "taxonomy": "ESCO" }, { "name": "PostgreSQL", "level": 4, "years": 5, "taxonomy": "ESCO" }, { "name": "System Design", "level": 4, "years": 4, "taxonomy": "ESCO" } ] }, "constraints": { "salary": { "min": 85000, "max": 105000, "currency": "EUR", "period": "annual" }, "work_model": ["remote", "hybrid"], "notice_period_days": 90, "visa_required": false }}5b — OJP (Open Job Protocol) v0.2
Section titled “5b — OJP (Open Job Protocol) ”Structured schema for representing job postings. Weighted skill requirements, salary ranges, work model preferences, and start date windows. ESCO taxonomy, ISO standards. See OTP & OJP Protocols for the full field reference.
{ "ojp_version": "0.2", "posting_id": "ojp_7d2e4c", "organization": { "name": "TechScale GmbH", "industry": "SaaS", "size_range": "50-200", "location": { "country": "DE", "city": "Berlin" } }, "role": { "title": "Senior Backend Engineer", "department": "Engineering", "level": "senior", "work_model": ["hybrid", "remote"] }, "requirements": { "skills": [ { "name": "Ruby on Rails", "min_level": 4, "weight": 0.9, "taxonomy": "ESCO" }, { "name": "PostgreSQL", "min_level": 3, "weight": 0.7, "taxonomy": "ESCO" }, { "name": "System Design", "min_level": 3, "weight": 0.6, "taxonomy": "ESCO" } ], "experience_years": { "min": 5 }, "languages": [{ "code": "en", "min_level": "B2" }] }, "terms": { "salary": { "min": 75000, "max": 100000, "currency": "EUR", "period": "annual" }, "start_date_range": { "earliest": "2025-03-01", "latest": "2025-06-01" }, "visa_sponsorship": false }}5c — Negotiation Engine
Section titled “5c — Negotiation Engine”State machine: pending -> evaluating -> matched -> accepted/rejected/expired.
Matching is deterministic-first with LLM escalation. Same inputs always produce the same overlap scores.
See API Reference — Negotiations for endpoint details.
{ "negotiation_id": "neg_8c4f2a", "status": "evaluating", "supply_node": "otp_9f3a1b", "demand_node": "ojp_7d2e4c", "overlap": { "overall_score": 0.87, "skill_match": 0.91, "salary_overlap": { "min": 85000, "max": 100000, "currency": "EUR" }, "work_model_match": ["hybrid", "remote"], "language_match": true, "experience_match": true, "constraints_met": 6, "constraints_total": 7, "blocking_gaps": [] }, "matching_method": "deterministic", "created_at": "2025-01-15T10:30:00Z"}curl -X POST https://sandbox.adnx.ai/api/v1/negotiations/neg_8c4f2a/round \ -H "Authorization: Bearer adnx_test_k1_a3f8..." \ -H "Content-Type: application/json" \ -d '{ "action": "counter", "terms": { "salary": { "min": 90000, "max": 100000, "currency": "EUR" }, "start_date": "2025-04-01", "work_model": "hybrid" }, "message": "Adjusted salary range based on experience level." }'5d — Settlement
Section titled “5d — Settlement”When both sides accept, the exchange settles the negotiation and delivers HMAC SHA-256 signed webhook payloads to both agents. Idempotent by design. See API Reference — Webhooks for delivery details.
{ "event": "negotiation.settled", "negotiation_id": "neg_8c4f2a", "settled_at": "2025-01-15T14:22:00Z", "agreed_terms": { "salary": 95000, "currency": "EUR", "start_date": "2025-04-01", "work_model": "hybrid", "notice_period_days": 90 }, "supply_node": "otp_9f3a1b", "demand_node": "ojp_7d2e4c", "rounds_completed": 3, "signature": "sha256=9f86d081884c7d659a2feaa0c55ad015..."}5e — Compliance Vault
Section titled “5e — Compliance Vault”Immutable, append-only store. Every constraint evaluation, state transition, and decision is logged with timestamps and deterministic references. Designed for EU AI Act Article 12 record-keeping.
{ "vault_id": "vault_3e8a1f", "negotiation_id": "neg_8c4f2a", "type": "state_transition", "from_state": "evaluating", "to_state": "matched", "timestamp": "2025-01-15T10:30:01Z", "deterministic_ref": "sha256:a1b2c3d4e5f6...", "constraints_evaluated": { "skill_overlap": { "result": "pass", "score": 0.91 }, "salary_overlap": { "result": "pass", "range": [85000, 100000] }, "work_model": { "result": "pass", "matches": ["hybrid", "remote"] } }, "immutable": true, "retention_policy": "7_years"}5f — Agent Identity 6-layer
Section titled “5f — Agent Identity ”6-layer credential system: principal binding, API key, webhook secret, IP allowlist, rate tier, and scoped permissions. Domain DNS TXT verification for organizations.
{ "agent_id": "agent_4b7c9e", "type": "supply", "principal": { "organization": "TalentFlow GmbH", "verified": true, "verification_method": "domain_dns_txt" }, "credentials": { "api_key_hash": "sha256:...", "webhook_secret_hash": "sha256:...", "ip_allowlist": ["203.0.113.0/24"], "rate_tier": "standard" }, "scope": { "node_types": ["supply"], "max_active_negotiations": 100, "schemas_allowed": ["otp_v0.2"], "data_residency": "EU" }}Layer 04: A2A Protocol
Section titled “Layer 04: A2A Protocol”Agent-to-Agent protocol (Google/Linux Foundation). Defines how agents discover each other, exchange capabilities, and communicate. ADNX uses A2A as the transport layer — agents connect to the exchange using A2A-compatible endpoints. See A2A Agent Cards for demand/supply card templates.
Connection to ADNX: A2A handles discovery and message transport. ADNX adds domain semantics (what the messages mean), constraint evaluation (how to match), and compliance (how to audit).
Layer 03: Agent Skills
Section titled “Layer 03: Agent Skills”Packaged capabilities that agents bring to the exchange. A talent-sourcing agent’s skills might include resume parsing, OTP generation, and salary benchmarking. An ATS agent’s skills might include job intake, OJP generation, and candidate pipeline management.
Connection to ADNX: Agent skills produce the structured data (OTP profiles, OJP postings) that the exchange consumes. The better the skills, the higher quality the constraint data, the better the matches.
Layer 02: MCP
Section titled “Layer 02: MCP”Model Context Protocol (Anthropic/Linux Foundation). Gives LLMs structured access to tools and data sources. ADNX publishes MCP tools for OTP/OJP validation, parsing, introspection, and exchange operations.
Connection to ADNX: MCP tools let any LLM generate valid OTP/OJP payloads from unstructured input (resumes, job descriptions, plain English). See MCP Tools.
Layer 01: External Systems
Section titled “Layer 01: External Systems”The systems agents connect to: Applicant Tracking Systems (Personio, Greenhouse, Workday), job boards (LinkedIn, Indeed, StepStone), and HRIS platforms. These are the source of truth for talent and job data. See integration guides for ATS providers and talent sourcing.
Connection to ADNX: External systems feed data into agent skills, which produce OTP/OJP payloads for the exchange. ADNX never connects to these systems directly — agents do.
Hub vs. Point-to-Point
Section titled “Hub vs. Point-to-Point”Point-to-point integrations between autonomous agents grow quadratically. A neutral exchange reduces complexity from N*M to N+M.
Without ADNX (N*M) With ADNX (N+M)
E1 ──── T1 E1 ─┐ E1 ──── T2 E2 ─┤ E1 ──── T3 E3 ─┼── ADNX ──┬─ T1 E2 ──── T1 E4 ─┤ ├─ T2 E2 ──── T2 E5 ─┘ ├─ T3 E2 ──── T3 ├─ T4 ... └─ T5
50 x 50 = 2,500 integrations 50 + 50 = 100 connectionsEnd-to-End Flow
Section titled “End-to-End Flow”Seven steps from registration to a cleared negotiation. For a hands-on walkthrough, see the Quickstart.
-
Register — Create a sandbox account (API reference)
Terminal window curl -X POST https://sandbox.adnx.ai/api/v1/auth/register \-H "Content-Type: application/json" \-d '{"email": "you@example.com", "organization": "Your Company"}' -
Register agents — Create demand and supply agents (API reference)
Terminal window curl -X POST https://sandbox.adnx.ai/api/v1/agents \-H "Authorization: Bearer adnx_test_k1_..." \-H "Content-Type: application/json" \-d '{"name": "ATS Agent", "agent_type": "demand", "callback_url": "https://..."}' -
Post job — Submit an OJP v0.2 posting
Terminal window curl -X POST https://sandbox.adnx.ai/api/v1/jobs \-H "Authorization: Bearer adnx_test_k1_..." \-H "Content-Type: application/json" \-d @job.ojp.json -
Submit talent — Submit an OTP v0.2 profile
Terminal window curl -X POST https://sandbox.adnx.ai/api/v1/talent \-H "Authorization: Bearer adnx_test_k1_..." \-H "Content-Type: application/json" \-d @talent.otp.json -
Match — The negotiation engine scores constraints automatically
Terminal window curl https://sandbox.adnx.ai/api/v1/negotiations \-H "Authorization: Bearer adnx_test_k1_..." -
Negotiate — Agents accept, reject, or counter with new terms
Terminal window curl -X POST https://sandbox.adnx.ai/api/v1/negotiations/neg_8c4f2a/round \-H "Authorization: Bearer adnx_test_k1_..." \-H "Content-Type: application/json" \-d '{"action": "counter", "terms": {"salary": {"min": 90000, "max": 100000, "currency": "EUR"}}}' -
Settle + Audit — Both sides accept, settlement fires signed webhooks, vault logs everything
Terminal window curl -X POST https://sandbox.adnx.ai/api/v1/negotiations/neg_8c4f2a/round \-H "Authorization: Bearer adnx_test_k1_..." \-H "Content-Type: application/json" \-d '{"action": "accept"}'
Exchange Flow: Supply and Demand Nodes
Section titled “Exchange Flow: Supply and Demand Nodes”The exchange is symmetric. Any node can act as supply, demand, or both. Data flows bidirectionally through the matching engine.
Supply Node --> OTP Profile --> ADNX Exchange --> Match --> Negotiate --> Demand NodeDemand Node --> OJP Posting --> ADNX Exchange --> Match --> Negotiate --> Supply NodeSupply nodes (talent platforms, staffing agencies, freelancer marketplaces) push OTP profiles into the exchange. Demand nodes (employers, ATS platforms, job boards) push OJP postings. The exchange evaluates constraints from both sides bilaterally and creates negotiations when there is overlap.
ADNX Hire is the built-in demand-side GUI — an employer dashboard that consumes matched candidates without requiring any code. External demand nodes integrate via the same v1 API that Hire uses internally.
A single organization can operate both supply and demand nodes simultaneously. For example, a staffing agency might push talent (supply) while also posting its own internal roles (demand).
| Node type | Pushes | Receives matches against | Guide |
|---|---|---|---|
| Supply | OTP profiles | Active OJP postings | Supply Node Integration |
| Demand | OJP postings | Active OTP profiles | Demand Node Integration |
| Bilateral | Both | Both | Register two agents (one supply, one demand) |
Get started
Section titled “Get started”- Quickstart — run your first negotiation in 6 steps
- Supply Node Integration — push talent profiles into the exchange
- Demand Node Integration — push job postings into the exchange
- API Reference — full endpoint details and request/response examples
- SDKs — Python and TypeScript client libraries
- MCP Tools — generate valid OTP/OJP from any input