Agent skill

Notion Openapi Skill

by holon-run in holon-run/uxc

Operate Notion Public API through UXC with a curated OpenAPI schema for search, block traversal, page reads, content writes, and data source/database inspection.

MITAuto-check passedBackend & APIs

Install Notion Openapi Skill

skills CLI
$ npx skills add holon-run/uxc --skill notion-openapi-skill -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install holon-run/uxc notion-openapi-skill --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/holon-run/uxc.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/notion-openapi-skill .claude/skills/notion-openapi-skill && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
notion-openapi-skill
GitHub stars
116
Token cost
~2.3k tokens
SKILL.md length
790 words
Files
5 (incl. scripts, references)
Skills in repo
62
Repo updated
First seen
Licence
MIT

At a glance

Operate Notion Public API through UXC with a curated OpenAPI schema for search, block traversal, page reads, content writes, and data source/database inspection.

  • Works in 4 steps: Open the Notion integrations dashboard… → In the integration configuration page,… → In Notion UI, open each target page,… → …
  • Tasks need recursive reads
  • SKILL.md covers Prerequisites, Scope, Endpoint And Version and Authentication, plus 4 more sections
  • Runs Shell scripts from its folder; reaches api.notion.com; needs NOTION_API_TOKEN

What it does

Notion Openapi Skill is an agent skill from holon-run/uxc. Operate Notion Public API through UXC with a curated OpenAPI schema for search, block traversal, page reads, content writes, and data source/database inspection. Use when tasks need recursive reads or structured writes that Notion MCP does not expose directly.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `agents/openai.yaml`, `references/notion-public.openapi.json` and `references/usage-patterns.md`).

It sits in Backend & APIs, covering OpenAPI specifications. It works with Notion, OpenAPI and Model Context Protocol. The repository describes itself as: A unified CLI for discovering and invoking tools across OpenAPI, MCP, GraphQL, gRPC, and JSON-RPC. The licence is MIT.

When your agent uses it

  • Tasks need recursive reads
  • Structured writes that Notion MCP does not expose directly

Example prompts

  • “/notion-openapi-skill”

Requirements

  • A Bash shell
  • A credential in NOTION_API_TOKEN

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Open the Notion integrations dashboard and create an internal integration for your workspace.
  2. In the integration configuration page, copy the API secret shown by Notion.
  3. In Notion UI, open each target page, data source, or database and add this integration via Share or Connections.
  4. Use that API secret as NOTION_API_TOKEN or pass it directly to uxc auth credential set.

What it can do on your machine

Read from SKILL.md and the folder at commit 562d47c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.notion.com

    Also links to:

    • developers.notion.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • NOTION_API_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Notion Openapi Skill loads about 2.3k tokens when it runs, and up to ~8.8k if it reads all its reference files. Until then it costs about 70 tokens; SKILL.md has 790 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~70
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from holon-run/uxc at commit 562d47c, republished under its MIT licence (© holon-run). 790 words, ~2,341 tokens.

Download SKILL.mdSave it as .claude/skills/notion-openapi-skill/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
notion-openapi-skill
description
Operate Notion Public API through UXC with a curated OpenAPI schema for search, block traversal, page reads, content writes, and data source/database inspection. Use when tasks need recursive reads or structured writes that Notion MCP does not expose directly.

Notion Public API Skill

Use this skill to run Notion Public API operations through uxc + OpenAPI.

Reuse the uxc skill for shared execution, OAuth, and error-handling guidance.

Prerequisites

  • uxc is installed and available in PATH.
  • Network access to https://api.notion.com/v1.
  • Access to the curated OpenAPI schema URL:
    • https://raw.githubusercontent.com/holon-run/uxc/main/skills/notion-openapi-skill/references/notion-public.openapi.json
  • A Notion integration token or OAuth credential with content read access.
  • For writes, the integration also needs the corresponding Notion insert/update content capabilities.

Scope

This skill covers a read-first Notion REST surface focused on traversal plus common content writes:

  • token identity validation
  • title search for pages, data sources, and databases
  • page lookup
  • block lookup
  • recursive traversal via block-children pagination
  • page property retrieval
  • page creation
  • page updates, including trash/restore via in_trash
  • block append
  • block updates
  • block deletion
  • data source retrieval and query
  • legacy database retrieval and query

This skill does not cover:

  • full Notion REST coverage
  • comments, file uploads, webhooks, page move, or schema mutation
  • automatic recursive traversal loops inside one single command

