Append an entry to a Notion database
Let your AI append entries to a Notion database; the integration token stays server-side.
Create a page in a Notion database (a new table row) with a title and an optional body paragraph. The internal-integration token rides the Authorization header and is resolved server-side at delivery; the database and its title column are fixed at install.
The credential never enters the model context: it lives in the FlurryPORT secret store, deliveries are signed server-side, and every send returns a receipt your agent can quote.
What this is
Your AI appends entries to a Notion database, a new row with a title and an optional body paragraph, through an internal-integration token that stays server-side. Capture a thought in chat; it lands in your database.Setup in two steps
- Notion side. At developers.notion.com choose View my integrations, create a new internal integration (free on every plan), copy the token, then CONNECT the integration to your target database via the Connections menu on the database page. The connection step is the one everyone forgets.
- FlurryPORT side. Your AI requests secret setup and FlurryPORT emails you a secure page. Paste the token; the database and its title column are fixed at install.
Credential custody
Stored encrypted, resolved at delivery, scrubbed from stored responses. The integration only reaches databases you explicitly connected it to.What to expect
The classic failure is 404 objectnotfound with a perfectly valid token: that is the missing connection, not a wrong id. Receipts carry Notion's real answer, and the rate limit of about three requests per second is far above note-taking speed.Install with your agent
npx flurryport mcp
Point your agent at the FlurryPORT MCP server (npx flurryport mcp) and ask it for the flurryport:notion-append recipe. Works from AI clients that can run a local process: desktop apps and terminal agents. Web-only chat clients cannot reach a local MCP server; open a desktop client instead.
Tools your agent gains
flry_notion_append- Append an entry to the configured Notion database. Input: title (required), text (optional body paragraph).
Setup walkthrough
NOTION_TOKEN: At developers.notion.com, choose View my integrations (the stable front door; in-app paths and domains move around, and workspace admin screens offering paid token features are the wrong place - internal integrations are free on every plan). New integration, type Internal, your workspace. Under Capabilities tick exactly Read content and Insert content, leave Update content and both comment capabilities off, and set User capabilities to No user information - Notion preselects reading user emails, which this recipe never needs. Save, copy the Access token, and paste it into the FlurryPORT secret page. Then open the target database, Connections menu, add the integration - without that connection every call answers 404.
Intent schema
{
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"maxLength": 2000
},
"text": {
"type": "string",
"description": "Optional body paragraph appended inside the new entry. Sent as no content block when omitted."
}
}
}Install-time parameters
databaseId- install-time: Database that receives the entries created by this install.
titleProperty- install-time: The database's title property; Notion rejects entries whose title is sent under any other property name.
Transformation
{ "parent": { "database_id": $install.databaseId }, "properties": { $install.titleProperty: { "title": [ { "text": { "content": $body.title } } ] } }, "children": ($exists($body.text) ? [ { "object": "block", "type": "paragraph", "paragraph": { "rich_text": [ { "type": "text", "text": { "content": $body.text } } ] } } ] : []) }Delivery target
POST https://api.notion.com/v1/pages
Placeholders like $secrets.NAME resolve server-side at delivery, never in the agent.
Gotchas
- The integration must be CONNECTED to the database via the Connections menu on the database page; a valid token without the connection answers 404 object_not_found, which reads like a wrong id but is not.
- The title must ride the database's real title property name, exactly as the column header reads.
- Rate limit is about 3 requests per second; Notion-Version is pinned 2022-06-28.
Where this fits
Related recipes
Let your AI add records to an Airtable table; the token stays server-side.
Create and update Azure DevOps work items in one batched pipe: priority, state, tags, and sprint included.
Query Azure DevOps work items with WIQL and read the matching ids back, without your AI ever holding the PAT.
Read fields for a batch of Azure DevOps work items by id: title, state, tags, priority, iteration.
Let your AI file Azure DevOps work items (bugs, tasks) the model never holds credentials for.
Let your AI post to Discord through a channel webhook the model never sees.