> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revyops.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Opportunities

> Deals synced in from your connected CRM, read-only in RevyOps.

An Opportunity is a deal synced into RevyOps from a connected CRM (Close CRM opportunities or HubSpot deals). RevyOps normalizes both into one Opportunity object for reporting and filtering. Opportunities are read-only in RevyOps: they're created, updated, and closed in the source CRM, and RevyOps reflects that state.

There is no public API or MCP tool to create or edit an opportunity. The Opportunities page in the UI is a read-only, filterable list; use it, `query_entity`, or `get_filter_schema` to find and report on opportunities.

## Configuration

|                   |                                                                                   |
| ----------------- | --------------------------------------------------------------------------------- |
| API path          | None. Opportunities have no public write or read endpoint of their own            |
| MCP filter entity | `opportunity` (via `get_filter_schema` and `query_entity`)                        |
| UI                | Opportunities page (read-only list with the same filter builder as other objects) |

## Attributes

| Attribute     | API field       | Type          | Writable? | Notes                                                       |
| ------------- | --------------- | ------------- | --------- | ----------------------------------------------------------- |
| Name          | `name`          | string        | No        | Deal name                                                   |
| Amount        | `amount`        | number        | No        | Deal value                                                  |
| Currency      | `currency`      | string        | No        | From Close only; HubSpot deals don't carry a currency field |
| Stage         | `stage`         | string        | No        | The CRM's own stage/status label                            |
| Status        | `status_type`   | string (enum) | No        | Normalized to `active`, `won`, or `lost`                    |
| Pipeline      | `pipeline`      | string        | No        |                                                             |
| Confidence    | `confidence`    | number        | No        | From Close only                                             |
| Value Period  | `value_period`  | string        | No        | From Close only                                             |
| Deal Type     | `dealtype`      | string        | No        | From HubSpot only                                           |
| Note          | `note`          | text          | No        | From Close only                                             |
| Close Date    | `close_date`    | date          | No        | Date won or lost                                            |
| Updated Date  | `updated_time`  | date          | No        |                                                             |
| Custom Fields | `custom.<name>` | varies        | No        | Custom fields defined on the opportunity in Close CRM       |

Some attributes only come from one of the two source CRMs, so an opportunity synced from the other CRM leaves that field empty.

## Relationships

* **Contact**: reachable through the `opportunities` relation on the contact entity.
* **Company**: reachable through the `opportunities` relation on the company entity.

## Related endpoints and MCP tools

**MCP tools**

* `get_filter_schema` (entity `opportunity`)
* `query_entity` (entity `opportunity`, or via the `opportunities` relation on `contact`/`company`)
* `get_field_options`
