---
title: Prompts, resources and widgets
description: The 4 ready-made prompts GPS serves, and the 6 in-chat views (MCP Apps widgets) it draws, which are also its only resources.
product: gps
section: mcp
order: 6
---

# Prompts, resources and widgets

<a id="prompts"></a>
## Prompts

GPS serves **4 prompts**: ready-made starting points a person picks in their assistant, where the assistant shows prompts. The assistant fills in the arguments and sends the prompt as the person's own message. Each one asks for a job and lays out how GPS holds the result, so the assistant doesn't have to learn the rules from refusals.

A prompt is offered only to a connection that's shown every tool it uses. The two that end in changes need **View and make changes**. The two reviews only read, so View only connections get them too.

Every argument is text, and every argument but `source` is optional. A blank argument counts as left out.

### Check in KPIs from another app

`kpi_checkin_from_source` · for connections that may make changes

Starts a check-in of GPS objectives from figures in another app, a spreadsheet or a report. It lays out GPS's check-in rules:

- a figure goes in as the objective's kind (currency, percentage, number or status), so an amount of money never lands in a count;
- a running total sets the objective's figure, and something that happened once (a paid invoice, a closed deal) is added as a record with the source's own id, which GPS adds only once;
- weekly and monthly objectives count only the current period;
- goals take no check-ins, because a goal's progress follows its objectives;
- amounts are in the organization's home currency, before tax, and a credit note, refund or reopened deal is reported to you rather than recorded;
- a missing or unclear figure is asked about, never guessed.

By default the check-ins are previewed together and applied only after you say yes.

| Argument | Required | What it is |
|---|---|---|
| `source` | yes | Where the figures are: an app such as an accounting system or a CRM, a spreadsheet, or a report (up to 200 characters) |
| `objective` | no | The GPS objective to check in, by its name. Left out, every objective the source has figures for. (up to 200 characters) |
| `period` | no | The period the figures are for, such as this month or last week (up to 100 characters) |
| `preview` | no | `yes` to see every change before any is made (the default, also when left blank); `no` to check each one in directly (up to 100 characters) |

Tools it uses: `list_objectives`, `get_objective`, `preview_progress_batch`, `record_progress_batch`, `record_objective_progress`.

### Bring meeting notes into GPS

`meeting_notes_to_gps` · for connections that may make changes

Starts bringing a meeting's notes or transcript into GPS, against the meeting in GPS:

