MCP App Store
by KeenEthics
PositionGuard icon

PositionGuard

By ScaleForge AI LLC

Get New App Alerts

Overview

PositionGuard lets AI assistants access privacy-preserving presence information while keeping control with the people whose information is being shared. Ask who is home, who is at the Lake House, or how many people are at the pickleball court. Look up your own area-level presence using your PositionGuard nickname. Connect through PositionGuard's existing OAuth sign-in and approve the assistant in the PositionGuard mobile app using the displayed QR code or code. Each member independently controls AI sharing, with visibility controls for areas and groups. Authorizing your assistant does not authorize access to another member's presence. Answers distinguish confirmed presence from last-known information and unknown presence. Unknown never means away. Lists and counts may be incomplete according to visibility and freshness. The assistant receives area-level information, never exact coordinates or continuous tracking, and cannot change settings or send messages. Manage sharing and revoke individual assistant connections in PositionGuard.

Tools

count_members_at_area

ChatGPT
Counts how many members are at one area, without identities. Find the area by area_id or area_name, in one group or across every group when group_id is omitted. Returns {status: "ok", area, group_id, group_name, member_count, stale_count, undisclosed_count, note}. member_count is a floor: undisclosed_count members are at the area but chose not to be visible to assistants, and stale_count of the counted are not recently confirmed (last known there). Report the count as 'at least N' when either is non-zero, and say how many are not recently confirmed — never present those as there now. When the API provides no count (reason "count_unavailable") the answer is unknown, not zero.

list_areas

ChatGPT
Lists the named areas (places) of a group, or of every group when group_id is omitted. Names and IDs only: no coordinates, no counts. Use count_members_at_area for how many people are at an area. Returns {status: "ok", areas: [{area_id, name, group_id, group_name}]}.

list_groups

ChatGPT
Lists the PositionGuard groups the key holder belongs to, with their IDs. Call this first when you need a group_id for another tool, or when asked what groups exist. Returns {status: "ok", groups: [{group_id, name, group_type}]}.

where_is_member

ChatGPT
Reports whether one member is currently at a named area. Looks the member up by nickname (case-insensitive) in the given group, or in every group when group_id is omitted. Returns one of: {status: "at_area", area: {area_id, name}, inside_areas?, since?} — they are at that area now; {status: "last_known_at_area", area, inside_areas?, since?, position_fresh: false, last_confirmed_seconds_ago, note} — they were last confirmed at that area that long ago and have no newer position; relay the note, with the age; {status: "not_at_area"} — their presence is shared with assistants and they are not at any of the group's areas; {status: "unknown", reason} — see below. Returns unknown when the member hasn't shared their presence with assistants, or their location is stale (reason "not_disclosed" or "stale"), and with reason "no_such_member" when no member has that nickname — do not invent one. area is the most specific area they are in. inside_areas, when present, lists every area of the group they are in that is shared with assistants, most specific first (a home inside a city lists both): use it to answer whether they are in a larger area. An area missing from a member's inside_areas is not evidence that the member is outside it: members can hide individual areas from assistants, and nothing marks the omission. For an area that is not listed, the answer is unknown, not no. since is when they entered the area, not when their position was last confirmed; position_fresh and position_age_seconds, when present, say how recent the position is. Duration is not available when the reported area is not the API's current_area for the member, so no since is given for it: when since is absent, do not say how long they have been there. unknown means you don't know; it does not mean they're away. Say so. Never present an unknown as an absence, and never guess a location. A last-known result (last_known_at_area, or a name in last_known) must be relayed with its age — e.g. "last confirmed at Lake House 10 h ago" — never as where they are now.

who_is_at_area

ChatGPT
Lists the members at one area, by area_id or area_name, in one group or across every group when group_id is omitted. Lists only members who've chosen to be visible to assistants, in two lists that must never be merged: confirmed (a recent position inside the area) and last_known (last confirmed inside it last_confirmed_seconds_ago seconds ago, nothing newer). A member inside a smaller area within this one (a home inside a city) is listed here too. If undisclosed_note or count_note is present, others may be there too: report confirmed as "confirmed here", not as everyone. count_note compares everyone the server counts at the area, including members present but not disclosed to assistants, with the names listed; when it is present, never report the list as complete. members repeats confirmed for older clients. Returns {status: "ok", area, group_id, group_name, confirmed: [nickname…], last_known: [{nickname, last_confirmed_seconds_ago}…], members, last_known_note?, undisclosed_note?, count_note?} or {status: "unknown", reason: "no_such_area"}. A last-known result (last_known_at_area, or a name in last_known) must be relayed with its age — e.g. "last confirmed at Lake House 10 h ago" — never as where they are now.

Capabilities

Read

Example Prompts

Click any prompt to copy it.

Similar Apps