Marketplace Research
Microsoft Graph API Documentation Index
Core Productivity
Collaboration
Identity & Access
Security & Compliance
Device Management
Analytics & Reports
Developer & Platform
Graph API Structure Guide
URL Patterns
- v1.0 (stable):
https://graph.microsoft.com/v1.0/{resource}
- Beta (preview):
https://graph.microsoft.com/beta/{resource}
Common Endpoint Patterns
GET /{resources} # List resources
GET /{resources}/{id} # Get a specific resource
POST /{resources} # Create a resource
PATCH /{resources}/{id} # Update a resource
DELETE /{resources}/{id} # Delete a resource
POST /{resources}/{id}/{action} # Perform an action
Permission Extraction
When reading a Microsoft Learn API reference page, permissions are listed in a table:
- Delegated (work or school account): permissions for signed-in user context
- Delegated (personal Microsoft account): usually "Not supported"
- Application: permissions for daemon/service context
Always extract both delegated and application permissions.
OData Query Parameters
| Parameter |
Purpose |
Example |
$select |
Choose specific fields |
?$select=displayName,mail |
$filter |
Filter results |
?$filter=startsWith(displayName,'A') |
$expand |
Include related resources |
?$expand=members |
$top |
Limit result count |
?$top=10 |
$orderby |
Sort results |
?$orderby=displayName desc |
$count |
Include total count |
?$count=true |
$search |
Full-text search |
?$search="marketing" |
Pagination
Responses with more results include @odata.nextLink. Follow this URL to get the next page.
Delta queries use @odata.deltaLink for incremental sync.
Error Handling
Graph API returns standard HTTP status codes with an error body:
{
"error": {
"code": "Request_ResourceNotFound",
"message": "Resource not found.",
"innerError": { "request-id": "...", "date": "..." }
}
}
Common codes: 400 (bad request), 401 (unauthenticated), 403 (forbidden), 404 (not found), 429 (throttled).
Throttling
- Per-app, per-tenant limits vary by service
- 429 responses include
Retry-After header (seconds)
- Best practice: implement exponential backoff
Research Output JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["service", "displayName", "description", "apiVersions", "baseUrl", "areas"],
"properties": {
"service": { "type": "string", "description": "Lowercase service identifier" },
"displayName": { "type": "string", "description": "Human-readable service name" },
"description": { "type": "string", "description": "One-line service description" },
"apiVersions": {
"type": "array",
"items": { "enum": ["v1.0", "beta"] }
},
"baseUrl": { "type": "string", "format": "uri" },
"docUrls": {
"type": "array",
"items": { "type": "string", "format": "uri" }
},
"areas": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "endpoints"],
"properties": {
"name": { "type": "string" },
"endpoints": {
"type": "array",
"items": {
"type": "object",
"required": ["method", "path", "description", "permissions"],
"properties": {
"method": { "enum": ["GET", "POST", "PATCH", "PUT", "DELETE"] },
"path": { "type": "string" },
"description": { "type": "string" },
"apiVersion": { "enum": ["v1.0", "beta"] },
"permissions": {
"type": "object",
"properties": {
"delegated": { "type": "array", "items": { "type": "string" } },
"application": { "type": "array", "items": { "type": "string" } }
}
},
"requestBody": {},
"responseSchema": {},
"queryParams": { "type": "array", "items": { "type": "string" } },
"pagination": { "type": "boolean" }
}
}
}
}
}
},
"patterns": {
"type": "array",
"items": { "type": "string" }
},
"notes": { "type": "string" }
}
}
Plugin Scaffold Templates
plugin.json Template
{
"name": "{plugin-name}",
"version": "1.0.0",
"description": "{description}",
"author": { "name": "Markus Ahling" },
"keywords": ["{keyword1}", "{keyword2}"],
"skills": ["./skills/{plugin-name}/SKILL.md"],
"agents": ["./agents/{service}-reviewer.md"],
"commands": ["./commands/{cmd1}.md", "./commands/setup.md"]
}
Command Frontmatter Template
---
name: {command-name}
description: {one-line description}
argument-hint: "{usage pattern}"
allowed-tools:
- Read
- Write
- Bash
---
Agent Frontmatter Template
---
name: {Service} Reviewer
description: >
Reviews {service} integration code for correct API usage,
permission handling, and security best practices.
model: inherit
color: orange
tools:
- Read
- Grep
- Glob
---
SKILL.md Frontmatter Template
---
name: {Service Display Name}
description: >
Deep expertise in {service} via Microsoft Graph API — {capabilities summary}.
allowed-tools:
- Read
- Write
- Edit
- Glob
- Grep
- Bash
triggers:
- {trigger1}
- {trigger2}
---
Known M365 Services Catalog
This catalog lists Microsoft 365 and Azure services for coverage auditing.
Status: covered = plugin exists, partial = some coverage, uncovered = no plugin.
| Service |
Graph API |
Category |
Impact |
Complexity |
Friction |
| Mail / Outlook |
v1.0 |
productivity |
5 |
3 |
2 |
| Calendar |
v1.0 |
productivity |
5 |
3 |
2 |
| OneDrive / Files |
v1.0 |
productivity |
5 |
3 |
2 |
| Teams |
v1.0 |
productivity |
5 |
4 |
3 |
| SharePoint |
v1.0 |
productivity |
4 |
4 |
3 |
| Planner |
v1.0 |
productivity |
4 |
2 |
2 |
| To Do |
v1.0 |
productivity |
3 |
2 |
1 |
| OneNote |
v1.0 |
productivity |
3 |
2 |
2 |
| Bookings |
v1.0 |
productivity |
2 |
2 |
2 |
| Forms |
beta |
productivity |
3 |
2 |
2 |
| Lists |
v1.0 |
productivity |
3 |
2 |
2 |
| Excel |
v1.0 |
productivity |
4 |
3 |
2 |
| Power Automate |
REST |
productivity |
4 |
3 |
3 |
| Power Apps |
REST |
productivity |
3 |
4 |
3 |
| Copilot Studio |
REST |
productivity |
3 |
3 |
3 |
| Users |
v1.0 |
cloud |
5 |
2 |
2 |
| Groups |
v1.0 |
cloud |
4 |
3 |
3 |
| Applications |
v1.0 |
security |
4 |
3 |
4 |
| Service Principals |
v1.0 |
security |
3 |
3 |
4 |
| Conditional Access |
v1.0 |
security |
4 |
3 |
4 |
| Identity Protection |
v1.0 |
security |
3 |
3 |
4 |
| Intune / Device Mgmt |
v1.0 |
cloud |
4 |
5 |
4 |
| Cloud PC |
beta |
cloud |
2 |
3 |
4 |
| Security Alerts |
v1.0 |
security |
4 |
3 |
4 |
| eDiscovery |
v1.0 |
security |
3 |
4 |
5 |
| Information Protection |
v1.0 |
security |
3 |
3 |
4 |
| Reports / Usage |
v1.0 |
analytics |
3 |
2 |
3 |
| Azure Subscriptions |
ARM |
cloud |
5 |
3 |
3 |
| Azure Resource Groups |
ARM |
cloud |
5 |
2 |
3 |
| Azure Policy |
ARM |
security |
4 |
3 |
3 |
| Azure Cost Management |
ARM |
cloud |
4 |
3 |
3 |
| Azure DevOps |
REST |
devops |
4 |
4 |
2 |
| Power BI / Fabric |
REST |
analytics |
4 |
4 |
3 |
| Dataverse |
REST |
cloud |
3 |
4 |
3 |
| Exchange Admin |
v1.0 |
productivity |
3 |
3 |
4 |
| Purview / Compliance |
v1.0 |
security |
3 |
4 |
5 |
| Lighthouse |
v1.0 |
security |
2 |
3 |
4 |
| Viva Insights |
beta |
analytics |
2 |
3 |
4 |
| Viva Learning |
beta |
productivity |
2 |
3 |
3 |
| Viva Engage (Yammer) |
REST |
productivity |
2 |
3 |
3 |
| Loop |
beta |
productivity |
2 |
3 |
3 |
| Clipchamp |
n/a |
productivity |
1 |
4 |
3 |
| Stream |
beta |
productivity |
2 |
3 |
3 |
| Sway |
n/a |
productivity |
1 |
2 |
2 |
| Whiteboard |
beta |
productivity |
2 |
2 |
3 |
| Kaizala |
deprecated |
productivity |
1 |
3 |
5 |
| StaffHub |
deprecated |
productivity |
1 |
3 |
5 |
Marketplace Registration Checklist
When adding a new plugin to the marketplace:
Plugin structure — verify all files exist:
.claude-plugin/plugin.json with valid JSON
skills/{name}/SKILL.md with frontmatter
commands/*.md with frontmatter
agents/*.md with frontmatter
README.md
Marketplace entry — add to .claude-plugin/marketplace.json:
{
"name": "{plugin-name}",
"source": "./{plugin-name}",
"description": "{description}",
"category": "{category}",
"tags": ["microsoft", "{tag1}", "{tag2}"],
"strict": true
}
CLAUDE.md — add row to the Available Plugins table
Validation — run:
npm run validate:all
Commit — stage all new/modified files and commit
Progressive Disclosure — Reference Files
| Topic |
File |
| Graph Explorer, changelog tracking, permission discovery, SDK patterns, throttling |
references/api-research-patterns.md |
| Plugin directory structure, manifest schema, SKILL.md template, command/agent frontmatter |
references/plugin-scaffolding.md |
| Coverage analysis methodology, gap identification, quality scoring, marketplace readiness |
references/coverage-audit.md |
1---2name: marketplace-research3description: Reference knowledge for researching Microsoft Graph APIs, scaffolding Claude Code plugins, and auditing marketplace coverage. Contains curated doc URLs, API structure guides, research output schemas, plugin templates, and the M365 services catalog.4---56# Marketplace Research78## Microsoft Graph API Documentation Index910### Core Productivity11| Service | API Reference URL |12|---------|-------------------|13| Mail | https://learn.microsoft.com/en-us/graph/api/resources/mail-api-overview?view=graph-rest-1.0 |14| Calendar | https://learn.microsoft.com/en-us/graph/api/resources/calendar?view=graph-rest-1.0 |15| Contacts | https://learn.microsoft.com/en-us/graph/api/resources/contact?view=graph-rest-1.0 |16| OneDrive | https://learn.microsoft.com/en-us/graph/api/resources/onedrive?view=graph-rest-1.0 |17| OneNote | https://learn.microsoft.com/en-us/graph/api/resources/onenote-api-overview?view=graph-rest-1.0 |18| To Do | https://learn.microsoft.com/en-us/graph/api/resources/todo-overview?view=graph-rest-1.0 |19| Planner | https://learn.microsoft.com/en-us/graph/api/resources/planner-overview?view=graph-rest-1.0 |2021### Collaboration22| Service | API Reference URL |23|---------|-------------------|24| Teams | https://learn.microsoft.com/en-us/graph/api/resources/teams-api-overview?view=graph-rest-1.0 |25| SharePoint | https://learn.microsoft.com/en-us/graph/api/resources/sharepoint?view=graph-rest-1.0 |26| Outlook Groups | https://learn.microsoft.com/en-us/graph/api/resources/groups-overview?view=graph-rest-1.0 |27| Bookings | https://learn.microsoft.com/en-us/graph/api/resources/booking-api-overview?view=graph-rest-1.0 |28| Forms | https://learn.microsoft.com/en-us/graph/api/resources/forms-overview?view=graph-rest-beta |29| Lists | https://learn.microsoft.com/en-us/graph/api/resources/list?view=graph-rest-1.0 |3031### Identity & Access32| Service | API Reference URL |33|---------|-------------------|34| Users | https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0 |35| Groups | https://learn.microsoft.com/en-us/graph/api/resources/group?view=graph-rest-1.0 |36| Applications | https://learn.microsoft.com/en-us/graph/api/resources/application?view=graph-rest-1.0 |37| Service Principals | https://learn.microsoft.com/en-us/graph/api/resources/serviceprincipal?view=graph-rest-1.0 |38| Conditional Access | https://learn.microsoft.com/en-us/graph/api/resources/conditionalaccesspolicy?view=graph-rest-1.0 |39| Identity Protection | https://learn.microsoft.com/en-us/graph/api/resources/identityprotection-overview?view=graph-rest-1.0 |4041### Security & Compliance42| Service | API Reference URL |43|---------|-------------------|44| Security Alerts | https://learn.microsoft.com/en-us/graph/api/resources/security-api-overview?view=graph-rest-1.0 |45| Compliance | https://learn.microsoft.com/en-us/graph/api/resources/complianceapioverview?view=graph-rest-1.0 |46| eDiscovery | https://learn.microsoft.com/en-us/graph/api/resources/ediscovery-ediscoveryapioverview?view=graph-rest-1.0 |47| Information Protection | https://learn.microsoft.com/en-us/graph/api/resources/informationprotection-overview?view=graph-rest-1.0 |4849### Device Management50| Service | API Reference URL |51|---------|-------------------|52| Intune | https://learn.microsoft.com/en-us/graph/api/resources/intune-graph-overview?view=graph-rest-1.0 |53| Cloud PC | https://learn.microsoft.com/en-us/graph/api/resources/cloudpc-api-overview?view=graph-rest-1.0 |5455### Analytics & Reports56| Service | API Reference URL |57|---------|-------------------|58| Reports | https://learn.microsoft.com/en-us/graph/api/resources/report?view=graph-rest-1.0 |59| Usage Analytics | https://learn.microsoft.com/en-us/graph/api/resources/microsoft-365-usage-reports-overview?view=graph-rest-1.0 |6061### Developer & Platform62| Service | API Reference URL |63|---------|-------------------|64| Webhooks | https://learn.microsoft.com/en-us/graph/api/resources/webhooks?view=graph-rest-1.0 |65| Batch Requests | https://learn.microsoft.com/en-us/graph/json-batching |66| Delta Queries | https://learn.microsoft.com/en-us/graph/delta-query-overview |67| Pagination | https://learn.microsoft.com/en-us/graph/paging |68| Permissions Reference | https://learn.microsoft.com/en-us/graph/permissions-reference |6970---7172## Graph API Structure Guide7374### URL Patterns75- **v1.0 (stable)**: `https://graph.microsoft.com/v1.0/{resource}`76- **Beta (preview)**: `https://graph.microsoft.com/beta/{resource}`7778### Common Endpoint Patterns79```80GET /{resources} # List resources81GET /{resources}/{id} # Get a specific resource82POST /{resources} # Create a resource83PATCH /{resources}/{id} # Update a resource84DELETE /{resources}/{id} # Delete a resource85POST /{resources}/{id}/{action} # Perform an action86```8788### Permission Extraction89When reading a Microsoft Learn API reference page, permissions are listed in a table:90- **Delegated (work or school account)**: permissions for signed-in user context91- **Delegated (personal Microsoft account)**: usually "Not supported"92- **Application**: permissions for daemon/service context9394Always extract both delegated and application permissions.9596### OData Query Parameters97| Parameter | Purpose | Example |98|-----------|---------|---------|99| `$select` | Choose specific fields | `?$select=displayName,mail` |100| `$filter` | Filter results | `?$filter=startsWith(displayName,'A')` |101| `$expand` | Include related resources | `?$expand=members` |102| `$top` | Limit result count | `?$top=10` |103| `$orderby` | Sort results | `?$orderby=displayName desc` |104| `$count` | Include total count | `?$count=true` |105| `$search` | Full-text search | `?$search="marketing"` |106107### Pagination108Responses with more results include `@odata.nextLink`. Follow this URL to get the next page.109Delta queries use `@odata.deltaLink` for incremental sync.110111### Error Handling112Graph API returns standard HTTP status codes with an error body:113```json114{115 "error": {116 "code": "Request_ResourceNotFound",117 "message": "Resource not found.",118 "innerError": { "request-id": "...", "date": "..." }119 }120}121```122123Common codes: 400 (bad request), 401 (unauthenticated), 403 (forbidden), 404 (not found), 429 (throttled).124125### Throttling126- Per-app, per-tenant limits vary by service127- 429 responses include `Retry-After` header (seconds)128- Best practice: implement exponential backoff129130---131132## Research Output JSON Schema133134```json135{136 "$schema": "http://json-schema.org/draft-07/schema#",137 "type": "object",138 "required": ["service", "displayName", "description", "apiVersions", "baseUrl", "areas"],139 "properties": {140 "service": { "type": "string", "description": "Lowercase service identifier" },141 "displayName": { "type": "string", "description": "Human-readable service name" },142 "description": { "type": "string", "description": "One-line service description" },143 "apiVersions": {144 "type": "array",145 "items": { "enum": ["v1.0", "beta"] }146 },147 "baseUrl": { "type": "string", "format": "uri" },148 "docUrls": {149 "type": "array",150 "items": { "type": "string", "format": "uri" }151 },152 "areas": {153 "type": "array",154 "items": {155 "type": "object",156 "required": ["name", "endpoints"],157 "properties": {158 "name": { "type": "string" },159 "endpoints": {160 "type": "array",161 "items": {162 "type": "object",163 "required": ["method", "path", "description", "permissions"],164 "properties": {165 "method": { "enum": ["GET", "POST", "PATCH", "PUT", "DELETE"] },166 "path": { "type": "string" },167 "description": { "type": "string" },168 "apiVersion": { "enum": ["v1.0", "beta"] },169 "permissions": {170 "type": "object",171 "properties": {172 "delegated": { "type": "array", "items": { "type": "string" } },173 "application": { "type": "array", "items": { "type": "string" } }174 }175 },176 "requestBody": {},177 "responseSchema": {},178 "queryParams": { "type": "array", "items": { "type": "string" } },179 "pagination": { "type": "boolean" }180 }181 }182 }183 }184 }185 },186 "patterns": {187 "type": "array",188 "items": { "type": "string" }189 },190 "notes": { "type": "string" }191 }192}193```194195---196197## Plugin Scaffold Templates198199### plugin.json Template200```json201{202 "name": "{plugin-name}",203 "version": "1.0.0",204 "description": "{description}",205 "author": { "name": "Markus Ahling" },206 "keywords": ["{keyword1}", "{keyword2}"],207 "skills": ["./skills/{plugin-name}/SKILL.md"],208 "agents": ["./agents/{service}-reviewer.md"],209 "commands": ["./commands/{cmd1}.md", "./commands/setup.md"]210}211```212213### Command Frontmatter Template214```yaml215---216name: {command-name}217description: {one-line description}218argument-hint: "{usage pattern}"219allowed-tools:220 - Read221 - Write222 - Bash223---224```225226### Agent Frontmatter Template227```yaml228---229name: {Service} Reviewer230description: >231 Reviews {service} integration code for correct API usage,232 permission handling, and security best practices.233model: inherit234color: orange235tools:236 - Read237 - Grep238 - Glob239---240```241242### SKILL.md Frontmatter Template243```yaml244---245name: {Service Display Name}246description: >247 Deep expertise in {service} via Microsoft Graph API — {capabilities summary}.248allowed-tools:249 - Read250 - Write251 - Edit252 - Glob253 - Grep254 - Bash255triggers:256 - {trigger1}257 - {trigger2}258---259```260261---262263## Known M365 Services Catalog264265This catalog lists Microsoft 365 and Azure services for coverage auditing.266Status: `covered` = plugin exists, `partial` = some coverage, `uncovered` = no plugin.267268| Service | Graph API | Category | Impact | Complexity | Friction |269|---------|-----------|----------|--------|------------|----------|270| Mail / Outlook | v1.0 | productivity | 5 | 3 | 2 |271| Calendar | v1.0 | productivity | 5 | 3 | 2 |272| OneDrive / Files | v1.0 | productivity | 5 | 3 | 2 |273| Teams | v1.0 | productivity | 5 | 4 | 3 |274| SharePoint | v1.0 | productivity | 4 | 4 | 3 |275| Planner | v1.0 | productivity | 4 | 2 | 2 |276| To Do | v1.0 | productivity | 3 | 2 | 1 |277| OneNote | v1.0 | productivity | 3 | 2 | 2 |278| Bookings | v1.0 | productivity | 2 | 2 | 2 |279| Forms | beta | productivity | 3 | 2 | 2 |280| Lists | v1.0 | productivity | 3 | 2 | 2 |281| Excel | v1.0 | productivity | 4 | 3 | 2 |282| Power Automate | REST | productivity | 4 | 3 | 3 |283| Power Apps | REST | productivity | 3 | 4 | 3 |284| Copilot Studio | REST | productivity | 3 | 3 | 3 |285| Users | v1.0 | cloud | 5 | 2 | 2 |286| Groups | v1.0 | cloud | 4 | 3 | 3 |287| Applications | v1.0 | security | 4 | 3 | 4 |288| Service Principals | v1.0 | security | 3 | 3 | 4 |289| Conditional Access | v1.0 | security | 4 | 3 | 4 |290| Identity Protection | v1.0 | security | 3 | 3 | 4 |291| Intune / Device Mgmt | v1.0 | cloud | 4 | 5 | 4 |292| Cloud PC | beta | cloud | 2 | 3 | 4 |293| Security Alerts | v1.0 | security | 4 | 3 | 4 |294| eDiscovery | v1.0 | security | 3 | 4 | 5 |295| Information Protection | v1.0 | security | 3 | 3 | 4 |296| Reports / Usage | v1.0 | analytics | 3 | 2 | 3 |297| Azure Subscriptions | ARM | cloud | 5 | 3 | 3 |298| Azure Resource Groups | ARM | cloud | 5 | 2 | 3 |299| Azure Policy | ARM | security | 4 | 3 | 3 |300| Azure Cost Management | ARM | cloud | 4 | 3 | 3 |301| Azure DevOps | REST | devops | 4 | 4 | 2 |302| Power BI / Fabric | REST | analytics | 4 | 4 | 3 |303| Dataverse | REST | cloud | 3 | 4 | 3 |304| Exchange Admin | v1.0 | productivity | 3 | 3 | 4 |305| Purview / Compliance | v1.0 | security | 3 | 4 | 5 |306| Lighthouse | v1.0 | security | 2 | 3 | 4 |307| Viva Insights | beta | analytics | 2 | 3 | 4 |308| Viva Learning | beta | productivity | 2 | 3 | 3 |309| Viva Engage (Yammer) | REST | productivity | 2 | 3 | 3 |310| Loop | beta | productivity | 2 | 3 | 3 |311| Clipchamp | n/a | productivity | 1 | 4 | 3 |312| Stream | beta | productivity | 2 | 3 | 3 |313| Sway | n/a | productivity | 1 | 2 | 2 |314| Whiteboard | beta | productivity | 2 | 2 | 3 |315| Kaizala | deprecated | productivity | 1 | 3 | 5 |316| StaffHub | deprecated | productivity | 1 | 3 | 5 |317318---319320## Marketplace Registration Checklist321322When adding a new plugin to the marketplace:3233241. **Plugin structure** — verify all files exist:325 - `.claude-plugin/plugin.json` with valid JSON326 - `skills/{name}/SKILL.md` with frontmatter327 - `commands/*.md` with frontmatter328 - `agents/*.md` with frontmatter329 - `README.md`3303312. **Marketplace entry** — add to `.claude-plugin/marketplace.json`:332 ```json333 {334 "name": "{plugin-name}",335 "source": "./{plugin-name}",336 "description": "{description}",337 "category": "{category}",338 "tags": ["microsoft", "{tag1}", "{tag2}"],339 "strict": true340 }341 ```3423433. **CLAUDE.md** — add row to the Available Plugins table3443454. **Validation** — run:346 ```bash347 npm run validate:all348 ```3493505. **Commit** — stage all new/modified files and commit351352## Progressive Disclosure — Reference Files353354| Topic | File |355|---|---|356| Graph Explorer, changelog tracking, permission discovery, SDK patterns, throttling | [`references/api-research-patterns.md`](./references/api-research-patterns.md) |357| Plugin directory structure, manifest schema, SKILL.md template, command/agent frontmatter | [`references/plugin-scaffolding.md`](./references/plugin-scaffolding.md) |358| Coverage analysis methodology, gap identification, quality scoring, marketplace readiness | [`references/coverage-audit.md`](./references/coverage-audit.md) |