Endpoint And Version

  • base URL: https://api.notion.com/v1
  • required version header for this skill: Notion-Version: 2026-03-11

The schema is intentionally curated around traversal and schema discovery. It is not a full dump of the Notion API.

Authentication

Notion Public API requires:

  • Authorization: Bearer <token>
  • Notion-Version: 2026-03-11

If you already have an internal integration token:

bash
uxc auth credential set notion-openapi \
  --auth-type api_key \
  --header "Authorization=Bearer {{secret}}" \
  --header "Notion-Version=2026-03-11" \
  --secret-env NOTION_API_TOKEN

uxc auth binding add \
  --id notion-openapi \
  --host api.notion.com \
  --path-prefix /v1 \
  --scheme https \
  --credential notion-openapi \
  --priority 100

How to get the internal integration token:

  1. Open the Notion integrations dashboard and create an internal integration for your workspace.
  2. In the integration configuration page, copy the API secret shown by Notion.
  3. In Notion UI, open each target page, data source, or database and add this integration via Share or Connections.
  4. Use that API secret as NOTION_API_TOKEN or pass it directly to uxc auth credential set.

Without connecting the integration to the target content, REST calls may authenticate successfully but still fail with access errors or return incomplete search results.

If you want OAuth-managed tokens for the REST host:

bash
uxc auth oauth start notion-openapi \
  --endpoint https://api.notion.com/v1 \
  --redirect-uri http://127.0.0.1:8788/callback \
  --client-id <client_id> \
  --scope read

uxc auth oauth complete notion-openapi \
  --session-id <session_id> \
  --authorization-response 'http://127.0.0.1:8788/callback?code=...'

uxc auth credential set notion-openapi \
  --auth-type oauth \
  --header "Authorization=Bearer {{secret}}" \
  --header "Notion-Version=2026-03-11"

uxc auth binding add \
  --id notion-openapi \
  --host api.notion.com \
  --path-prefix /v1 \
  --scheme https \
  --credential notion-openapi \
  --priority 100
Advanced: reuse the same OAuth credential as notion-mcp

This is technically possible in uxc if the existing credential already has a valid Notion OAuth access token.

Important:

  • once an OAuth credential uses custom headers, include Authorization=Bearer {{secret}} explicitly
  • adding Notion-Version=2026-03-11 on the shared credential means the same header will also be sent to mcp.notion.com/mcp
  • that extra header is expected to be harmless, but this is an interoperability assumption rather than an explicit Notion guarantee

Shared-credential setup:

bash
uxc auth credential set notion-mcp \
  --auth-type oauth \
  --header "Authorization=Bearer {{secret}}" \
  --header "Notion-Version=2026-03-11"

uxc auth binding add \
  --id notion-openapi-shared \
  --host api.notion.com \
  --path-prefix /v1 \
  --scheme https \
  --credential notion-mcp \
  --priority 100

Validate the effective mapping when auth looks wrong:

bash
uxc auth binding match https://api.notion.com/v1

Core Workflow

  1. Use the fixed link command by default:

    • command -v notion-openapi-cli
    • If missing, create it: uxc link notion-openapi-cli https://api.notion.com/v1 --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/notion-openapi-skill/references/notion-public.openapi.json
    • notion-openapi-cli -h
  2. Inspect operation schema first:

    • notion-openapi-cli post:/search -h
    • notion-openapi-cli get:/blocks/{block_id}/children -h
    • notion-openapi-cli post:/pages -h
    • notion-openapi-cli patch:/blocks/{block_id}/children -h
    • notion-openapi-cli post:/data_sources/{data_source_id}/query -h
  3. Prefer read validation before broader traversal:

    • notion-openapi-cli get:/users/me
    • notion-openapi-cli post:/search '{"query":"Roadmap","filter":{"property":"object","value":"page"},"page_size":10}'
    • notion-openapi-cli get:/blocks/{block_id}/children block_id=<uuid> page_size=100
  4. Traverse recursively outside the API call boundary:

    • use get:/blocks/{block_id}/children page by page
    • for every returned child block with has_children=true, call get:/blocks/{block_id}/children again on that child ID
  5. Use data source or legacy database reads to discover schema before property-sensitive queries:

    • notion-openapi-cli get:/data_sources/{data_source_id} data_source_id=<uuid>
    • notion-openapi-cli post:/data_sources/{data_source_id}/query data_source_id=<uuid> '{"page_size":25}'
    • notion-openapi-cli get:/databases/{database_id} database_id=<uuid>
  6. Execute writes only after explicit user confirmation:

    • create page: notion-openapi-cli post:/pages '{...}'
    • append blocks: notion-openapi-cli patch:/blocks/{block_id}/children '{...}'
    • update page or block: notion-openapi-cli patch:/pages/{page_id} '{...}'
    • delete block: notion-openapi-cli delete:/blocks/{block_id} block_id=<uuid>
