mcp-onedrive-sharepoint
This server provides comprehensive tools and a CLI for managing files, folders, SharePoint lists, permissions, and Excel workbooks via the Microsoft Graph API, supporting both personal OneDrive and SharePoint document libraries.
File & Folder Management
List, search, get metadata, download, upload, create folders, move/rename, copy, and delete files and folders across OneDrive and SharePoint drives (with conflict resolution, sorting, filtering, and pagination)
SharePoint Sites & Lists
Discover and resolve SharePoint sites; list site lists (including schema/field definitions); list, get, create, update, and delete list items
Drives & Storage
List all accessible drives (OneDrive + SharePoint document libraries) with quota info
Storage analytics: summarize usage, find large/old files, detect duplicates, analyze by file type
Sharing & Permissions
Create sharing links (view/edit/embed, anonymous/org/specific users, with expiration and password)
Advanced sharing with email invitations, custom messages, and permission levels
Manage item-level permissions (list, update, revoke) and check user access
Sync & Batch Operations
Sync a local folder with OneDrive/SharePoint (upload, download, or bidirectional) with conflict resolution and pattern filtering
Batch file operations (upload/download/move/copy/delete/rename in one call)
Raw Microsoft Graph batch requests for up to 20 arbitrary API calls (experimental, opt-in)
File Versions
List, restore, delete, cleanup, and compare file versions
Excel Workbooks
Read/write cell ranges, manage worksheets, set formulas, create tables and charts
Analysis: statistics, pivot summaries, data validation, named ranges
Search
Global search across files, sites, lists, list items, messages, and calendar events, or targeted searches within specific drives or sites
Utilities
Health check, get authenticated user profile (with optional manager/photo), list all drives
Authentication & Configuration
Interactive device-code flow (delegated permissions) or unattended client-credentials flow (application permissions)
Configurable tool profiles:
core(safe, day-to-day) andfull(advanced/destructive tools)Individual tools can be disabled via
MCP_DISABLED_TOOLS; site aliases kept in a local registryCLI (
ods) mirrors all server capabilities for shell-based automation
MCP OneDrive/SharePoint Server
MCP server and CLI for Microsoft Graph focused on OneDrive, SharePoint and related document workflows. It uses 1Password-provisioned client credentials only, starts with a safe 10-tool core profile, and can opt into advanced tools for trusted automation.
Onboarding commands on a clean clone:
npm run buildnpm run lintnpm testnpm run ci
Tool profiles
The server defaults to MCP_TOOL_PROFILE=core, a smaller public surface intended for day-to-day document workflows:
health_check,list_drivesdiscover_sites,resolve_sitelist_files,search_files,get_file_metadatadownload_file,upload_file,create_folder
Set MCP_TOOL_PROFILE=full to expose advanced and destructive tools for trusted environments:
Files:
list_files,download_file,upload_file,create_folder,move_item,delete_item,search_files,get_file_metadata,share_item,copy_itemSharePoint:
discover_sites,resolve_site,list_site_lists,get_list_schema,list_items,get_list_item,create_list_item,update_list_item,delete_list_itemUtilities:
health_check,get_user_profile,list_drives,global_searchAdvanced:
advanced_share,manage_permissions,check_user_access,sync_folder,batch_file_operations,storage_analytics,version_management,excel_operations,excel_analysis
batch_operations is intentionally not part of either profile by default because it is a raw Microsoft Graph escape hatch. Enable it only for admin/debug workflows with MCP_ENABLE_EXPERIMENTAL_GRAPH_BATCH=true.
You can also remove individual tools with MCP_DISABLED_TOOLS=delete_item,manage_permissions.
Related MCP server: OneDrive/SharePoint MCP Server
Why this repo
one MCP server for both OneDrive and SharePoint document libraries
matching
odsCLI for shell scripting and one-shot automation1Password-only client credentials for interactive and unattended use
site aliases loaded from a local registry so tenant IDs stay out of git
pagination/resource helpers for
driveId,siteId,itemIdand path targeting
Requirements
Node.js 18+
A Microsoft Entra ID / Azure AD confidential app registration with Application permissions (
Files.ReadWrite.All,Sites.ReadWrite.All) and admin consent. The 1Password owner must provisioncpz::SP_CLIENT_ID,cpz::SP_CLIENT_SECRET, andcpz::SP_TENANT_ID; the tenant must be a specific UUID, notcommon.
Installation
git clone https://github.com/ftaricano/mcp-onedrive-sharepoint.git
cd mcp-onedrive-sharepoint
npm installOperational wrappers
Important operational rule:
use this MCP on demand
do not keep it permanently bound/loaded in Hermes or Claude Code when not needed
prefer one-shot
spcall/mcporter --stdioexecution so the process exits right after the call and does not accumulate zombie or idle MCP processesthe
spcallwrapper includes post-call cleanup for stray repo-local MCP child processes
This repo includes lightweight wrappers for local operational use:
./scripts/run-stdio.sh: start the MCP stdio server after resolving required values from 1Password./scripts/spcall.sh: run ad-hocmcportercalls against the local MCP servernpm run stdio: same as./scripts/run-stdio.shnpm run spcall -- <tool> ...: same as./scripts/spcall.sh <tool> ...
Quick examples:
npm run build
./scripts/spcall.sh health_check
./scripts/spcall.sh list_drives
./scripts/spcall.sh list_files driveId=b!abc123 path=/Shared%20DocumentsTenant-specific site aliases and drive ids are loaded from a local file — see Site registry below.
CLI (ods)
Every MCP tool is also exposed as a plain subcommand through the ods CLI. It shares the same auth, config and handlers as the MCP server, so anything the MCP does is one-shot runnable from a terminal or a shell script.
npm run build
# `npm install` does NOT put `ods` on your PATH. Link it once, e.g.:
# npm link # or: ln -s "$PWD/scripts/ods.sh" ~/bin/ods
ods list # list all tools with descriptions
ods schema list_files # print JSON schema for a tool
ods auth # exits: delegated token persistence is intentionally disabled
ods <tool> --key=value [--key value] # invoke a tool with CLI flags
ods <tool> --json '{"k":"v"}' # pass the full payload as JSONDuring development, rebuild before npm run cli -- <tool> ...; the command uses
the same packaged 1Password launcher as the installed ods bin.
Examples
ods health_check
ods list_files --site=primary --path=/
ods list_files --driveId=b!abc --path=/Shared%20Documents --limit=50
ods upload_file --json '{"driveId":"b!abc","path":"/x.txt","content":"hello"}'Rules for flags
--key=valueand--key valueare both accepted.true/false/nulland numeric strings are coerced automatically; anything else stays a string.Bare flags (no value, or followed by another flag) become
true.--json '<payload>'takes a JSON object; individual--key=valueflags layered on top override fields from the payload. Use this for tools with nested objects/arrays (e.g. advanced Excel tools).Output is the raw tool payload (usually pretty-printed JSON). If the handler returns an error envelope, the process exits with code
2.
Configuration
The server reads the following environment variables:
# These values are injected only by scripts/with-onepassword-graph-env.sh:
# MICROSOFT_GRAPH_CLIENT_ID
# MICROSOFT_GRAPH_TENANT_ID (specific UUID)
# MICROSOFT_GRAPH_CLIENT_SECRET
MICROSOFT_GRAPH_SCOPES=Files.ReadWrite.All,Sites.ReadWrite.All,Directory.Read.All,User.Read,offline_access
MICROSOFT_GRAPH_BASE_URL=https://graph.microsoft.com/v1.0
MICROSOFT_GRAPH_TIMEOUT=30000
MICROSOFT_GRAPH_MAX_RETRIES=3
MICROSOFT_GRAPH_CACHE_ENABLED=true
MICROSOFT_GRAPH_CACHE_TTL=3600
MCP_TOOL_PROFILE=core
MCP_DISABLED_TOOLS=
MCP_ENABLE_EXPERIMENTAL_GRAPH_BATCH=falseNotes:
Graph credentials are resolved from 1Password for every supported npm command and packaged bin
process-local credential variables are reserved for the launcher and tests;
.envis never loadedset
MCP_LOCAL_FILE_ROOTto constrain local upload/download/sync file access; if unset, local paths are constrained to the process working directory
Authentication modes
1Password client credentials
Every supported launcher resolves cpz::SP_CLIENT_ID, cpz::SP_CLIENT_SECRET, and
cpz::SP_TENANT_ID through the canonical 1Password helper and injects the values only
into its child process. There is no .env, Keychain, file cache, or delegated token
fallback. npm run setup-auth and ods auth fail intentionally because the service
account cannot persist delegated tokens; request owner-mediated provisioning instead.
Development commands
npm run build
npm run lint
npm test
npm run ci
npm start
npm run stdio
npm run spcall -- health_checknpm run ci is the local verification entrypoint and is also what GitHub Actions runs on every PR/push.
MCP behavior notes
Root site inclusion
discover_sites.includePersonalSite=true currently attempts to append the tenant root SharePoint site (/sites/root) when it is available to the authenticated user.
It does not discover or synthesize a personal OneDrive site.
Pagination
The following tools now expose consistent pagination metadata in their JSON payloads:
list_filessearch_filesdiscover_siteslist_site_listslist_items
When Microsoft Graph returns @odata.nextLink, the response includes:
pagination.returnedpagination.limitpagination.totalCountwhen availablepagination.nextPageTokenpagination.hasMore
Pass pageToken back to the same tool to continue paging.
Drive/site targeting
Core file listing/search/download flows now accept:
siteIdfor a SharePoint site's default drivedriveIdfor a specific document library or drivepath-based addressing where supported
This is the current foundation for moving beyond a /me/drive-only model.
Site registry
The resolver can target named SharePoint sites by alias (e.g. site=primary). The registry is loaded from an external JSON file so no tenant-specific ids are committed:
Copy
config/sites.example.jsontoconfig/sites.local.json(gitignored) and fill in your values.Or set
MCP_SITES_CONFIG_PATHto point at a different JSON file.If the file is missing, the registry stays empty and the tools only accept explicit
siteId,siteUrl, ordriveId.
Each site entry looks like:
{
"key": "primary",
"name": "Primary",
"siteId": "yourtenant.sharepoint.com,<guid>,<guid>",
"siteUrl": "https://yourtenant.sharepoint.com/sites/Primary",
"driveId": "b!<drive-id>",
"aliases": ["primary", "/sites/Primary"]
}MCP stdio snippet
Use the wrapper as the MCP command so Graph credentials are resolved from 1Password:
{
"mcpServers": {
"sharepoint": {
"command": "/absolute/path/to/mcp-onedrive-sharepoint/scripts/run-stdio.sh"
}
}
}Example tool inputs
List files from a specific drive
{
"driveId": "b!abc123",
"path": "/Shared Documents",
"limit": 50
}Continue a paginated file listing
{
"driveId": "b!abc123",
"pageToken": "https://graph.microsoft.com/v1.0/drives/b!abc123/root/children?$skiptoken=..."
}Search files in a site drive
{
"siteId": "contoso.sharepoint.com,123,456",
"query": "quarterly report",
"limit": 25
}List SharePoint list items with pagination
{
"siteId": "contoso.sharepoint.com,123,456",
"listId": "9c6b8b70-0000-0000-0000-111111111111",
"orderBy": "Created desc",
"limit": 100
}Troubleshooting
403 Forbiddenon SharePoint lists/drives: the app registration lacks permission to the target site. Check application permissions and admin consent with the owner.404on adriveIdorsiteId: the identifier is stale or the resource was deleted. Uselist_drives/discover_sitesto re-discover.Build fails on a clean clone: make sure Node.js is 18+ and run
npm installbeforenpm run build.AADSTS700016or401: ensure the 1Password owner has provisioned a specific tenant UUID (notcommon) and Application permissions have admin consent in Azure AD.AADSTS7000215(invalid client secret): rotate the secret in the app registration and have the 1Password owner updatecpz::SP_CLIENT_SECRET.
Security
This server handles Microsoft Graph client credentials and access to corporate file storage. Treat it accordingly:
.env,tokens.json,credentials.json, and secret-store exports are never committed — see .gitignore.tenant-specific
siteId,driveId, SharePoint URLs and internal operational paths should stay in local/private docs, not in this public repo.Report security issues privately via GitHub security advisories — do not open a public issue.
If a client secret leaks, revoke it in Azure AD and ask the 1Password owner to rotate
cpz::SP_CLIENT_SECRET.
Contributing
Issues and PRs welcome. Before opening a PR:
npm run cipasses (build + lint + tests)one focused change per PR
no credentials, tenant-specific ids, or internal paths in commits or README
License
MIT © Fernando Taricano
Current limitations
client credentials require Application permissions, admin consent, and owner-mediated provisioning in 1Password
advanced/destructive tools require
MCP_TOOL_PROFILE=fullraw Graph batch calls require
MCP_ENABLE_EXPERIMENTAL_GRAPH_BATCH=true
Available Tools
33 toolsbatch_file_operationsC
Perform multiple file operations in a single batch
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | Array of operations to perform | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| stopOnError | No | Stop processing if an operation fails | |
| parallel | No | Execute operations in parallel (faster but may hit rate limits) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does not explain execution order, atomicity, error handling beyond what 'stopOnError' suggests, or potential rate limiting effects, leaving significant gaps for a batch tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure. It could include brief sections for behavior, use cases, or important notes without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of batch operations with sub-operations and numerous parameters, the description is too brief. It does not explain how the batch is processed (sequential vs parallel), partial failure handling, or output behavior, leaving the agent without critical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so each parameter is already documented in the schema. The description adds no extra meaning beyond what is in the schema, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs multiple file operations in a single batch. It is specific about the verb 'perform' and resource 'file operations', but does not distinguish from the sibling tool 'batch_operations' which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus individual operation tools like upload_file, download_file, or move_item. The description lacks context for when batching is appropriate or beneficial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_operationsB
Execute multiple Graph API operations in a single batch request
| Name | Required | Description | Default |
|---|---|---|---|
| requests | Yes | Array of requests to execute in batch | |
| continueOnError | No | Continue processing other requests if one fails |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, yet the description does not disclose behavioral traits such as error handling (beyond the continueOnError parameter), rate limits, authentication requirements, or response structure. The description only restates the tool's basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no waste. However, it lacks structured formatting (e.g., bullet points) that could improve readability for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of batch operations (array of requests, error continuation), the description omits critical context: how responses are returned, request size limits, dependency behavior, and output structure. Without output schema or annotations, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already describes all parameters and their purposes. The description adds no additional semantic information beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Execute multiple Graph API operations in a single batch request'. The verb 'execute' and resource 'multiple Graph API operations' are specific and distinctive from siblings like batch_file_operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus individual API calls or other sibling tools. No alternatives, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_user_accessB
Check what access a specific user has to a file or folder
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Item ID to check | |
| itemPath | No | Alternative: item path | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| userEmail | Yes | Email address of the user to check | |
| includeInherited | No | Include inherited permissions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states only the purpose and does not reveal that the tool is read-only, what permissions are returned, or any side effects. The agent lacks critical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence starting with the verb 'Check'. It is extremely concise and contains no redundant information, making it efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema, the description is incomplete. It fails to explain how to use the various location identifiers (itemId, itemPath, siteId, etc.) or what the return value looks like, leaving significant gaps for tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The tool description adds no extra semantic detail beyond the schema, meeting the baseline for high-coverage cases but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Check what access a specific user has to a file or folder'. The verb 'Check' and resource 'access' are specific, and the tool is well-distinguished from siblings like 'manage_permissions' (which modifies) and 'share_item' (which shares).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'manage_permissions' or 'share_item'. It does not mention that this is a read-only operation or any exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_itemC
Copy a file or folder in OneDrive or SharePoint
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Item ID to copy | |
| itemPath | No | Alternative: item path to copy | |
| destinationFolderId | No | Destination folder ID | |
| destinationFolderPath | No | Alternative: destination folder path | |
| newName | No | New name for the copied item (optional) | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| destinationSiteId | No | Destination SharePoint site ID (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states the basic operation. It does not disclose permissions needed, whether the operation is async, overwrite behavior, or any side effects. For a copy operation, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise with no fluff. However, it lacks structure (e.g., bullet points) and could be expanded slightly for clarity without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, error handling, or usage patterns, making it incomplete for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters, so the description adds no additional meaning. Baseline score is 3. However, the description does not clarify parameter relationships or precedence (e.g., itemPath vs itemId), which could be improved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Copy a file or folder in OneDrive or SharePoint', clearly specifying the action (copy) and resource (file/folder) with platform context. However, it does not differentiate from sibling 'move_item', but the purpose is still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'move_item' or other file operations. The description lacks context for prerequisites, such as required parameters or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderB
Create a new folder in OneDrive or SharePoint
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Folder name | |
| parentPath | No | Parent folder path (e.g., "/Documents" or "" for root) | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It does not explain idempotency, error behavior on existing folders, authorization needs, or side effects, which are critical for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it could be expanded with minimal additional length to add value about parameter usage or behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters and no output schema or annotations, the description is insufficient. It lacks details on how to specify location (parentPath, driveId), service differentiation, and return values, making it incomplete for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptions in the input schema (100% coverage), so the description adds no extra meaning beyond the schema. A score of 3 is appropriate as the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new folder in OneDrive or SharePoint, with a specific verb and resource, distinguishing it from sibling tools that handle files, lists, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no distinction between OneDrive and SharePoint usage contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_list_itemB
Create a new item in a SharePoint list
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | No | SharePoint site ID | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL | |
| listId | Yes | SharePoint list ID | |
| fields | Yes | Field values for the new item (key-value pairs) | |
| contentType | No | Content type ID (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only implies a write operation but does not mention side effects, error conditions, authorization needs, or output behavior. Incomplete for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundancy. Efficiently communicates the core purpose without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 params, nested object, no output schema, no annotations), the description is insufficient. It lacks context about return values, error handling, required permissions, and parameter relationships.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions, which already exist. Does not explain how fields interact or how site identifiers are resolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new item in a SharePoint list' clearly states the action (create) and the resource (item in a SharePoint list), distinguishing it from siblings like update_list_item, delete_list_item, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., copy_item, upload_file) or prerequisites (e.g., need listId already known, user permissions). The description is silent on context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_itemB
Delete a file or folder from OneDrive or SharePoint
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Item ID to delete | |
| itemPath | No | Alternative: item path to delete | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| permanent | No | Permanently delete (bypass recycle bin) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It omits important behaviors like default recycle bin behavior, permission requirements, or cascading effects. The 'permanent' parameter hints at bypassing recycle bin but is not explained in description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise and front-loaded with essential information. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite high schema coverage, description lacks completeness for a tool with 7 parameters and no output schema. Does not explain how to choose between itemId and itemPath, or how site context is resolved. Missing guidance on required fields (none listed, but likely needed).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (Delete), resource (file or folder), and location (OneDrive or SharePoint). Effectively distinguishes from sibling tools like copy_item or move_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Siblings include delete_list_item and batch_operations, but no context is provided for selection. No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_list_itemC
Delete an item from a SharePoint list
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | No | SharePoint site ID | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL | |
| listId | Yes | SharePoint list ID | |
| itemId | Yes | List item ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility. 'Delete an item' implies an irreversible action, but no further behavioral traits are disclosed (e.g., permanence, error handling, cascading effects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, achieving high conciseness. However, it may be too minimal at the cost of missing valuable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 5 parameters (only 2 required), the description fails to explain how to use optional parameters or what the return values are. It lacks completeness for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is described in the input schema. The description adds no additional meaning beyond the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'delete' and the resource 'item from a SharePoint list'. It distinguishes from sibling tools like create, update, get, copy, and move. However, it does not clarify the difference from 'delete_item', which is also a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'delete_item'. No prerequisites or context (e.g., permissions) are mentioned. The description provides no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_sitesC
Discover SharePoint sites accessible by the user
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search term to filter sites by name or description | |
| limit | No | Maximum number of sites to return | |
| includePersonalSite | No | Also include the tenant root SharePoint site (`/sites/root`) when available | |
| pageToken | No | Opaque pagination token from a previous response (Graph nextLink) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. Only states purpose; no disclosure of read-only nature, pagination handling, rate limits, or other behavioral traits beyond paraphrasing the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded. Efficient but very sparse; could expand slightly without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 optional parameters and no output schema, description should explain return value (likely list of sites) and parameter interactions. Currently too brief for a tool with filtering, pagination, and a special include flag.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no parameter-level detail beyond schema; for example, does not clarify how search filters or how limit affects results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb-resource pairing: 'Discover SharePoint sites accessible by the user.' Distinguishes from siblings like resolve_site (specific site) and global_search (broader). Could be more explicit about listing all accessible sites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings. Implied context from purpose (listing accessible sites) but lacks when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_fileB
Download a file from OneDrive or SharePoint
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | No | File item ID | |
| filePath | No | Alternative: file path (e.g., "/Documents/report.xlsx") | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| outputPath | No | Local path to save the file (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must disclose behavior. It fails to mention important details like file size limits, permissions, output format, or error handling. Merely states the action without behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single 8-word sentence, highly concise. However, it could be restructured to include key details without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no required fields, the description is insufficient. It does not explain which combinations are valid or default behavior. No output schema, yet description omits return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The tool description adds no extra meaning beyond the schema, meeting the baseline expectation of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Download a file from OneDrive or SharePoint', specifying verb and resource. It distinguishes from sibling tools like upload_file and get_file_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as get_file_metadata for metadata-only needs. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
excel_analysisB
Analyze data in Excel workbooks (statistics, pivot tables, data validation)
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Excel file item ID | |
| itemPath | No | Alternative: Excel file path | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| analysisType | Yes | Type of analysis to perform | |
| worksheet | No | Worksheet name | Sheet1 |
| range | No | Cell range to analyze (optional, uses used range if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the burden. It does not disclose whether the tool is read-only, modifies the workbook, requires specific permissions, or any side effects. The description is overly simplistic for a mutation-capable tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, no wasted words. Efficiently communicates core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, multiple analysis types, and no output schema, the description is too minimal. It lacks prerequisites, expected results, or guidance on interpreting analysis outcomes. Incomplete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a high-level summary but does not provide additional meaning beyond what the schema already describes. No extra context for parameters like siteId or analysisType.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Analyze' and resource 'Excel workbooks', lists specific analysis types (statistics, pivot tables, data validation), and distinguishes from sibling tool 'excel_operations' which likely handles other Excel operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no exclusions or context for selecting specific analysis types. The listing of analysis types implies usage but lacks explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
excel_operationsC
Perform operations on Excel workbooks (read, write, formulas)
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Excel file item ID | |
| itemPath | No | Alternative: Excel file path | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| operation | Yes | Operation to perform | |
| worksheet | No | Worksheet name | Sheet1 |
| range | No | Cell range (e.g., "A1:C10") | |
| values | No | Values to write (2D array of cell values) | |
| formulas | No | Formulas to set (2D array of formula strings) | |
| tableName | No | Name for new table | |
| hasHeaders | No | Whether table has headers | |
| chartType | No | Chart type to create | |
| useSession | No | Use persistent session for better performance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It fails to disclose behavioral traits such as whether operations are destructive, authentication needs, rate limits, or session behavior beyond mentioning 'useSession'. The description lacks essential transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key operations, no fluff. However, for a multi-operation tool, more structured listing would improve usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 15 parameters and 8 enum operations, the one-sentence description is insufficient. No output schema or return behavior details. Much more context is needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The tool description adds no extra meaning per parameter beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool performs operations on Excel workbooks, listing read, write, and formulas. It is specific about the resource (Excel workbooks) and verbs (perform operations), but does not differentiate from sibling 'excel_analysis'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'excel_analysis' or when not to use it. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_metadataC
Get detailed metadata for a file or folder
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Item ID | |
| itemPath | No | Alternative: item path | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| includeVersions | No | Include version history |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'get metadata', implying a read-only operation, but provides no detail about permissions, potential errors, output size, or behavior when multiple parameters are supplied. The description is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence) but lacks critical details such as parameter combinations or output. While it is front-loaded, it sacrifices completeness for brevity, making it only moderately effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and no output schema or annotations, the description is too minimal. It does not explain how to use the parameters (e.g., required identification), what the metadata includes, or any ordering constraints. Important context is missing, making the tool harder to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear parameter descriptions (e.g., 'Item ID', 'Alternative: item path'). The tool description adds no extra semantic information, but the schema already explains the parameters adequately. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed metadata for a file or folder', which is specific enough to distinguish it from sibling tools like delete_item or upload_file. However, it does not explicitly mention the SharePoint/OneDrive context that the parameters imply, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool over alternatives like list_files or get_list_item, nor does it mention prerequisites or parameter selection rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_list_itemB
Get a specific item from a SharePoint list
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | No | SharePoint site ID | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL | |
| listId | Yes | SharePoint list ID | |
| itemId | Yes | List item ID | |
| expand | No | Comma-separated list of lookup fields to expand |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden for behavioral disclosure. It only states 'Get...' without confirming it is a read-only operation, whether it requires specific permissions, how errors are handled, or what happens if the item does not exist. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no extraneous words. It is front-loaded with the action and resource. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation with a well-documented schema and no output schema, the description is minimally complete. However, it lacks context on how it differs from similar tools (e.g., 'get_file_metadata') and does not indicate return format or potential errors, which a slightly more thorough description could address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter already has a clear description. The tool description adds no additional meaning beyond what the schema provides. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('a specific item from a SharePoint list'), clearly distinguishing it from sibling tools like 'list_items' (which lists multiple items) or 'create_list_item' (which creates). No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided; the description does not specify when to use this tool (e.g., for single-item retrieval) nor when to avoid it in favor of alternatives like 'list_items' or 'get_file_metadata'. The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_list_schemaB
Get detailed schema information for a SharePoint list
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | No | SharePoint site ID | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL | |
| listId | Yes | SharePoint list ID | |
| includeContentTypes | No | Include content type information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. However, it only states what the tool does without mentioning side effects, permissions, or return behavior. It does not contradict annotations (none exist), but is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise and front-loaded. However, it may be too brief, sacrificing completeness for brevity. Still, it is well-structured with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description should compensate by explaining what 'detailed schema information' includes and any caveats. It does not, making it incomplete for an agent to fully understand the tool's usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it does not elaborate on parameter usage or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed schema information for a SharePoint list', specifying the action (get), resource (schema information), and target (SharePoint list). It distinguishes from sibling tools like get_list_item or list_site_lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. The description does not mention context or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileA
Get detailed information about the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| includeManager | No | Include manager information | |
| includePhoto | No | Include profile photo metadata |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits beyond the fact that it retrieves data. Since no annotations are provided, the description should explicitly state that it is a read-only operation and mention any authentication requirements, but it does not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words or information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description should at least hint at the kind of information returned (e.g., name, email). 'Detailed information' is vague but minimally acceptable for a simple profile tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters with descriptions (100% coverage). The description adds no additional meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about the authenticated user, using a specific verb and resource. It is distinct from sibling tools like get_file_metadata or get_list_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit usage guidelines are provided; the description implies it is for the authenticated user's profile but does not specify when to use it versus alternatives or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
global_searchB
Search across all accessible content (files, lists, sites)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query string | |
| entityTypes | No | Types of entities to search for | |
| limit | No | Maximum number of results per entity type | |
| includeSummary | No | Include content summary in results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, and the description offers no behavioral details such as read-only nature, result structure, pagination, or limitations. The agent receives only a high-level purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. While concise, it could benefit from additional context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and minimal description, the tool lacks information on return values, sorting, or response structure. For a search tool with four parameters, this is insufficient for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema itself documents all parameters adequately. The description adds no extra meaning beyond what the schema provides, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search across all accessible content (files, lists, sites)' clearly identifies the tool as a broad search across multiple content types, distinguishing it from more specific sibling tools like 'search_files' which likely only searches files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search_files' or 'discover_sites'. The description does not specify use cases or exclusions, leaving the agent to infer applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkB
Check the health status and authentication of the MCP server
| Name | Required | Description | Default |
|---|---|---|---|
| includeUserInfo | No | Include user profile information | |
| includeDriveInfo | No | Include default drive information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should fully disclose behavior. It only states 'health status and authentication' without explaining what exactly is checked, side effects, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise and front-loaded, but could be slightly more informative without adding much length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple health check tool with no output schema, the description suffices but lacks details on what 'authentication' entails or possible return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description does not add additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks health status and authentication, using a specific verb and resource. It distinguishes from sibling tools focused on file operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for checking server health before other operations but does not provide explicit when-to-use or when-not-to-use guidance or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_drivesA
List all accessible drives (OneDrive + SharePoint document libraries)
| Name | Required | Description | Default |
|---|---|---|---|
| includeQuota | No | Include quota information for each drive | |
| siteId | No | Optional SharePoint site ID to retrieve the default drive for a specific site | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL | |
| driveType | No | Filter by drive type | all |
| limit | No | Maximum number of drives to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the full burden. It only says 'list all accessible drives' without disclosing pagination, rate limits, or whether it fetches only default drives. Minimal transparency beyond function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, clearly stating purpose and scope. Perfectly efficient for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with well-documented schema, the description is adequate but could mention that results can be filtered or that multiple drive types are returned. No output schema is provided, but the description does not specify response format, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is documented. The tool description adds no additional meaning beyond what the schema provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all accessible drives, explicitly mentioning OneDrive and SharePoint document libraries. This distinguishes it from sibling tools like discover_sites or list_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like discover_sites. Usage is implied as a general drive enumeration tool, but lacks when-not-to-use or prerequisite info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesC
List files and folders in OneDrive or SharePoint drive
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Folder path (e.g., "/Documents" or "" for root) | |
| siteId | No | SharePoint site ID (optional, if not provided uses personal OneDrive) | |
| site | No | Known SharePoint site alias or canonical URL (e.g., "financeiro", "socios2") | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific OneDrive or SharePoint document library | |
| filter | No | OData filter (e.g., "file ne null" for files only) | |
| orderBy | No | Sort order (e.g., "name", "lastModifiedDateTime desc") | name |
| limit | No | Maximum number of items to return | |
| pageToken | No | Opaque pagination token from a previous response (Graph nextLink) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden for behavioral disclosure. It only states the basic function without revealing key traits like pagination, filtering, ordering, permissions, or side effects. This is insufficient for safe and effective invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the core purpose. It is concise but lacks any structuring like bullet points or sections, which could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters and no output schema, the description is very incomplete. It does not explain return values, pagination, or authentication. Given the complexity and number of sibling tools, more detail is needed for confident usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific information beyond the schema, meaning it does not compensate or enhance understanding of parameters like 'path', 'siteId', or 'filter'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List files and folders in OneDrive or SharePoint drive', using a specific verb and identifying the resource and context. However, it does not explicitly distinguish this tool from siblings like 'list_items' or 'search_files', which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided—no mention of when to use this tool versus alternatives, nor any prerequisites or exclusions. The agent receives no hints about tool selection among many sibling file operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_itemsB
List items from a SharePoint list with filtering and pagination
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | No | SharePoint site ID | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL | |
| listId | Yes | SharePoint list ID | |
| filter | No | OData filter expression (e.g., "Title eq 'Example'") | |
| orderBy | No | Sort order (e.g., "Title", "Created desc") | Created desc |
| select | No | Comma-separated list of fields to return (e.g., "Title,Author,Created") | |
| expand | No | Comma-separated list of lookup fields to expand | |
| limit | No | Maximum number of items to return | |
| pageToken | No | Opaque pagination token from a previous response (Graph nextLink) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only mentions 'listing' with filtering/pagination, but does not disclose behavioral traits like read-only guarantee, permission requirements, throttling, or pagination mechanics. The agent cannot infer safety or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action and features. No filler or unnecessary words. Efficiently conveys the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, no output schema, and no annotations, the description is too brief. It does not explain interaction between parameters (e.g., siteId vs site vs siteUrl), pagination token usage, or expand behavior. The agent lacks sufficient context to use the tool correctly without deep schema inspection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with all 10 parameters having descriptions. The description adds no additional meaning beyond summarizing 'filtering and pagination'. Baseline 3 is appropriate since schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List items from a SharePoint list with filtering and pagination', using a specific verb and resource. This distinguishes it from sibling tools like create_list_item or get_list_item, which operate on single items or have different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_list_item (single item) or discover_sites (site discovery). The description lacks explicit context, exclusions, or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_site_listsB
List all SharePoint lists in a specific site
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | No | SharePoint site ID | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL | |
| includeHidden | No | Include hidden lists | |
| includeSystemLists | No | Include system lists (like Workflow Tasks) | |
| limit | No | Maximum number of lists to return | |
| pageToken | No | Opaque pagination token from a previous response (Graph nextLink) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure, but it only provides a high-level purpose. It does not mention that the operation is read-only, how pagination works, or any constraints. For a tool with 7 optional parameters, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, no output schema, and no annotations. The description does not cover return value, pagination, or filtering behavior, leaving the agent to infer from parameter names alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and resource (SharePoint lists in a specific site), distinguishing it from sibling tools like list_files or list_drives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear purpose but does not guide when to use this tool over alternatives, such as list_items (for items within lists) or other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_permissionsC
List, update, or revoke permissions for a file or folder
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Item ID | |
| itemPath | No | Alternative: item path | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| action | Yes | Action to perform | list |
| permissionId | No | Permission ID (for update/revoke actions) | |
| newRoles | No | New roles for update action (read, write, owner) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only mentions the actions without disclosing behavioral traits like required permissions, side effects of revoking, or limitation scopes (e.g., whether it works for files vs folders). The description adds minimal context beyond the actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently conveys the tool's purpose without extraneous words. It is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 9 parameters and no output schema, the description provides no context on parameter relationships, ordering, or defaults (beyond action default). It does not explain how to resolve conflicts between itemId and itemPath or how siteId/site/siteUrl interact. For a tool with this complexity, the description is insufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions for itemId, itemPath, siteId, etc. The description adds no new semantic information beyond what the schema already provides, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists, updates, or revokes permissions for a file or folder, specifying the verb and resource. However, it does not differentiate from sibling tools like share_item that also manage permissions, so it loses a point for lack of sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as share_item or check_user_access. The description lists possible actions but does not explain when each action (list, update, revoke) is appropriate or mention any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_itemB
Move or rename a file/folder in OneDrive or SharePoint
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Item ID to move/rename | |
| itemPath | No | Alternative: item path to move/rename | |
| newName | No | New name for the item (optional) | |
| parentFolderId | No | ID of destination folder (optional) | |
| parentFolderPath | No | Path of destination folder (optional) | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description alone must disclose behavioral traits. It only states 'move or rename' but omits details like behavior when only newName is provided (rename), when both parent folder and newName are provided, error scenarios, permissions required, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence without extraneous words, effectively communicating the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, a more detailed description is needed to cover the combination of parameters (e.g., specifying source via itemId vs itemPath, destination via parentFolderId/path), and to explain rename vs move behavior. The current description leaves significant ambiguity for a tool with 9 optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters already have descriptions. The tool description adds no extra semantics beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool moves or renames a file/folder in OneDrive or SharePoint, which distinguishes it from sibling tools like copy_item, delete_item, or share_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use move_item vs alternatives such as copy_item or rename operations via other tools, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_siteB
Resolve a SharePoint site from canonical aliases, siteId, or canonical URL without relying on discover_sites
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Known alias, site name hint, or canonical SharePoint URL | |
| siteId | No | SharePoint site ID (passes through if already known) | |
| siteUrl | No | Canonical SharePoint site URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It only mentions that it does not rely on 'discover_sites', but fails to disclose whether it is read-only, what happens on invalid input, or any side effects. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the essential purpose immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain the return value or output format, which is a significant gap given the absence of an output schema. It also does not mention any behavioral traits like idempotency or error conditions, making it incomplete for the agent's decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description mentions the three input types (aliases, siteId, URL) which correspond to the schema parameters. However, the description adds no extra meaning beyond the schema's existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Resolve', the resource 'SharePoint site', and specific inputs: canonical aliases, siteId, or URL. It also distinguishes itself from the sibling tool 'discover_sites' by saying 'without relying on discover_sites'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is an alternative to 'discover_sites' but does not explicitly state when to use it instead of other siblings. It provides context but no when-not or list of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesC
Search for files and folders in OneDrive or SharePoint
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (file name, content, etc.) | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| fileTypes | No | Filter by file types (e.g., ["xlsx", "docx"]) | |
| limit | No | Maximum number of results | |
| pageToken | No | Opaque pagination token from a previous response (Graph nextLink) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but is minimal. It does not disclose behavioral traits such as pagination, sorting, authentication needs, or limitations. The schema provides parameter details but the description adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) but lacks structure. While it is short, it sacrifices informativeness and does not earn its place by adding needed context. More concise would be better if it were more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, no output schema, and many siblings, the description is far from complete. It omits pagination, filtering, and scope details that are critical for correct usage. The schema covers some, but the description is insufficient for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it merely restates the tool's purpose. No extra value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for files and folders in OneDrive or SharePoint, which is a specific verb+resource. However, it does not differentiate from sibling tools like global_search or list_files, missing clarity on when to choose this over alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus similar tools. It lacks any mention of use cases, prerequisites, or exclusions, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storage_analyticsC
Analyze storage usage patterns and identify optimization opportunities
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | No | SharePoint site ID (optional, defaults to personal drive) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| analysisType | No | Type of analysis to perform | summary |
| path | No | Specific path to analyze (optional, defaults to root) | |
| thresholds | No | ||
| includeVersions | No | Include version history in size calculations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions 'analyze' and 'identify optimization opportunities' but does not state that the operation is read-only, whether it requires specific permissions, or what the output format is. The description is vague and does not provide sufficient transparency for an agent to understand side effects or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. However, its brevity comes at the cost of informativeness; it could include more key details without significant length increase. It earns its place but is on the edge of being too terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters, a nested object (thresholds), an enum (analysisType with 6 values), and no output schema. The description does not explain what each analysis type does, how thresholds affect results, or what the output looks like. It leaves significant gaps for an agent to navigate the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (88% per context, effectively 100% as all parameters have descriptions), so the schema already documents parameters well. The description adds no additional explanation of parameters beyond what the schema provides, so it does not compensate for any gaps. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: analyzing storage usage and identifying optimization opportunities. It distinguishes from sibling tools like list_files or search_files by focusing on analysis rather than retrieval. However, it lacks specificity about the scope (e.g., SharePoint), which is implied by the input schema but not explicitly stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like list_drives, search_files, or other analysis tools. It does not include when-not-to-use conditions or prerequisites, leaving the agent to infer usage context from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_folderB
Synchronize a local folder with OneDrive/SharePoint (bidirectional)
| Name | Required | Description | Default |
|---|---|---|---|
| localPath | Yes | Local folder path to sync | |
| remotePath | Yes | Remote folder path in OneDrive/SharePoint | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| direction | No | Sync direction | bidirectional |
| conflictResolution | No | How to resolve conflicts | newer |
| includePatterns | No | File patterns to include (e.g., ["*.docx", "*.xlsx"]) | |
| excludePatterns | No | File patterns to exclude (e.g., ["*.tmp", "~*"]) | |
| deleteOrphans | No | Delete files that exist only on one side |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description is minimal and doesn't disclose behavioral traits beyond 'bidirectional', such as side effects, long-running nature, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is efficient and front-loaded with purpose, but for a complex tool with 11 parameters, additional context could be warranted without being overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description is too brief; it omits details like recursive sync, parameter behaviors, and return information, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; description adds no additional parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it synchronizes a local folder with OneDrive/SharePoint and specifies bidirectional, which distinguishes it from one-way upload/download tools among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like upload_file or download_file; lacks context for selecting direction or conflict resolution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_list_itemC
Update an existing item in a SharePoint list
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | No | SharePoint site ID | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL | |
| listId | Yes | SharePoint list ID | |
| itemId | Yes | List item ID to update | |
| fields | Yes | Field values to update (key-value pairs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It only states 'update', implying mutation, but lacks details on permissions, idempotency, or what happens to unspecified fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence with no unnecessary words. However, it could be slightly expanded to include behavioral context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with six parameters and no output schema, the description fails to clarify return values, error states, or whether partial updates are supported. More detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all six parameters with 100% coverage. The description adds no extra meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update) and resource (existing item in a SharePoint list), but it does not differentiate from sibling tools like create_list_item or delete_list_item beyond the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as batch operations or other update mechanisms. There is no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileB
Upload a file to OneDrive or SharePoint
| Name | Required | Description | Default |
|---|---|---|---|
| localPath | Yes | Local file path to upload | |
| remotePath | Yes | Remote path where to upload (e.g., "/Documents/report.xlsx") | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| conflictBehavior | No | What to do if file already exists | rename |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits. It only states 'Upload a file' and does not mention default conflictBehavior (rename), file size limits, or how OneDrive vs SharePoint is determined. The conflictBehavior is described only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words. It effectively communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 7 parameters and many sibling tools for file operations, the description lacks critical context about return values, error handling, or when to use specific parameters like siteId vs site. No output schema is present to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters. The description adds no extra meaning beyond the schema's parameter descriptions, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Upload a file to OneDrive or SharePoint', specifying the verb (upload) and resource (file) with target platforms. It distinguishes itself from sibling tools like download_file, copy_item, etc., which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like batch_file_operations or advanced_share. There is no mention of prerequisites, authentication, or scenarios where this tool is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
version_managementC
Manage file versions including restore, cleanup, and comparison
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | File item ID | |
| itemPath | No | Alternative: file path | |
| siteId | No | SharePoint site ID (optional) | |
| site | No | Known SharePoint site alias or canonical URL | |
| siteUrl | No | Canonical SharePoint site URL (optional alternative to siteId) | |
| driveId | No | Drive ID for a specific document library (optional) | |
| action | Yes | Version management action | list |
| versionId | No | Version ID for restore/delete/compare actions | |
| keepVersions | No | Number of versions to keep (for cleanup) | |
| compareVersionId | No | Second version ID for comparison |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only lists actions (restore, cleanup, comparison) without noting that delete/cleanup destroy versions irreversibly, or that comparison is read-only. No auth or rate limit info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that front-loads the main purpose. It is concise with no redundancy, though it could include a second sentence for critical details without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters and no output schema, the description is too brief. It does not explain return values, the meaning of actions like 'cleanup', or how parameters interact (e.g., itemId vs itemPath). Significant gaps for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to explain parameters. The description adds minimal context by listing action categories (restore, cleanup, comparison), but this is already evident from the enum. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Manage file versions including restore, cleanup, and comparison', clearly indicating the tool's purpose. While it distinguishes from sibling tools (no other tool handles version management), it does not explicitly contrast with related file operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool over alternatives or when not to use it. It does not mention prerequisites or context for specific actions like restore or delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes (file ops, list ops, sharing, search, Excel, batch, etc.). There is minor overlap between batch_file_operations and batch_operations, and between search_files and global_search, but descriptions clarify the differences. Overall, an agent can distinguish tools effectively.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_folder, delete_item, check_user_access). Multi-word names are uniform. No mixed conventions or camelCase, making the naming predictable and easy to navigate.
With 33 tools, the count is high for a single server. While each tool serves a specific function, the number exceeds the typical well-scoped range (3-15) and feels heavy. Some tools like health_check and get_user_profile are tangentially related, and batch operations add complexity.
The tool set covers the OneDrive/SharePoint domain comprehensively: file CRUD, sharing, permissions, version management, batch operations, search across content, SharePoint list full lifecycle, Excel analysis, storage analytics, and sync. No obvious gaps for common workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
110+ deterministic file tools: PDF, image, media, convert, analyze. Connect in one click (OAuth).
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Microsoft SharePoint sites, document libraries, and files through the Microsoft Graph API. Supports browsing, searching, uploading/downloading files, managing lists, and creating sharing links with secure OAuth authentication.2MIT
- FlicenseNot gradedqualityNot gradedmaintenanceProvides unified access to OneDrive and SharePoint through Microsoft Graph API, enabling file operations, SharePoint list management, Excel integration, and content search across personal and business Microsoft accounts.
- AlicenseBqualityFmaintenanceProvides 45 tools for managing Office 365 via Microsoft Graph API, enabling email, calendar, file, contact, Teams, and task operations through natural language in Claude Code CLI.455MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants and automation tools to manage Microsoft 365, Entra ID, and Intune resources through 32 tools for user/device/file management and infrastructure monitoring.6MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ftaricano/mcp-onedrive-sharepoint'
If you have feedback or need assistance with the MCP directory API, please join our Discord server