Entra Agent User
github/awesome-copilot
Create Agent Users in Microsoft Entra ID from Agent Identities, enabling AI agents to act as digital workers with user identity capabilities in Microsoft 365 and Azure environments.
Send and read emails, manage calendar events, and access contacts via Microsoft Graph API for Outlook/M365.
$ npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hewi333/Mom-n-Pop-Skills outlook-graph --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hewi333/Mom-n-Pop-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/outlook-graph .claude/skills/outlook-graph && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "outlook-graph" agent skill from https://github.com/hewi333/Mom-n-Pop-Skills/tree/main/skills/outlook-graph into .claude/skills/outlook-graph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outlook-graph", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hewi333/Mom-n-Pop-Skills/tree/main/skills/outlook-graphType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hewi333/Mom-n-Pop-Skills outlook-graph --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hewi333/Mom-n-Pop-Skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/outlook-graph .agents/skills/outlook-graph && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "outlook-graph" agent skill from https://github.com/hewi333/Mom-n-Pop-Skills/tree/main/skills/outlook-graph into .agents/skills/outlook-graph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outlook-graph", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hewi333/Mom-n-Pop-Skills outlook-graph --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hewi333/Mom-n-Pop-Skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/outlook-graph .cursor/skills/outlook-graph && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "outlook-graph" agent skill from https://github.com/hewi333/Mom-n-Pop-Skills/tree/main/skills/outlook-graph into .cursor/skills/outlook-graph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outlook-graph", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hewi333/Mom-n-Pop-Skills.git --path skills/outlook-graph--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hewi333/Mom-n-Pop-Skills outlook-graph --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hewi333/Mom-n-Pop-Skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/outlook-graph .gemini/skills/outlook-graph && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "outlook-graph" agent skill from https://github.com/hewi333/Mom-n-Pop-Skills/tree/main/skills/outlook-graph into .gemini/skills/outlook-graph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outlook-graph", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hewi333/Mom-n-Pop-Skills outlook-graphInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hewi333/Mom-n-Pop-Skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/outlook-graph .github/skills/outlook-graph && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "outlook-graph" agent skill from https://github.com/hewi333/Mom-n-Pop-Skills/tree/main/skills/outlook-graph into .github/skills/outlook-graph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outlook-graph", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hewi333/Mom-n-Pop-Skills outlook-graph --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hewi333/Mom-n-Pop-Skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/outlook-graph .opencode/skills/outlook-graph && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "outlook-graph" agent skill from https://github.com/hewi333/Mom-n-Pop-Skills/tree/main/skills/outlook-graph into .opencode/skills/outlook-graph/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outlook-graph", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
outlook-graphSend and read emails, manage calendar events, and access contacts via Microsoft Graph API for Outlook/M365.
Outlook Graph is an agent skill from hewi333/Mom-n-Pop-Skills. Send and read emails, manage calendar events, and access contacts via Microsoft Graph API for Outlook/M365. Use when emailing customers, scheduling jobs, or managing partner communications.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Productivity & Automation. It works with Microsoft 365, Microsoft Entra ID and Microsoft Azure. The repository describes itself as: Collection of skills for small businesses using AI Agents. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 70a2273. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlpython3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
graph.microsoft.comlogin.microsoftonline.combuy.stripe.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
MS_CLIENT_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Outlook Graph loads about 2.9k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 969 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
Add to `~/.hermes/.env`:Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from hewi333/Mom-n-Pop-Skills at commit 70a2273, republished under its MIT licence (© hewi333). 969 words, ~2,948 tokens.
.claude/skills/outlook-graph/SKILL.md (or your agent's skills folder)."Uses Outlook" ≠ "Has Microsoft 365." Many small businesses use the Outlook desktop app as an IMAP client connected to a third-party email host (GoDaddy Workspace Email, Rackspace, etc.). Before starting the Azure AD setup:
dig MX domain.com), or check the domain registrar's email product page
(e.g., GoDaddy → My Products → Email section).himalaya skill (IMAP/SMTP) instead of this skill.
Common GoDaddy IMAP settings: imap.secureserver.net:993 TLS,
smtpout.secureserver.net:465 TLS.This skill only applies to businesses with a real Microsoft 365 / Azure AD
tenant where portal.azure.com accepts the business email login.
MS_TENANT_ID, MS_CLIENT_ID, MS_CLIENT_SECRET, MS_USER_EMAILMS_CLIENT_IDMS_CLIENT_SECRETMS_TENANT_IDAdd to ~/.hermes/.env:
MS_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
MS_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
MS_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MS_USER_EMAIL=owner@yourdomain.comBase URL: https://graph.microsoft.com/v1.0
TOKEN=$(curl -s https://login.microsoftonline.com/$MS_TENANT_ID/oauth2/v2.0/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=$MS_CLIENT_ID" \
-d "client_secret=$MS_CLIENT_SECRET" \
-d "scope=https://graph.microsoft.com/.default" \
-d "grant_type=client_credentials" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])")curl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/sendMail" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"message": {
"subject": "Your [BUSINESS_NAME] Estimate",
"body": {
"contentType": "HTML",
"content": "<h2>[BUSINESS_NAME]</h2><p>Dear John,</p><p>Your estimate for service is <strong>$2,800</strong>.</p><p>Payment link: <a href=\"https://buy.stripe.com/...\">Pay Now</a></p><p>Questions? Call [PHONE]</p>"
},
"toRecipients": [
{"emailAddress": {"address": "customer@example.com"}}
]
},
"saveToSentItems": true
}'curl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/messages?\$top=10&\$select=subject,from,bodyPreview,receivedDateTime" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.toolcurl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/messages?\$search=\"service+estimate\"&\$top=5" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.toolcurl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/messages/$MESSAGE_ID/reply" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"comment":"Thank you for your interest! I can come out Tuesday at 10am for a free estimate. Does that work?"}'curl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/calendar/events" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subject": "[BUSINESS_NAME] - Smith Residence - Service",
"body": {"contentType": "HTML", "content": "<p>Customer: John Smith</p><p>Address: 123 Main St, [CITY], [STATE]</p><p>Service: Residential service 2000sqft</p><p>Estimate: $2,800</p>"},
"start": {"dateTime": "2026-06-28T09:00:00", "timeZone": "Eastern Standard Time"},
"end": {"dateTime": "2026-06-28T13:00:00", "timeZone": "Eastern Standard Time"},
"location": {"displayName": "123 Main St, [CITY], [STATE] [ZIP]"},
"attendees": [{"emailAddress": {"address": "customer@example.com", "name": "John Smith"}, "type": "required"}]
}'curl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/calendar/events?\$top=10&\$select=subject,start,end,location&\$orderby=start/dateTime" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.toolcurl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/contacts?\$top=50&\$select=displayName,emailAddresses,phones" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.toolcurl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/contacts" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"displayName": "John Smith - Partner",
"emailAddresses": [{"address": "john@example.com", "name": "John Smith"}],
"phones": [{"number": "555-555-1234", "type": "mobile"}],
"companyName": "Example Realty Group",
"categories": ["Partner", "Referral Source"]
}'curl -s "https://graph.microsoft.com/v1.0/users/$MS_USER_EMAIL/messages/$MESSAGE_ID/forward" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"toRecipients":[{"emailAddress":{"address":"owner@yourdomain.com"}}],"comment":"New lead from partner - can you follow up?"}'Tokens expire after ~1 hour. For cron jobs, fetch fresh token each run:
import os, requests, json
def get_token():
r = requests.post(
f"https://login.microsoftonline.com/{os.environ['MS_TENANT_ID']}/oauth2/v2.0/token",
data={
"client_id": os.environ["MS_CLIENT_ID"],
"client_secret": os.environ["MS_CLIENT_SECRET"],
"scope": "https://graph.microsoft.com/.default",
"grant_type": "client_credentials",
}
)
return r.json()["access_token"]portal.azure.com with the business email
address. If Microsoft says "We couldn't find an account with that username,"
the email is NOT on M365 — this skill does not apply. Use IMAP/SMTP via the
himalaya skill instead.imap.secureserver.net:993 TLS, SMTP
smtpout.secureserver.net:465 TLS. Login is the email address + the email
password (not the GoDaddy account login ID).\$ to prevent variable expansion© hewi333, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/outlook-graph of hewi333/Mom-n-Pop-Skills.
Open the folder on GitHubat commit 70a2273
Outlook Graph next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Outlook Graph this skillhewi333/Mom-n-Pop-Skills | 122 | — | ~2.9k | Automated safety check: Notes | MIT | |
| Entra Agent Usergithub/awesome-copilot | 40k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Azure Role Selectorvinayaklatthe/microsoft-security-skills | 175 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Entra Agent Idmicrosoft/GitHub-Copilot-for-Azure | 255 | 2 repos | ~4k | Automated safety check: Pass | MIT | |
| Detecting OAuth Token Theftmukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~3.2k | Automated safety check: Pass | Apache-2.0 | |
| Dd Azure Integrationdatadog-labs/agent-skills | 177 | — | ~7.1k | Automated safety check: Notes | MIT |
github/awesome-copilot
Create Agent Users in Microsoft Entra ID from Agent Identities, enabling AI agents to act as digital workers with user identity capabilities in Microsoft 365 and Azure environments.
vinayaklatthe/microsoft-security-skills
Guidance for selecting the right Azure RBAC role with least privilege - mapping required actions to built-in roles, deciding when a custom role is needed, scoping assignments correctly, and choosing…
microsoft/GitHub-Copilot-for-Azure
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant)…
mukul975/Anthropic-Cybersecurity-Skills
Detect and respond to OAuth token theft and replay in Microsoft Entra ID (Azure AD), covering access token theft, refresh token replay, Primary Refresh Token (PRT) abuse, pass-the-cookie attacks…
datadog-labs/agent-skills
Set up the Datadog Azure integration with Terraform - creates an Entra ID app registration and service principal, assigns Monitoring Reader across the chosen subscriptions and management groups…
mukul975/Anthropic-Cybersecurity-Skills
Auditing Microsoft Entra ID (Azure Active Directory) configuration to identify risky authentication policies, overly permissive role assignments, stale accounts, conditional access gaps, and guest…
hewi333/Mom-n-Pop-Skills
Runs a construction company's back office by bridging Gmail, Drive and JobTread: routing email attachments to the PM system, checking project status and sending daily Telegram briefings.
hewi333/Mom-n-Pop-Skills
Runs a small service business lead from intake through estimate, owner approval over Telegram, Stripe payment link and customer email draft to payment tracking.
hewi333/Mom-n-Pop-Skills
Connects a small business to QuickBooks Online for customers, estimates, invoices and payments, using Intuit OAuth 2.0 with token refresh and sandbox or production setups.
hewi333/Mom-n-Pop-Skills
Procedures for changing the model, restarting and quietly tuning a live Hermes gateway that serves end-users on messaging platforms such as Telegram.
hewi333/Mom-n-Pop-Skills
A skill your agent uses when tracking customer interactions, managing leads, or building a lightweight CRM for small businesses without dedicated CRM software.
hewi333/Mom-n-Pop-Skills
A skill your agent uses when calculating service estimates for jobs.
Send and read emails, manage calendar events, and access contacts via Microsoft Graph API for Outlook/M365. Outlook Graph is an agent skill from hewi333/Mom-n-Pop-Skills. Send and read emails, manage calendar events, and access contacts via Microsoft Graph API for Outlook/M365.
Outlook Graph fits situations like: emailing customers; scheduling jobs; managing partner communications.
Run `npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a claude-code`. Or copy the skill folder (skills/outlook-graph in hewi333/Mom-n-Pop-Skills) into .claude/skills/outlook-graph in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a codex`. Or copy the skill folder (skills/outlook-graph in hewi333/Mom-n-Pop-Skills) into .agents/skills/outlook-graph in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hewi333/Mom-n-Pop-Skills --skill outlook-graph -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/outlook-graph, .gemini/skills/outlook-graph, .github/skills/outlook-graph and .opencode/skills/outlook-graph in your project.
Going by SKILL.md and its folder, Outlook Graph needs the command-line tools its instructions call (curl and python3) and credentials named MS_CLIENT_SECRET. Our summary lists: Python 3; A credential in MS_CLIENT_SECRET.
SKILL.md names 3 domains. In commands or code: graph.microsoft.com, login.microsoftonline.com and buy.stripe.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Outlook Graph is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Outlook Graph: Entra Agent User (github/awesome-copilot, 40k stars), Azure Role Selector (vinayaklatthe/microsoft-security-skills, 175 stars), Entra Agent Id (microsoft/GitHub-Copilot-for-Azure, 255 stars) and Detecting OAuth Token Theft (mukul975/Anthropic-Cybersecurity-Skills, 34k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hewi333 (a GitHub user) maintains it in hewi333/Mom-n-Pop-Skills, which has 122 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 11, 2026.
Source: hewi333/Mom-n-Pop-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.