Show full SKILL.md (249 more words)Show less

Operation Groups

Session / Discovery
  • get:/users/me
  • post:/search
Page And Block Traversal
  • get:/pages/{page_id}
  • get:/pages/{page_id}/properties/{property_id}
  • get:/blocks/{block_id}
  • get:/blocks/{block_id}/children
Page And Block Writes
  • post:/pages
  • patch:/pages/{page_id}
  • patch:/blocks/{block_id}/children
  • patch:/blocks/{block_id}
  • delete:/blocks/{block_id}
Data Source Reads
  • get:/data_sources/{data_source_id}
  • post:/data_sources/{data_source_id}/query
Legacy Database Reads
  • get:/databases/{database_id}
  • post:/databases/{database_id}/query

Guardrails

  • Keep automation on the JSON output envelope; do not use --text.
  • Parse stable fields first: ok, kind, protocol, data, error.
  • This skill fixes Notion-Version at the credential/header layer instead of requiring it as an operation argument. Keep the credential header on 2026-03-11 unless you intentionally migrate the whole skill surface.
  • This skill is read-first, but it now includes common content writes. Always confirm intent before post:/pages, patch:/pages/{page_id}, patch:/blocks/{block_id}/children, patch:/blocks/{block_id}, or delete:/blocks/{block_id}.
  • On Notion API version 2026-03-11, archived has been replaced by in_trash for request and response semantics. Prefer in_trash in update payloads.
  • patch:/blocks/{block_id}/children supports up to 100 new children in one request and up to two levels of nested blocks in a single payload.
  • patch:/blocks/{block_id} updates block content, but it does not update child lists. Use patch:/blocks/{block_id}/children to append nested content.
  • Prefer data_sources endpoints over legacy databases endpoints for new workflows. Keep legacy database reads only for compatibility with older shared links and IDs.
  • get:/blocks/{block_id}/children returns only one nesting level at a time. Recursive traversal must be performed by repeated calls.
  • Notion may return fewer results than page_size; always check has_more and next_cursor.
  • notion-openapi-cli <operation> ... is equivalent to uxc https://api.notion.com/v1 --schema-url <notion_openapi_schema> <operation> ....

References

© holon-run, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (scripts, references) in skills/notion-openapi-skill of holon-run/uxc.

  • SKILL.md
  • agents/openai.yaml
  • references/notion-public.openapi.json
  • references/usage-patterns.md
  • scripts/validate.sh

Open the folder on GitHubat commit 562d47c

Compare with similar skills

Notion Openapi Skill next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Notion Openapi Skill compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Notion Openapi Skill this skillholon-run/uxc116—~2.3kAutomated safety check: PassMIT
OpenAPI to MCP Servermcp-use/mcp-use11k—~5.2kAutomated safety check: PassApache-2.0
API Endpoint Contracttrycompai/comp2k—~2.7kAutomated safety check: PassAGPL-3.0
SpikardGoldziher/spikard123—~799Automated safety check: PassMIT
Executor Usagejeremyosih/pi-executor104—~1.4kAutomated safety check: PassMIT
Catalog Sample Datakubeflow/hub186—~1.1kAutomated safety check: PassApache-2.0

Similar skills

  • OpenAPI to MCP Server

    mcp-use/mcp-use

    Turns an OpenAPI or Swagger spec into an MCP server with the mcp-use TypeScript SDK, mapping each operation to a tool, wiring auth, testing and deploying.

    11k GitHub stars~5.2k tokensUpdated today
    Backend & APIsAuto-check passed
  • API Endpoint Contract

    trycompai/comp

    The contract every new or modified API endpoint must follow so it is correct for the public OpenAPI spec, the MCP server (npm @trycompai/mcp-server), the ValidationPipe, and the docs.

    2k GitHub stars~2.7k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Spikard

    Goldziher/spikard

    Scaffold Spikard projects and generate code from OpenAPI, AsyncAPI, OpenRPC, GraphQL, and Protobuf schemas using the Spikard CLI or its MCP server.

    123 GitHub stars~799 tokensUpdated 5 days ago
    Backend & APIsAuto-check passed
  • Executor Usage

    jeremyosih/pi-executor

    Load this skill before using the execute tool. An agent skill from jeremyosih/pi-executor.

    104 GitHub stars~1.4k tokensUpdated 3 mo ago
    Backend & APIsAuto-check passed
  • Generate or update sample YAML data for a catalog plugin. An agent skill from kubeflow/hub.

    186 GitHub stars~1.1k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Kingdee MCP Dev

    WaHaiLong/KingdeeMCP

    Knowledge base for the Kingdee MCP Dev Squad. An agent skill from WaHaiLong/KingdeeMCP.

    103 GitHub stars~853 tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed

