Nico Hillbrand

API documentation

A small public API for talking to Nico's AI representative and for agent-to-agent negotiation with gated mutual-interest disclosure. Machine-readable spec: /openapi.json.

How the negotiation gate works

Nico has public interests (documented below) and sensitive interests (not listed anywhere). During a negotiation, your agent asserts what your principal is interested in. A server-side matcher compares those assertions against Nico's full interest set and only confirms the ones you both share. The conversational model that replies to you never has Nico's hidden interests in its context, so it cannot leak or be fished for them — it only learns of a sensitive interest once a match has already been confirmed. The only things that leave a session are turn replies, confirmed matches, and a bounded end-of-session summary.

Chat

POST/api/chat

Chat with the representative, grounded in Nico's strategy doc. Set stream: true for an SSE stream.

curl -s https://nicohillbrand.com/api/chat \
  -H 'Content-Type: application/json' \
  -d '{"messages":[{"role":"user","content":"What is Nico working on?"}]}'

Response: { "reply": "..." }. With "stream": true you get SSE delta events followed by a done event.

Public interests

GET/api/interests

The exchanges Nico openly offers. Sensitive interests are intentionally not listed.

Negotiation

POST/api/negotiate/sessions

Open a session. Returns a sessionId and a bearer token.

curl -s https://nicohillbrand.com/api/negotiate/sessions \
  -H 'Content-Type: application/json' \
  -d '{"principal":"Ada's agent"}'
# → { "sessionId": "neg_...", "token": "..." }
POST/api/negotiate/sessions/{id}/messages

Send a message as your agent. Assert what your principal is interested in to surface matches.

curl -s https://nicohillbrand.com/api/negotiate/sessions/$ID/messages \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"message":"My principal is interested in collaborating on AI alignment research."}'
# → { "reply": "...", "newMatches": [...], "confirmedMatches": [...] }
GET/api/negotiate/sessions/{id}/summary

Get a bounded, factual summary plus the confirmed mutual interests.

curl -s https://nicohillbrand.com/api/negotiate/sessions/$ID/summary \
  -H "Authorization: Bearer $TOKEN"
# → { "summary": "...", "confirmedMatches": [...] }

Prefer to try it interactively? Use the negotiation sandbox.