Microsoft OneNote integration
Microsoft OneNote through Microsoft Graph v1.0, on the signed-in user's notebooks: list, read and create notebooks, sections and section groups; list and read pages, read a page's HTML and the images or files it holds; create pages from HTML, append, insert or replace page content, delete pages; and copy notebooks, sections and pages (the copy runs in the background and its progress cannot be read here). Lists return one page of results (20 by default, up to 100 with $top) and page with $skip. Not exposed: notebooks of other users, groups and SharePoint sites, the copy-operation status route (its id comes only in a response header), and multipart page creation with uploaded files (images are referenced by public URL instead). Authentication is OAuth 2.0 with a Microsoft account, work, school or personal (delegated Notes.ReadWrite); finding a notebook by its URL needs a work or school account.
Say what should happen.
The workflow builds itself.
What you can do with Microsoft OneNote
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Section, 8 operations
copy_section_to_notebookCopy section to notebookPOSTStarts copying a section into a notebook (id from list_notebooks). Runs in the background; this tool cannot report the outcome: check later with list_notebook_sections.copy_section_to_section_groupCopy section to section groupPOSTStarts copying a section into a section group (id from list_section_groups). Runs in the background; this tool cannot report the outcome: check later with list_section_group_sections.create_notebook_sectionCreate notebook sectionPOSTCreates a section directly in a notebook and returns it with its id. Names must be unique at that level, at most 50 characters, without ? * / : < > | & # % ~ or quote marks.create_section_group_sectionCreate section group sectionPOSTCreates a section inside a section group and returns it with its id. Names must be unique at that level, at most 50 characters, without ? * / : < > | & # % ~ or quote marks.get_sectionGet sectionGETGets one section: name, whether it is the default section, links, dates, its parent notebook and parent section group.list_notebook_sectionsList notebook sectionsGETLists the sections directly in a notebook (not those inside its section groups), by name, with their parent notebook. One page of results: 20 by default, up to 100 with $top; page with $skip.list_section_group_sectionsList section group sectionsGETLists the sections directly inside a section group. One page of results: 20 by default, up to 100 with $top; page with $skip.list_sectionsList sectionsGETLists every section in the user's notebooks, those in section groups included, with parent notebook and section group, by name. One page of results: 20 by default, up to 100 with $top; page with $skip.
Page, 7 operations
copy_page_to_sectionCopy page to sectionPOSTStarts copying a page into a section (id from list_sections). Runs in the background; this tool cannot report the outcome: check later with list_section_pages.create_pageCreate pagePOSTCreates a page from XHTML in the user's default notebook: in its default section, or in the section named sectionName, which is created when it does not exist. Returns the new page with its id.create_section_pageCreate section pagePOSTCreates a page from XHTML in a section and returns it with its id. The <title> becomes the page title; images are referenced by public https URL. A full section answers 507.delete_pageDelete pageDELETEDeletes a OneNote page from the user's notebook. No tool here can restore it.get_pageGet pageGETGets one page's metadata: title, links to open it, created and modified dates, the app that created it and its parent section; pagelevel=true adds its indentation level and order. Read its HTML with get_page_content.list_pagesList pagesGETLists pages across all of the user's notebooks, last modified first, with title, links, dates and parent section. One page of results: 20 by default, up to 100 with $top; page with $skip. Filter with $filter, for example on title.list_section_pagesList section pagesGETLists the pages of a section, last modified first, with title, links and dates; pagelevel=true adds each page's indentation level and order. One page of results: 20 by default, up to 100 with $top; page with $skip.
Section group, 6 operations
create_notebook_section_groupCreate notebook section groupPOSTCreates a section group directly in a notebook and returns it with its id. Names must be unique at that level, at most 50 characters, without ? * / : < > | & # % ~ or quote marks.create_section_group_section_groupCreate section group section groupPOSTCreates a section group inside a section group and returns it with its id. Names must be unique at that level, at most 50 characters, without ? * / : < > | & # % ~ or quote marks.get_section_groupGet section groupGETGets one section group: name, links, dates, its parent notebook and parent section group.list_notebook_section_groupsList notebook section groupsGETLists the section groups directly in a notebook, by name, with their parent notebook. One page of results: 20 by default, up to 100 with $top; page with $skip.list_section_groupsList section groupsGETLists every section group in the user's notebooks, nested ones included, with parent notebook and parent section group. One page of results: 20 by default, up to 100 with $top; page with $skip.list_section_group_section_groupsList section group section groupsGETLists the section groups directly inside a section group. One page of results: 20 by default, up to 100 with $top; page with $skip.
Notebook, 5 operations
copy_notebookCopy notebookPOSTStarts copying a notebook into the Notebooks folder of the destination Documents library (the user's, or a group's with groupId). Runs in the background; this tool cannot report the outcome: check later with list_notebooks.create_notebookCreate notebookPOSTCreates a OneNote notebook for the signed-in user and returns it with its id. Notebook names must be unique, at most 128 characters, without ? * / : < > | ' or ".get_notebookGet notebookGETGets one notebook: name, whether it is the default or shared, the user's role (Owner, Contributor, Reader), links to open it, and created and modified dates.get_notebook_from_web_urlGet notebook from web urlPOSTFinds a notebook from its full URL (as shown in OneNote on the web, or a onenote: URL) and returns it with its id. Work or school accounts only; personal Microsoft accounts are not supported.list_notebooksList notebooksGETLists the signed-in user's OneNote notebooks, by name: id, name, default and shared flags, the user's role, links and timestamps. Returns the first page of results (20 by default).
Page content, 2 operations
get_page_contentGet page contentGETReturns a page's content as HTML. With includeIDs=true every element carries its generated id, the target update_page_content needs. Images and files appear as resource URLs, readable with get_resource_content.update_page_contentUpdate page contentPATCHChanges a page's content with a list of commands, each {target, action, content, position}: append, insert, prepend or replace HTML at an element. Get element ids with get_page_content and includeIDs=true first.
Recent notebook, 1 operation
list_recent_notebooksList recent notebooksGETLists the notebooks the signed-in user opened most recently: name, last access time, links and where each is stored (OneDrive or OneDriveForBusiness). These entries carry no notebook id.
Resource, 1 operation
get_resource_contentGet resource contentGETDownloads the bytes of an image or file stored in a page and returns them as a stored file. The resource id is in the resource URL shown in the page HTML from get_page_content.
Use Microsoft OneNote from Claude Code, Cursor or Codex
Connect Microsoft OneNote in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Microsoft OneNote operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Microsoft OneNote
- Create your workspace
Sign up free. Nothing to install.
- Connect Microsoft OneNote once
Add your Microsoft OneNote connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Microsoft OneNote integration FAQ
What can you do with the Microsoft OneNote integration?
LiveContext exposes 30 operations on Microsoft OneNote, covering section, page, section group and notebook.
