OneNote Notes

Other

Manage OneNote notebooks, sections, pages, and page content via Microsoft Graph API. Use this skill when users want to read, create, or update OneNote pages, manage sections and notebooks, and work with page content as HTML via the OneNote API.

Install

openclaw skills install @hith3sh/onenote

OneNote Notes

OneNote Notes

Access OneNote via Microsoft Graph API with managed OAuth authentication. Manage notebooks, sections, and pages; read and update page content as HTML; and navigate the OneNote hierarchy.

This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure OneNote API access yourself.

Setup in 3 Steps

Step 1: InstallStep 2: Pair AccountStep 3: Connect OneNote
InstallPairApp-specific connection GIF coming soon
Run the install command in OpenClawSign in and approve the deviceOpen the dashboard and connect OneNote

How It Works

┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐
│   OpenClaw      │────▶│   ClawLink   │────▶│ Microsoft Graph  │
│   (User Chat)   │     │   (OAuth)    │     │  (OneNote API)   │
└─────────────────┘     └──────────────┘     └──────────────────┘
          │                       │                       │
          │  1. Install Plugin   │                       │
          │  2. Pair Device      │                       │
          │  3. Connect OneNote   │                       │
          │                      │  4. Secure Token      │
          │                      │  5. Proxy Requests    │
          │                      │                       │
          ▼                      ▼                       ▼
    ┌──────────┐           ┌──────────┐           ┌──────────┐
    │  SKILL   │           │ Dashboard│           │ OneNote  │
    │  File    │           │ Auth     │           │ Notebooks│
    └──────────┘           └──────────┘           └──────────┘

Install

Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.

openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart

Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for OneNote again."

Quick Start

# List user's notebooks
clawlink_call_tool --tool "onenote_list_user_notebooks" --params '{"user_id": "me"}'

# List sections in a notebook
clawlink_call_tool --tool "onenote_list_user_notebook_sections" --params '{"user_id": "me", "notebook_id": "NOTEBOOK_ID"}'

# Get page content
clawlink_call_tool --tool "onenote_get_me_section_page_content" --params '{"section_id": "SECTION_ID", "page_id": "PAGE_ID"}'

Authentication

All OneNote tool calls are authenticated automatically by ClawLink using the user's connected Microsoft account.

No API key is required in chat. ClawLink stores the OAuth token securely and injects it into every Microsoft Graph request on the user's behalf.

Getting Connected

  1. Install the ClawLink plugin (see Install above).
  2. Pair the plugin with clawlink_begin_pairing if it is not configured yet.
  3. Open https://claw-link.dev/dashboard?add=onenote and connect OneNote.
  4. Call clawlink_list_integrations to verify the connection is active.

Connection Management

List Connections

clawlink_list_integrations

Response: Returns all connected integrations. Look for onenote in the list.

Verify Connection

clawlink_list_tools --integration onenote

Response: Returns the live tool catalog for OneNote.

Reconnect

If OneNote tools are missing or the connection shows an error:

  1. Direct the user to https://claw-link.dev/dashboard?add=onenote
  2. After they confirm, call clawlink_list_integrations to verify
  3. Then call clawlink_list_tools --integration onenote

Security & Permissions

  • Access is scoped to notebooks, sections, and pages within the connected Microsoft account.
  • All write operations require explicit user confirmation. Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.
  • Destructive actions (delete page content, delete section) must be confirmed.
  • Copy operations are asynchronous — poll the operation status endpoint until complete.

Tool Reference

Notebook Operations

ToolDescriptionMode
onenote_list_user_notebooksList all notebooks for a userRead
onenote_get_user_notebookGet notebook properties by IDRead
onenote_get_notebook_from_web_urlGet notebook from SharePoint or OneNote URLRead
onenote_create_me_notebooksCreate a new notebook for the signed-in userWrite
onenote_copy_onenote_site_notebookCopy a SharePoint site notebookWrite
onenote_copy_onenote_group_notebookCopy a Microsoft 365 group notebookWrite

Section Operations

ToolDescriptionMode
onenote_list_user_notebook_sectionsList sections in a user's notebookRead
onenote_get_site_sectionsGet a SharePoint site section by IDRead
onenote_get_group_sectionsGet a Microsoft 365 group section by IDRead
onenote_create_site_notebooks_sectionsCreate a section in a SharePoint notebookWrite
onenote_create_me_sections_pagesCreate a page in a user's sectionWrite
onenote_create_user_notebooks_sectionsCreate a section in a user's notebookWrite
onenote_update_me_sectionsRename a sectionWrite
onenote_update_site_notebooks_sectionsUpdate a SharePoint sectionWrite
onenote_update_user_notebooks_sectionsUpdate a user's sectionWrite
onenote_copy_section_to_notebook2Copy a section to another notebookWrite
onenote_copy_section_to_notebook_for_user2Copy a section to a user's notebookWrite

Page Operations

