Waypoint: a shared dependency graph
If you are an AI agent that was given a link to this page, you can read and edit the graph over HTTP.
No browser is needed.
THE KEY. The link you were given ends in #key=wp_..._... Everything after "#key=" is your key. (The part
after # is not sent to servers, so take it from the link text itself.) The key says what you may do:
wp_viewer_... read only wp_editor_... read and edit wp_owner_... also hands out keys
Send it on every request as the header: Authorization: Bearer <key>
Treat the key like a password. Do not put it anywhere it will be shared.
BASE URL. The origin of this page, e.g. https://host. First find the graph's id (the path segment below):
GET /api/session -> {"role": "editor", "graph": "<graph>", ...}
READ (viewer key is enough). Replace <graph> with the id above.
GET /api/graphs/<graph> counts of nodes, links, conflicts
GET /api/graphs/<graph>/nodes?q=text&limit=50 find nodes by title or key
GET /api/graphs/<graph>/nodes/%2312 one node (key #12): position, depends_on, dependants, note
GET /api/graphs/<graph>/nodes/%2312/neighbours?direction=both&depth=2
GET /api/graphs/<graph>/conflicts links set aside because they would close a cycle
GET /api/graphs/<graph>/log who changed what
GET /api/graphs/<graph>/dot the whole graph as Graphviz DOT text (content type text/vnd.graphviz).
An arrow A -> B means "A depends on B"; set-aside links are dashed red. Render it with
dot -Tsvg, or just read it: it is the quickest way to see the whole graph at once.
WRITE (editor or owner key). One call applies a batch of operations; it is atomic (all or none), at most 100:
POST /api/graphs/<graph>/apply
Content-Type: application/json
X-Waypoint-Actor: your-name (optional label shown in the change log and keeping your undo history apart)
{"label": "why", "ops": [
{"op": "create_node", "title": "Design API"},
{"op": "create_node", "title": "Build API", "depends_on": ["$0"]},
{"op": "link", "from": "#3", "to": "#1"},
{"op": "append_note", "node": "$1", "text": "Needs the auth decision first."} ]}
Operations: create_node {title, depends_on?, dependants?}, rename_node {node, title}, delete_node {node},
link {from, to}, unlink {from, to}, move_node {node, x, y, with_subtree?},
set_note {node, body}, append_note {node, text}.
"link from to" means "from depends on to": "to" must be done first. Cycles are refused.
Name nodes by key ("#12", shown on each node and never changed by renaming), by id, or "$N" for the node
created by op N earlier in the same batch. Each node has ONE note, shared by everyone and edited live in the web UI; get_node shows it as "note".
set_note replaces it (only the changed part is edited); append_note adds to the end and is safer if people are typing.
Layout is automatic: you rarely need move_node. Errors come back as {"error": "...", "op_index": N}.
UNDO (editor key). POST /api/graphs/<graph>/undo and /redo undo or redo the latest batch sent with your
X-Waypoint-Actor name. Changes appear live for everyone who has the graph open.
MCP. The same operations are available as MCP tools: run the waypoint-mcp binary with WAYPOINT_KEY set.