DEV Community

Cover image for I Built an Agent Whose Only Job Is to Document Everything in Notion (So My Brain Does Not Have To)
John A Madrigal
John A Madrigal

Posted on

I Built an Agent Whose Only Job Is to Document Everything in Notion (So My Brain Does Not Have To)

Notion MCP Challenge Submission 🧠

I have a problem. Not a "my code does not compile" problem. A "I have so many ideas, projects and notes that my brain just about explodes and reboots" problem. 😵‍💫

So... I did what any reasonable developer would do, right? I built an AI agent inside Open Claw whose only job is to document everything beautifully in Notion. His name is Escriber and he's my new documenter.

The Prompt that birthed Escriber

This is my submission for the Notion MCP Challenge. Let me tell you, building a focused single-purpose agent with 14 Notion tools is exactly as satisfying as it sounds.

What I Built

Escriber is agent #2 of 5 on my OpenClaw multi-agent team.

Escriber telling me about himself

His SOUL.md says exactly this: "I document. Beautifully. In Notion." And for anyone who has not used OpenClaw, they give these agents Soul.md files that define who the agent is and give them a small personality.

That is it. Full stop. He cannot debug your code. He cannot give life advice. He has one lane and he stays in it — which, honestly, is more discipline than I have most the time. 😆

He lives in Discord as a bot or I can use the web chat interface to call on him directly. He can be slightly artisanal. Dry wit is baked in by design, because documentation does not have to be soulless. He makes use of my Synap bot to write summaries for projects and clean them up like I would say them, then he will store what Synap sends back.

He is not a Swiss Army knife. He is a scalpel. And sometimes that is exactly what you need.

Video Demo

Show Us the Code

Escriber talks to Notion through mcporter — an MCP relay that proxies tool calls to Notion's official MCP server. Every Notion interaction looks like this:

mcporter call notion.<tool_name> --args '{ ... }'
Enter fullscreen mode Exit fullscreen mode

Clean. Consistent. One pattern to rule them all.

Here is the full arsenal — 14 tools, one agent, zero excuses for undocumented projects:

Tool What It Does
notion.search Find existing pages/databases before creating duplicates
notion.create_page Spin up a new page anywhere in the workspace
notion.retrieve_page Read a page's metadata
notion.update_page Update page properties
notion.append_block_children Add content blocks to an existing page
notion.retrieve_block_children Read what is already on a page
notion.retrieve_block Fetch a specific block
notion.update_block Edit an existing block
notion.delete_block Remove a block
notion.create_database Create a new database
notion.retrieve_database Read database structure
notion.update_database Modify database schema
notion.query_database Filter and search database entries
notion.create_database_item Add a row to a database

Escriber also has workflow rules baked into his instructions. Because tools without discipline are just chaos with an API:

  • Search first. Always check if the page already exists before creating a new one.
  • Read before writing. Retrieve block children before appending to avoid structural disasters.
  • Right block type. Callouts for decisions. Toggles for details. Headings for structure. Not everything is a paragraph.
  • Structure intentionally. Measure twice, cut once. 🤣

How I Used Notion MCP

Let me tell you how this actually works.

mcporter connects Escriber to Notion's official MCP server at https://mcp.notion.com/mcp. Every tool call gets proxied through that relay — no direct API wrangling, no custom request builders. The MCP layer handles it. Escriber just speaks tool.

Here is what that looks like day-to-day:

New project starts?
create_page to spin up the project hub. create_database_item to log it in the master projects database. Done in seconds.

Wrapping up a build session?
append_block_children to the existing project page. Build notes, decisions made, what broke, what did not. Structured. Timestamped. Actually findable later.

JB's Job Listings
create_page My recruiter agent stored a list of jobs using Esciber every morning. Future-me will be grateful. Past-me was not doing this. These are stored in Notion daily, and sortable ☠️

Notion Job Notes

Let me tell you about the shame moment that made this real.

I went back through my own Notion workspace a few weeks ago. Pages with titles like "ideas v3 FINAL" and "project notes DO NOT DELETE" containing exactly… three bullet points and a YouTube link. That is it. That is the legacy. A graveyard of good intentions. ☠️

Escriber exists because I needed someone with more documentation discipline than me. Turns out that someone is a focused AI agent with a soul file and 14 Notion tools.

One job. One lane. Real personality. And the docs actually get written now.

"Optimization starts with a single point of failure—or a single point of success. Own the lane."

Also, thanks to Bloggy, for taking the time to help with this post.


Escriber is part of my OpenClaw agent team. If you are curious about building multi-agent setups in openclaw, drop a comment — I am writing more about this whole stack as it comes together.

Top comments (0)