Purpose
Manage Outlook contacts with a local helper CLI so the prompt stays concise.
The connector supports both personal Microsoft accounts and Microsoft 365 work
or school accounts.
Tooling
Use:
outlook-contacts <subcommand> [options]
Core subcommands:
disconnectlist [--page-size 10] [--page-token <token>]get "AAMkAD..."search "alice smith" --page-size 10create --given-name "Alice" --family-name "Smith" --email alice@example.com --phone "+15551234567"update "AAMkAD..." --given-name "Alice" --email newalice@example.comdelete "AAMkAD..."
Common option:
--timeout-secs N(default30)
Use --page-size for result count. --top, --limit, and --max-results
are compatibility aliases only; do not use them in new commands.
JSON output contract:
disconnect: parseok,action,status, anddisconnect_urllist/search: parseok,count,next_page_token(when present, pass back as--page-token),total_people, andcontacts[].resource_name,contacts[].display_name,contacts[].emails,contacts[].phonesget: parseokandcontact.resource_name,contact.display_name,contact.emails,contact.phones,contact.organization,contact.titlecreate/update/delete: parseok,action,resource_name
Auth
This skill depends on an Outlook connector managed by outlook-contacts.
Use:
outlook-contacts --status
Rules:
- For connect or reconnect, replace
<connect_url>with the returned URL and share exactly this Markdown link:[Connect Outlook Contacts](<connect_url>); do not paste the raw URL separately. - For disconnect, run
outlook-contacts disconnect. Whendisconnect_urlis present, replace<disconnect_url>with the returned URL and share exactly this Markdown link:[Disconnect Outlook Contacts](<disconnect_url>); do not paste the raw URL separately. If absent, say the connector is already disconnected. - never use a shared connector helper CLI for Outlook Contacts
- do not hand-author token files or guess connector state; rely on
outlook-contacts --status
Operating Rules
- Use
searchfor finding contacts by name, email, or phone number. - Use
listfor browsing contacts with pagination via--page-token(skip value). - Contact IDs are opaque Graph strings (for example
AAMkAD...); use the exact value fromlistorsearch. create,update, anddeletemay proceed from a clear, unambiguous user request without an additional confirmation.- When updating a contact, only the specified fields change; unspecified fields keep their existing values.
- If the CLI reports an auth error, re-check
outlook-contacts --statusand guide the user through reconnecting. - Never print connector secrets or dump raw contact payloads unless the user explicitly asks for them.
- Never surface raw Graph identifiers (contact ids like
AAMkAD...) or other internal response fields (change keys, page/skip tokens, raw JSON) in text shown to the user — including in summaries, lists, or per-item annotations. Reuse the ids only internally to chain follow-up commands (rule 3). The sole exceptions are when the user explicitly asks for a raw id or you must show one to troubleshoot a failure.