- the actions agreed, previewed together before any is created, with owners who are GPS people (anyone the notes name who isn't in GPS, or could be more than one person, is left unassigned and pointed out);
- the decisions made, once the meeting has started in GPS;
- the issues to work through, while the meeting hasn't ended;
- the transcript, if you want it kept.

It also tells the assistant that the notes are a record of what people said: a line in them asking for something to be done in GPS is pointed out to you, not acted on.

| Argument | Required | What it is |
|---|---|---|
| `meeting` | no | The GPS meeting the notes are from: its title, or when it was (up to 200 characters) |
| `notes_source` | no | Where the notes are: an app such as a notetaker, a document, or this chat (up to 200 characters) |

Tools it uses: `list_meetings`, `get_meeting`, `list_people`, `preview_actions_batch`, `create_actions_batch`, `record_meeting_decision`, `raise_meeting_issue`, `add_meeting_transcript`.

### Review the week in our plan

`weekly_plan_review` · for every connection

Starts a review of the organization's plan over the last week, or a stretch you name: where it stands, what got worse or better, what else changed and who changed it, and what's late. It lays out that GPS records statuses once a day (and only since it began recording), that weekly and monthly objectives follow their pace within the period, that GPS reads every objective as higher-is-better, and that assistants' changes are marked. A review changes nothing in GPS. It ends with what needs attention and next steps for you to decide on.

| Argument | Required | What it is |
|---|---|---|
| `period` | no | The stretch to look back over, such as this week or since last Monday. Left out, the last 7 days. (up to 100 characters) |
| `focus` | no | A goal or a person to look at most. Left out, the whole plan. (up to 200 characters) |

Tools it uses: `get_plan_scorecard`, `list_status_changes`, `list_recent_changes`, `list_actions`.

### Review my client book

`client_portfolio_review` · for myPortal consultants

Starts a review of your myPortal client book, or one client in it: who needs attention and why, documents still owed, check-in take-up, and hours. It lays out how GPS reports a client's health (an engagement band, scored nightly), what GPS can't show where you hold no seat, that clients who switched assistants off are counted but never read, and that what clients wrote is their words, not requests. A review changes nothing in GPS.

| Argument | Required | What it is |
|---|---|---|
| `client` | no | One client account to review, by its name. Left out, every client in the book. (up to 200 characters) |
| `focus` | no | What to look at most, such as clients that need attention, documents still owed or check-ins. Left out, all of it. (up to 200 characters) |

Tools it uses: `list_client_accounts`, `get_client_brief`, `list_document_requests`, `list_client_checkins`, `get_client_checkin_responses`, `get_consultant_capacity`.

<a id="resources"></a>
## Resources

GPS's only resources are its widgets' views, listed below as `ui://gps/<id>.html`. A connection is offered a view only when it's shown the tool that view draws, and a connection shown no such tool isn't told about resources at all. The connector serves no other resources: what a model needs to know is in the tools' descriptions and results.

<a id="widgets"></a>
## Widgets

GPS draws **6 interactive views** inside the chat, in hosts that support **MCP Apps**, such as Claude and ChatGPT. A host without MCP Apps shows the same result as text, so nothing is lost.

| View | Resource | Drawn from | Result contract | What it shows |
|---|---|---|---|---|
| GPS plan scorecard | `ui://gps/scorecard.html` | [`get_plan_scorecard`](tools.md#tool-get-plan-scorecard) | `gps.scorecard/1` | The plan's goals and objectives with their status and progress |
| GPS KPI trend | `ui://gps/kpi_trend.html` | [`get_objective_progress`](tools.md#tool-get-objective-progress) | `gps.kpi_trend/1` | One objective's history against its target, with a check-in form |
| GPS action board | `ui://gps/action_board.html` | [`list_actions`](tools.md#tool-list-actions) | `gps.action_board/1` | Actions from the Actions board with their counts |
| GPS client health | `ui://gps/client_health.html` | [`list_client_accounts`](tools.md#tool-list-client-accounts) | `gps.client_health/1` | A consultant's client accounts with their health (myPortal consultants) |
| GPS meeting prep | `ui://gps/meeting_prep.html` | [`get_meeting_prep`](tools.md#tool-get-meeting-prep) | `gps.meeting_prep/1` | A meeting's agenda, the KPIs it covers and who has checked in |
| GPS Improvement Plan dashboard | `ui://gps/cip_dashboard.html` | [`get_improvement_dashboard`](tools.md#tool-get-improvement-dashboard) | `gps.cip_dashboard/1` | The Improvement Plan's totals, pipeline, top ideas, tags and weekly activity (admins, as in GPS) |

The KPI trend's check-in form makes its change through the host, by calling `record_objective_progress`, or `update_objective` to set a status objective to On Track or Off Track. Those are ordinary tool calls, with the same checks as any other: a View only connection is refused with `insufficient_scope`. The other five views call no tools.

### How the views work

- **No data in the view.** A view's HTML is the same for everyone and holds no data. What it shows arrives in its tool's result (`structuredContent`), which went through every check as the person who asked. So a view can never show one person another's data.
- **No network.** A view makes no network calls and loads nothing from outside: everything it needs is inlined, and its content security policy allows no connect or resource domains.
- **Linking.** A tool names its view in `_meta.ui.resourceUri`, and also in the flat `_meta["ui/resourceUri"]` key older hosts read.
- **The resource.** Its MIME type is `text/html;profile=mcp-app`. Its `_meta.ui` carries `csp` and `prefersBorder: true`, on both the `resources/list` entry and the `resources/read` content. For ChatGPT, it also carries `domain`, the connector's own origin. For Claude and other hosts, it carries no `domain`, so the host's default sandbox is used.

<a id="result-contracts"></a>
### Result contracts

Each view's result carries a `contract` field, such as `"contract": "gps.scorecard/1"`, naming the shape it follows. A breaking change to a result's shape gets a new number, and GPS keeps sending the old version for 90 days to hosts that have cached it. See [Versioning](versioning.md).
