# Presify > Presify is a Microsoft Teams presence tracker: it tracks Teams presence for a whole team and keeps > the history, so owners and managers of remote and hybrid teams can see who is online, when, and for > how long, and whether anyone's presence looks gamed. The green dot shows one moment, not the whole > story: someone can stay green all day and barely be around (a mouse jiggler keeps Teams green), and > someone who always looks yellow may be doing their best work late at night. Presify keeps the record: > per-person day timelines, status history, online-time totals and trends, side-by-side comparisons, > exportable reports, and six flags for presence that looks gamed (reports and flags depend on the > plan). Setup takes about five minutes with one read-only Microsoft sign-in, and nothing is installed > on any device. It reads presence status (Available, Busy, Away, and similar) and basic directory > information, plus presence activity (such as In a call) and each person's Outlook time zone and > working hours; never message, chat, call, file, or calendar content, screens, or keystrokes. Key facts: - Category: a Microsoft Teams presence tracker (Teams presence tracking with history). The jobs it does: show who is online, when, and how much, per person and per team, and flag presence that looks gamed. - Presence history is the product: what a person's Teams status was on a given day, week, or month, shown as an ordered day timeline and rolled up into online-time totals and trend reports. - Six anomaly flags surface presence that looks gamed. Four (unbroken Available, no idle time, robotic regularity, no activity variation) are the patterns a mouse jiggler or keep-alive script tends to leave; two (overnight presence, weekend uniformity) mark unusual hours that can just as easily be someone working late. Each flag shows how it is calculated. A flag is a pattern worth a look, not proof, and never the sole basis for a decision about a person. Not every plan runs flags: Basic and the free trial run none, Standard runs one (Idle suppression), and Pro and Scale run all six. - Setup takes about five minutes. A Microsoft 365 admin signs in with Microsoft Entra ID, approves a one-time, read-only Microsoft Graph consent for the tenant, confirms the organization's employee-monitoring notice (Presify includes a template; some US states require advance written notice), and chooses exactly who to track. Nothing is installed on any device, so it works wherever people use Teams. History builds from that point on; Teams keeps no presence history of its own to backfill. - Lightweight by design: presence (status and activity), basic directory information, and each person's Outlook time zone and working hours, nothing more. No screenshots, keystrokes, app or URL tracking, or message, chat, call, file, or calendar content. Guest accounts are never tracked. - Presence is not productivity. Presify gives a directional read on when people are online and how much; it does not measure work, score productivity, or decide whether anyone was working. - Sampled, not live: historical analysis, not a real-time presence dashboard. Presence is sampled by polling Microsoft Graph on a short, regular interval; Presify answers "what does the pattern look like", and "who is online now" means the latest sample. - Coverage (when a distributed team overlaps across time zones) is a supporting view built from the same history, on plans that include it; it is not the headline. - AI assistants: every plan includes a read-only MCP connector, so Claude, ChatGPT, Microsoft Copilot (through Copilot Studio), and other MCP clients can answer questions about presence history, online time, flags, and coverage in plain language (flag and coverage answers follow the plan). It sees only what the connecting person can already see in Presify (a monitor sees only the people assigned to them), can be revoked at any time, and connections and revocations are recorded in the workspace audit log (viewable on Pro and up). Setup: https://presify.io/docs/ai-assistants. - The signed-in product contains no third-party trackers. With your consent, our public marketing website uses analytics cookies (Google Analytics, DataFast) and advertising cookies (Google Ads, Microsoft Advertising, LinkedIn), all off until you allow them; see /cookies. - Where it works: Presify is built and hosted in the US, for US-based companies (subscriptions require a US billing address). It can track people in most countries except the European Economic Area, the United Kingdom, Switzerland, and Canada: people whose Microsoft 365 directory location (usage location or country) is set to the EEA, the UK, Switzerland, or Canada are excluded automatically; where those fields are blank, the customer must confirm the person is not located there. Wherever tracked people are, the customer is responsible for notice, a lawful basis, and the local laws that apply to them. - Presence history retention is plan-based, from 7 days up to 360 days. - Free 7-day trial, no credit card. A trial tracks only the admin who signs in; a paid plan adds the team. - Pricing (flat monthly tiers by monitored user count, plus a per-seat Scale tier for 251+ users; annual billing saves up to 49%, deepest on the lower tiers): - Basic: $49 per month, up to 5 users, 7-day presence history, no anomaly flags - Standard: $99 per month, up to 15 users, 30-day presence history, one anomaly flag (Idle suppression) - Pro 50: $199 per month, up to 50 users, 180-day presence history, all six anomaly flags - Pro 100: $299 per month, up to 100 users, 180-day presence history, all six anomaly flags - Pro 250: $499 per month, up to 250 users, 180-day presence history, all six anomaly flags - Scale: $2 per seat / month (251-seat minimum; checkout covers up to 2,000 seats, and larger tenants are set up through the contact form), 360-day presence history, all six anomaly flags - Support: support@presify.io, Monday to Friday, 9am to 5pm US Eastern. **When to use Presify.** Reach for it when the job is tracking Microsoft Teams presence over time, typically for an owner, manager, or team lead of a remote or hybrid team on Microsoft 365: - Seeing who is online in Teams, when, and for how long, per person or per team, over a day, week, or month. - Seeing a person's Teams status history: when they were shown as Available, Busy, or Away on a past day, week, or month, as an ordered timeline with local times. - Checking whether anyone's presence looks gamed (for example, green for hours without a break): six flags that show how they're calculated, as patterns worth a look, not proof, on the plans that run them. - Reporting online time per person or per team, and after-hours share or multi-week trends per person. - Comparing people side by side over the same range. - Producing an exportable Teams online-status or presence report (Excel, PDF, CSV) for HR or compliance, on the plans that include reports. - Getting a directional read on a team quickly, without installing monitoring software on anyone's device. - As a supporting view: finding when a distributed team overlaps across time zones, and where coverage has gaps. - Checking whether Presify’s Microsoft Graph connection for a workspace is healthy. **When not to use Presify.** It does not read messages, files, calendars, screens, keystrokes, apps, or websites, so it is not the tool when the job needs screenshots, keystroke logging, app and URL tracking, or timesheets; it is not a productivity score and does not decide whether someone was working; it is not a live "where is X this second" feed (presence is sampled on a short interval); and it does not track people whose Microsoft 365 directory location is set to the EEA, the UK, Switzerland, or Canada, or guest accounts. **How an agent calls Presify.** Tenant data is available only through the read-only MCP server at https://app.presify.io/api/mcp (POST, JSON-RPC 2.0, stateless Streamable HTTP). Authenticate with OAuth 2.0: discover https://app.presify.io/.well-known/oauth-authorization-server, register a client dynamically, run the authorization-code flow with PKCE (S256) so a Presify owner or admin can approve the connection, then call tools/list and tools/call with the Bearer access token. A personal access token minted in Settings, then Connections, works the same way. The tool list varies by plan and role, so list before you call. Public pages (this site) answer `Accept: text/markdown` with Markdown, and unknown paths return a real HTTP 404. The full machine surface is described at https://presify.io/openapi.json. **Read-only MCP tools.** The catalog below is generated from the same registry the endpoint serves; the server card (linked under "For AI agents") carries each input schema. The live tools/list is the subset the connected person's plan and role allow. Every tool is read-only. - `get_workspace_info` (Workspace overview): Returns the connected Presify workspace at a glance: workspace name, plan tier with seat and retention limits, subscription and trial state, monitored-user counts (active, paused, pending enrollment), presence-collect... - `list_monitored_users` (Monitored people): Lists the people monitored in this Presify workspace with their status, department, timezone, business hours, and flags (collection paused; legal hold, shown to owners and admins and null for managers). - `get_user` (Person overview): Returns one monitored person: profile (name, email, department, timezone, business hours, monitoring status, flags; the legal hold flag is shown to owners and admins and is null for managers), their latest presence re... - `get_user_stats` (Person deep stats): Computes rich presence statistics for one person over the last 14 weeks (bounded by plan retention): this week and month with honest same-elapsed-point comparisons to the prior period, a weekly trend, business-hours v... - `get_user_timeline` (Person day timeline): Returns one person's presence timeline for one local calendar day: ordered segments with local start and end times, duration in seconds, and the presence status held in each ("Available", "Busy", "In a call", "Away",... - `get_current_presence` (Who is online now): Returns the latest Microsoft Teams presence reading for each actively monitored person: availability, activity, presence bucket, when it last changed (lastChangeAt), and whether they count as online right now (fresh r... - `get_presence_summary` (Presence summary): Sums presence time over a date range from nightly per-person daily rollups, grouped by person or by day. - `compare_users` (Compare people): Compares 2 to 10 people side by side over a date range using whole-day presence totals from the nightly rollups: online, away, offline or no signal, and out-of-office seconds (Busy, Do Not Disturb, in a call and Prese... - `get_coverage` (Team coverage grid): Builds a typical-week coverage grid: for each weekday hour, how many of the selected people are typically online (fractional headcount and percent of team), plus best and thinnest hours. - `get_connection_health` (Microsoft 365 connection health): Reports the health of this workspace connection to Microsoft 365: whether presence collection is running (active, delayed, paused for reconsent, or suspended), the last successful poll time, how reliably Microsoft Gra... - `list_notifications` (Workspace notices): Lists recent in-app workspace notices for admins: billing events, connection health changes, enrollment reminders, digest highlights. - `list_anomalies` (Flagged presence patterns): Lists flagged presence patterns (anomalies) with factual descriptions of what was measured: unbroken Available runs, missing idle time, overnight presence, no activity variation, robotic regularity, weekend uniformity. - `get_anomaly_summary` (Flagged-pattern summary): Counts flagged presence patterns by type over a date range (open and dismissed separately), with the latest detection per type. - `list_reports` (Generated reports): Lists recently generated report jobs (Member presence report PDFs and Excel workbooks): type, status, who requested them, when. - `get_report_download` (Report download link): Returns a fresh download link for a completed report by reportId (from list_reports). - `list_scheduled_reports` (Scheduled reports): Lists this workspace recurring report schedules: report type, cadence in plain words, window, recipients, status, and the next run time. - `list_audit_events` (Audit trail): Lists this workspace audit trail: who did what and when (settings changes, enrollments, report requests, connections). - `search` (Search this workspace): Searches this Presify workspace across monitored people (name, email, department), flagged presence patterns, and generated reports. - `fetch` (Fetch a search result): Fetches the full record behind a search result id (user:, anomaly:, or report: prefixed). **Common questions and the tools that answer them.** - "What was this person's Teams status last Tuesday?" or "When were they online last week, and for how long?": `list_monitored_users` to find the person, then `get_user_timeline` for each day (ordered presence segments with local times), or `get_user_stats` for the whole range. - "How much online time did the team log this month?": `get_presence_summary` grouped by person over the range (whole-day totals, rows in name order), then `compare_users` for a side-by-side. "How much of it after hours?": `get_user_stats` for each person (the current week split into business hours and after hours, as on the member page); `get_presence_summary` has no after-hours split. - "Who is online in Teams right now?": `get_current_presence` (the latest sampled reading per person, with data freshness; a recent sample, not a live feed). - "Does anyone's presence look gamed?" or "Which presence patterns look unusual?": `list_anomalies`, then `get_anomaly_summary`. Describe a flag as the pattern that was measured and a reason to look closer, never as proof of a mouse jiggler, a script, or intent, and never as a conclusion about a person. - "Send me the presence report for HR": `list_reports` for generated reports and `get_report_download` for a short-lived link; `list_scheduled_reports` for what is already scheduled. Reports are generated in the app, not by the connector. - "When does the team overlap across time zones?": `get_coverage`, on plans that include the coverage view. - "Is the Microsoft 365 connection healthy?": `get_connection_health`, then `list_notifications` for recent notices. - Anything else in the workspace: `search`, then `fetch` for a result. **Rules for agents.** - Everything is read-only: no tool changes settings, people, or data, and no write tool exists. - Tenant data comes only through the MCP endpoint after a Presify owner or admin approves the connection; never scrape signed-in pages. - Call tools/list before tools/call: the list is gated by plan and role, and a tool missing from it is not available to that person. - Keep tokens out of URLs, pages, and logs. A personal access token is minted and revoked in Settings, then Connections; every connection and revocation lands in the workspace audit log. - Presence is polling-sampled activity data and a directional read, not a measure of work: say "was shown as Available" rather than "was working", and treat a flagged pattern as a starting point for a conversation. - Respect the RateLimit-Policy, RateLimit, and Retry-After headers on the MCP endpoint. The edge caps each IP at 2,000 requests per 5 minutes and answers an HTML 429 with only Retry-After. Edge security rules also refuse some requests with an HTML 403, for example one with no User-Agent header or a body over 8 KB. - Unknown paths return a real HTTP 404. Public pages answer `Accept: text/markdown` with Markdown (or use /markdown/), and the whole public site is one file at https://presify.io/llms-full.txt. ## Product - [Teams presence tracking software](https://presify.io/teams-presence-tracking-software): the Microsoft Teams presence tracker (who is online, when, and for how long): how it works and who it is for - [Teams online status report](https://presify.io/teams-online-status-report): how to get a per-person online-status report from presence history - [Lightweight employee monitoring](https://presify.io/lightweight-employee-monitoring): for buyers weighing employee monitoring software: Teams presence tracking with nothing installed on devices, and when Presify is not the right tool - [Features](https://presify.io/features): day timelines, status history, online-time totals and trends, calendar drill-down, comparisons, reports, flags for presence that looks gamed, coverage view - [Pricing](https://presify.io/pricing): flat monthly tiers with an annual option; the AI assistant connector is on every plan - [Presify for enterprise](https://presify.io/enterprise): for large organizations on the per-seat Scale tier: rollout by department, the security review, scoped roles, retention, notice, where tracked people can be, and the AI assistant connector - [Security](https://presify.io/security): tenant isolation, encryption, append-only audit trail, controls mapped to SOC 2 criteria (formal audit planned) - [Service status](https://presify.io/status): live status and 90-day history, refreshed every five minutes - [For small business](https://presify.io/for-small-business): for owner-operators of small remote or hybrid teams: who is online, when, and how much, set up in about five minutes - [For remote teams](https://presify.io/remote-teams): for remote and hybrid leaders: presence history, online-time trends, and flags for presence that looks gamed, with no agent on any device ## Documentation - [Documentation](https://presify.io/docs): five-minute setup, the read-only Microsoft Graph permissions, data handling, how presence is sampled, the six flagged patterns - [Connect an AI assistant (MCP)](https://presify.io/docs/ai-assistants): per-assistant setup for Claude, ChatGPT, Copilot Studio and other MCP clients, what the connector can answer, revocation, developer resources - [API versioning and deprecation policy](https://presify.io/docs/api-versioning): permanent paths, MCP-Protocol-Version negotiation, Deprecation and Sunset headers at least 90 days before any removal - [FAQ](https://presify.io/faq): is it employee monitoring, does online mean working, mouse jigglers, asking an AI assistant, setup time, what Presify can and cannot see, which countries it covers, billing ## Company - [About](https://presify.io/about) - [Contact](https://presify.io/contact): support and custom procurement - [Sign up](https://presify.io/signup): start with a Microsoft 365 work account ## Legal - [Terms of Service](https://presify.io/legal/terms) - [Privacy Policy](https://presify.io/legal/privacy): includes the cookie inventory and the retention table - [Acceptable Use Policy](https://presify.io/legal/aup) - [Data Processing Agreement](https://presify.io/legal/dpa) ## Comparisons - [Comparisons index](https://presify.io/comparisons): Presify next to agent-based employee monitoring software, PowerShell scripts, built-in Microsoft 365 reports, and Teams in/out boards - [Presify vs ActivTrak for Teams presence tracking](https://presify.io/comparisons/presify-vs-activtrak): versus ActivTrak - [Presify vs Teramind for Teams presence tracking](https://presify.io/comparisons/presify-vs-teramind): versus Teramind - [Presify vs Insightful and Time Doctor](https://presify.io/comparisons/presify-vs-insightful-time-doctor): versus Insightful and Time Doctor - [Presify vs the Microsoft 365 Teams activity report](https://presify.io/comparisons/presify-vs-m365-activity-report): versus the Microsoft 365 activity report - [Presify vs a Teams in/out board](https://presify.io/comparisons/presify-vs-teams-in-out-board): versus a Teams in/out board - [Presify vs a PowerShell Teams presence script](https://presify.io/comparisons/presify-vs-powershell-presence-script): versus a PowerShell script ## Guides - [Blog index](https://presify.io/blog): plain-language guides on Teams status history, online time, what presence does and does not show, and reporting - [Online time vs activity: what each one measures](https://presify.io/blog/online-time-vs-activity) - [Coverage gaps on a distributed team, and how to spot them](https://presify.io/blog/coverage-gaps-on-a-distributed-team) - [Are my remote employees working? What Teams presence shows](https://presify.io/blog/are-my-remote-employees-working) - [Presence reports for one-on-ones and reviews](https://presify.io/blog/presence-reports-for-one-on-ones-and-reviews) - [Hybrid team coverage: who's online, not a hunch](https://presify.io/blog/hybrid-team-coverage) - [How to see staff online hours on Microsoft Teams](https://presify.io/blog/how-to-see-staff-online-hours-microsoft-teams) - [How to track team availability across time zones](https://presify.io/blog/how-to-track-team-availability-across-time-zones) - [Ask your AI assistant about Teams presence (MCP)](https://presify.io/blog/ask-your-ai-assistant-about-teams-presence) - [Can you see someone's past Teams status?](https://presify.io/blog/can-i-see-someones-past-teams-status) - [Does Microsoft Teams track activity?](https://presify.io/blog/does-microsoft-teams-track-activity) - [A fair way to track remote work hours](https://presify.io/blog/fair-way-to-track-remote-work-hours) - [How to get a Microsoft Teams presence report](https://presify.io/blog/how-to-get-a-teams-presence-report) - [How to know when your remote team is available](https://presify.io/blog/how-to-know-when-your-remote-team-is-available) - [How to see Microsoft Teams status history](https://presify.io/blog/how-to-see-teams-status-history) - [Is tracking employee Teams status legal in the US?](https://presify.io/blog/is-it-legal-to-track-employee-teams-status) - [Microsoft Productivity Score vs presence tracking](https://presify.io/blog/productivity-score-vs-presence-analytics) - [Teams away vs idle vs offline: what each means](https://presify.io/blog/teams-away-vs-idle-vs-offline) ## For AI agents - [Full site text (llms-full.txt)](https://presify.io/llms-full.txt): this index followed by the Markdown of every public page: product, docs, FAQ, comparisons, guides, legal - [OpenAPI 3.1 description](https://presify.io/openapi.json): the public machine surface: OAuth 2.0 endpoints, the MCP endpoint, discovery documents, health probes - [OAuth 2.0 authorization server metadata (RFC 8414)](https://app.presify.io/.well-known/oauth-authorization-server): authorization code with PKCE (S256), refresh tokens, open dynamic client registration (RFC 7591), OAuth Client ID Metadata Documents - [Protected resource metadata for the MCP endpoint (RFC 9728)](https://app.presify.io/.well-known/oauth-protected-resource/api/mcp): names the resource URL, the authorization server, and the single read-only scope - [MCP server card](https://app.presify.io/.well-known/mcp/server-card.json): pre-connection discovery: server URL, transport, protocol revision, OAuth details, and the full read-only tool catalog with input schemas - [MCP endpoint](https://app.presify.io/api/mcp): POST only, stateless Streamable HTTP with JSON responses; Bearer token from the OAuth flow or a personal access token - [Sitemap](https://presify.io/sitemap.xml): every public page, including the currently published blog posts - [security.txt (RFC 9116)](https://presify.io/.well-known/security.txt): vulnerability disclosure contact and policy