More from holon-run/uxc

All 62 skills in this repo
  • Context7 MCP Skill

    holon-run/uxc

    Query up-to-date library documentation and code examples using Context7 MCP.

    116 GitHub stars~564 tokensUpdated 23 days ago
    Auto-check passed
  • Deepwiki MCP Skill

    holon-run/uxc

    Ask questions and read documentation about any GitHub repository using DeepWiki MCP.

    116 GitHub stars~700 tokensUpdated 23 days ago
    Auto-check passed
  • Operate Linear workspace issues, projects, and teams through Linear GraphQL API using UXC.

    116 GitHub stars~1.8k tokensUpdated 23 days ago
    Auto-check passed
  • Operate Alchemy Prices API reads through UXC with a curated OpenAPI schema, path-templated API-key auth, and read-first guardrails.

    116 GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Uxc

    holon-run/uxc

    Discover and call remote schema-exposed interfaces with UXC.

    116 GitHub stars~1.8k tokensUpdated 23 days ago
    Auto-check passed
  • Operate Chainbase indexed wallet and token reads through UXC with a curated OpenAPI schema, API-key auth, and read-first guardrails.

    116 GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed

Categories

Questions about Notion Openapi Skill

What does Notion Openapi Skill do?

Operate Notion Public API through UXC with a curated OpenAPI schema for search, block traversal, page reads, content writes, and data source/database inspection. Notion Openapi Skill is an agent skill from holon-run/uxc. Operate Notion Public API through UXC with a curated OpenAPI schema for search, block traversal, page reads, content writes, and data source/database inspection.

When should I use Notion Openapi Skill?

Notion Openapi Skill fits situations like: tasks need recursive reads; structured writes that Notion MCP does not expose directly.

How do I install Notion Openapi Skill in Claude Code?

Run `npx skills add holon-run/uxc --skill notion-openapi-skill -a claude-code`. Or copy the skill folder (skills/notion-openapi-skill in holon-run/uxc) into .claude/skills/notion-openapi-skill in your project. Claude Code loads it when a task matches its description.

How do I install Notion Openapi Skill in Codex?

Run `npx skills add holon-run/uxc --skill notion-openapi-skill -a codex`. Or copy the skill folder (skills/notion-openapi-skill in holon-run/uxc) into .agents/skills/notion-openapi-skill in your project. Codex loads it when a task matches its description.

Can I use Notion Openapi Skill in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add holon-run/uxc --skill notion-openapi-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/notion-openapi-skill, .gemini/skills/notion-openapi-skill, .github/skills/notion-openapi-skill and .opencode/skills/notion-openapi-skill in your project.

What does Notion Openapi Skill need to run?

Going by SKILL.md and its folder, Notion Openapi Skill needs a shell for the scripts in its folder and credentials named NOTION_API_TOKEN. Our summary lists: A Bash shell; A credential in NOTION_API_TOKEN.

Does Notion Openapi Skill access the network?

SKILL.md names 2 domains. In commands or code: api.notion.com; the agent is likely to contact it when it follows the instructions. As links in the text: developers.notion.com. This is read from the text; nothing was executed.

Is Notion Openapi Skill safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Notion Openapi Skill use?

Notion Openapi Skill is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Notion Openapi Skill use?

About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.4k tokens, read only when the agent opens those files.

What are the alternatives to Notion Openapi Skill?

Skills that share tags, products or a category with Notion Openapi Skill: OpenAPI to MCP Server (mcp-use/mcp-use, 11k stars), API Endpoint Contract (trycompai/comp, 2k stars), Spikard (Goldziher/spikard, 123 stars) and Executor Usage (jeremyosih/pi-executor, 104 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Notion Openapi Skill?

holon-run (a GitHub organization) maintains it in holon-run/uxc, which has 116 GitHub stars. The repository holds 62 skills in this directory. The repository was last updated on September 15, 2026.

Source: holon-run/uxc on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.