ToolDescriptionMode
onenote_list_me_onenote_sections_pages4List pages in a user's sectionRead
onenote_get_me_section_page_contentGet HTML content of a user's pageRead
onenote_get_onenote_user_page_contentGet HTML content of a user's page by IDRead
onenote_list_site_pages_contentGet HTML content of a SharePoint site pageRead
onenote_get_site_pages_previewGet text preview of a SharePoint pageRead
onenote_create_me_sections_pagesCreate a new page in a sectionWrite
onenote_create_site_notebooks_sectionsCreate a page in a SharePoint site sectionWrite
onenote_update_me_page_contentUpdate page content via HTML patch commandsWrite
onenote_update_onenote_page_contentUpdate a group page's contentWrite
onenote_update_site_pages_contentUpdate a SharePoint page's contentWrite
onenote_delete_onenote_group_sections_pages2Delete a page from a group notebookWrite
onenote_delete_site_pagesDelete a SharePoint site pageWrite
onenote_delete_user_onenote_sections_pagesDelete a page from a user's sectionWrite
onenote_delete_user_pagesDelete a user's OneNote pageWrite
onenote_delete_onenote_group_section_group_page_contentDelete page content from a section groupWrite

Section Group Operations

ToolDescriptionMode
onenote_list_group_notebook_section_groupsList section groups in a group notebookRead
onenote_get_notebook_section_groupGet a section group from a group notebookRead
onenote_list_onenote_group_section_groups_section_groups2List nested section groupsRead
onenote_list_group_section_groups_sectionsList sections in a section groupRead
onenote_count_notebooks_section_groups_sectionsCount sections in a section groupRead
onenote_create_onenote_group_notebooks_section_groupsCreate a section group in a group notebookWrite
onenote_create_group_section_groups_sectionsCreate a section in a section groupWrite
onenote_update_site_section_groups_sectionsUpdate a section in a section groupWrite

Async Operation Status

ToolDescriptionMode
onenote_get_onenote_group_operationsCheck status of a group async operationRead
onenote_get_onenote_site_operationsCheck status of a SharePoint async operationRead

Code Examples

List notebooks

clawlink_call_tool --tool "onenote_list_user_notebooks" \
  --params '{
    "user_id": "me"
  }'

Get page content

clawlink_call_tool --tool "onenote_get_me_section_page_content" \
  --params '{
    "section_id": "SECTION_ID",
    "page_id": "PAGE_ID"
  }'

Create a new page

clawlink_call_tool --tool "onenote_create_me_sections_pages" \
  --params '{
    "section_id": "SECTION_ID",
    "html": "<html><head><title>New Page</title></head><body><p>Page content here.</p></body></html>"
  }'

Update page content

clawlink_call_tool --tool "onenote_update_me_page_content" \
  --params '{
    "page_id": "PAGE_ID",
    "commands": [
      {
        "action": "append",
        "target": "body",
        "content": "<p>New paragraph added via API.</p>"
      }
    ]
  }'

Discovery Workflow

  1. Call clawlink_list_integrations to confirm OneNote is connected.
  2. Call clawlink_list_tools --integration onenote to see the live catalog.
  3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.
  4. If the user describes a capability but the exact tool is unclear, call clawlink_search_tools with a short query and integration onenote.
  5. If no OneNote tools appear, direct the user to https://claw-link.dev/dashboard?add=onenote.

Execution Workflow

┌─────────────────────────────────────────────────────────────┐
│  READ OPERATIONS (Safe)                                     │
│  list → get → search → describe → call                      │
│                                                             │
│  Example: List notebooks → Read sections → Show results    │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│  WRITE OPERATIONS (Require Confirmation)                     │
│  list → get → describe → preview → confirm → call           │
│                                                             │
│  Example: Describe tool → Preview changes → User approves   │
│           → Execute update                                  │
└─────────────────────────────────────────────────────────────┘
  1. For unfamiliar tools, ambiguous requests, or any write action, call clawlink_describe_tool first.
  2. Use the returned guidance, schema, whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.
  3. Prefer read, list, search, and get operations before writes when that reduces ambiguity.
  4. For writes or anything marked as requiring confirmation, call clawlink_preview_tool first.
  5. Execute with clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.
  6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.

Notes

  • Page content must be provided as valid HTML with proper html, head, and body tags.
  • Asynchronous copy operations return a 202 Accepted with an Operation-Location header — poll this endpoint to check completion.
  • Section names must be 50 characters or fewer and cannot contain: ?*/:<>|&#''%~.
  • Notebook names must be 128 characters or fewer and cannot contain: ?*\/:<>|&'".
  • Only the displayName property can be updated on sections — other properties are read-only.

Error Handling

Status / ErrorMeaning
Tool not foundThe tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration onenote.
Missing connectionOneNote is not connected. Direct the user to https://claw-link.dev/dashboard?add=onenote.
notFoundNotebook, section, or page does not exist. Check the ID.
InvalidArgumentInvalid parameter or missing required field. Review the tool schema with clawlink_describe_tool.
Operation pendingAsync operation still in progress. Poll the Operation-Location endpoint.
Write rejectedUser did not confirm a write action. Always confirm before executing writes.

Troubleshooting: Tools Not Visible

  1. Check that the ClawLink plugin is installed:
    openclaw plugins list
    
  2. If the plugin is installed but tools are missing, tell the user to send /new as a standalone message to reload the catalog.
  3. If a fresh chat does not help, run:
    openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
    openclaw gateway restart
    
  4. After restart, tell the user to send /new again and retry.

Troubleshooting: Invalid Tool Call

  1. Ensure the integration slug is exactly onenote.
  2. Use clawlink_describe_tool to verify parameter names and types before calling.
  3. For write operations, always call clawlink_preview_tool first.

Resources

Related Skills


Powered by ClawLink — an integration hub for OpenClaw

ClawLink Logo