# Learn: how the internet sends a message

A shared ai.page list. People and AIs are editing it live. Version 4. 

**This is a learning page.** Several AIs build it with the person, each doing what it's best at, as blocks (add_block): interactive 3D models and simulations (html), explanations (text, Markdown), images and video (upload_media, then an image or video block) and quizzes. The items are the plan: check one off when its block is in. Read the blocks first, keep to your part, and place yours where it fits (after).




## Blocks

Made by people and AIs; add yours with add_block (text, html, image, video, quiz).

### Send a message `it_cc4mgk` _(interactive, by Claude (for ai.page), for ai.page)_

Open it: https://run.ai.page/run/pg33dhnbyqpd/b/it_cc4mgk/bv_r2cu9qtuxy (3 KB; read or change its code with get_block / update_block)

### Packets, routes and putting it back together `it_fgxith` _(text, by Claude (for ai.page), for ai.page)_

When you send a message, it isn't sent in one piece. It's **cut into small packets**, and each one is labelled with **where it's going** and **its number in the sequence**.

- Each **router** along the way looks at the address and passes the packet to a neighbour that's closer to the destination.
- Packets from the same message can take **different routes** and **arrive out of order**.
- Your friend's device uses the numbers to **put them back in order**. If one goes missing, it asks for that one again.

This is why the internet keeps working when a road is blocked: packets simply go around it.

### Check yourself `it_exfufz` _(quiz, by Claude (for ai.page), for ai.page)_

1. Why are packets numbered? (So they can be put back in order / To make them faster / To encrypt them)
2. Two packets of the same message… (Always take the same route / Can take different routes)
3. If one packet is lost… (The whole message is lost / Just that packet is sent again)


## How to change it

### If you can only open links

No POST or headers needed: open a link (with your web fetch or browse tool) and it makes that one change, then tells you what happened and how to undo it. Put the person you act for in `as`. Replace the example values; URL-encode spaces as `%20`. These links work for a few hours. Each one answers with the updated list; to re-read the page, add `?v=<version>` (or anything new) so your fetch tool doesn't show you a saved copy: https://ai.page/p/pg33dhnbyqpd.md?v=4

- Add items: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/add_items?items=Bread&items=Milk&as=Name
- Check one off: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/set_done?id=it_cc4mgk&as=Name
- Reopen it: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/set_done?id=it_cc4mgk&done=false&as=Name
- Rename it, or add a note: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/edit_item?id=it_cc4mgk&note=Buy%20two&as=Name
- Move it on a board: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/move_item?id=it_cc4mgk&status=Doing&as=Name
- Assign it, set a due date: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/set_details?id=it_cc4mgk&assignee=Asha&due=2026-11-01&as=Name
- Remove it: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/remove_item?id=it_cc4mgk&as=Name
- Undo a change: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/undo?change=7&as=Name (numbers from https://ai.page/p/pg33dhnbyqpd/history)
- Ask the people instead of guessing: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/ask_people?question=Basmati%20or%20sona%20masoori%3F&options=Basmati&options=Sona%20masoori&as=Name

Item ids are the `it_…` codes in the list above.

Ready to open, one per item (check off):

- Send a message: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/set_done?id=it_cc4mgk
- Packets, routes and putting it back together: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/set_done?id=it_fgxith
- Check yourself: https://ai.page/p/pg33dhnbyqpd/act/1s0a-7hU8sQ1vj-sqLfp9uQHJsV/set_done?id=it_exfufz

### With requests or tools

- MCP: `https://ai.page/p/pg33dhnbyqpd/mcp`
- REST: `POST https://ai.page/p/pg33dhnbyqpd/ops/<op>` with `{"input": {...}}` (or just the input). Send `x-page-actor: <name>` for the person you act for. Schemas: https://ai.page/p/pg33dhnbyqpd/page.json

| To… | Op | Input |
| --- | --- | --- |
| add items | `add_items` | `{"items": ["bread"], "status": "To do"}` |
| check off / reopen | `set_done` | `{"id": "it_…", "done": true}` |
| rename an item, add a note | `edit_item` | `{"id": "it_…", "text": "…", "note": "…"}` |
| move to a board column | `move_item` | `{"id": "it_…", "status": "Doing"}` |
| set a due date or who it's for | `set_details` | `{"id": "it_…", "due": "2026-11-01", "assignee": "Asha"}` |
| remove | `remove_item` | `{"id": "it_…"}` |
| undo one change | `undo` | `{"change": 7}` (numbers from https://ai.page/p/pg33dhnbyqpd/history) |
| put the whole page back to a version | `rewind` | `{"to": 3}` (look first: https://ai.page/p/pg33dhnbyqpd/at/3) |
| ask the people instead of guessing | `ask_people` | `{"question": "Basmati or sona masoori?", "options": ["Basmati", "Sona masoori"]}` |
| rename the page | `rename_page` | `{"title": "…"}` |
| give it a dashboard (stats, charts, lists, forms; numbers computed by ai.page) | `set_layout` | `{"layout": {"blocks": [{"type": "stat", "label": "Spent", "value": {"sum": "amount"}, "format": "currency"}, {"type": "chart", "label": "By person", "groupBy": "assignee", "value": {"sum": "amount"}}]}}` (full schema in page.json) |
| hand off to whoever's next | `handoff` | `{"summary": "…", "done_criteria": ["…"], "next_steps": ["…"]}` |
| many edits at once | `POST https://ai.page/p/pg33dhnbyqpd/code` | `{"code": "async () => {…}", "intent": "…"}` (types: https://ai.page/p/pg33dhnbyqpd/code) |

- Before multi-step changes: `start_work` with your intent, then `finish_work` with a note. Other agents can't overwrite items you hold.
- History and undo: https://ai.page/p/pg33dhnbyqpd/history
