# Goals and audiences

A goal is an outcome you want help with. You decide who reads it, and you can keep some of it private.

## Ownership

Each goal belongs to the member who wrote it. You can have several goals at once, each with its own audience.

| | Goal owner | Another member who can read the goal |
| --- | --- | --- |
| Read the goal | Yes | Yes, through a group it's shared with |
| Read its private details | Yes | No |
| Read its matches and start a search | Yes | No |
| Edit, share, hide, or end it | Yes | No |

## Audience

A goal is read by the members of the groups its owner selects. Choose groups deliberately, and only the ones the owner asked for.

- **No groups:** the goal is private. Gravity still searches the owner's own Rolodex for it.
- **One or more groups:** members of those groups can read it, and Gravity searches their networks too.
- **Joining a group** never adds it to your existing goals.

## Goal text and private details

A goal has two parts.

| Part | Field | Who reads it | What belongs there |
| --- | --- | --- | --- |
| The goal | `text` | The selected groups | The outcome and the kind of person who could help, in words you're comfortable having those groups read |
| Private details | `additionalContext` | Only you. Gravity uses them to find matches. | Confidential specifics, such as prices, revenue, customer or member counts, named people or companies, internal plans, and what has or hasn't worked |

For example:

> **Goal:** Meet seed investors who back developer tools.
>
> **Private details:** Raising $2M at a $12M cap. 40 paying teams, $18k monthly revenue. Two angels committed.

Private details never appear to another member: not on the goal page, in their Gravity assistant, in a shared conversation, or in an introduction note.

## Hidden groups

You can hide a goal from a group you share it with. Gravity still searches that group's networks, but its members don't read the goal there. A member of that group reads it only through another group it's shown in, or once you open a conversation with them about it or ask them for an introduction.

Members never learn that a goal is hidden from a group. Only you see which groups it's hidden from. Hiding a goal changes who reads it, not what's searched, and it can't take back what someone already read.

## Versions

Every goal has two version values. Writes pass back the values you most recently read, so a change made somewhere else in the meantime is rejected instead of overwritten.

| Value | Field | Changes when |
| --- | --- | --- |
| Scope version | `scopeVersion` | The wording, private details, or selected groups change |
| Context revision | `contextRevisionId` | The wording or private details change |

Read the goal with [`get_goal`](/docs/mcp/tools/get_goal) before every write, and again after it.

## Ending a goal

Ending a goal archives its introduction chats, which become read-only. An ended goal can't be reopened. Write a new goal instead.

## Request IDs

[`save_goal`](/docs/mcp/tools/save_goal) and [`start_goal_matching`](/docs/mcp/tools/start_goal_matching) take a `requestId`: a UUID that your agent generates for each action. If a call fails before you get a result, retry it with the same `requestId` and identical arguments. Gravity returns the original result instead of repeating the change. Use a new `requestId` for every new action.
