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

# Sourcing & proposal tools

> Track an event's sourcing, read and compare proposals, and act on them.

Every tool on this page reads or acts on one event. Each takes a required
`event_id`: the event's UUID from `list_events`, or its numeric `eventId` from
`find_event` or `query_past_events`, as a string. An event you cannot read
returns the same not-found error as one that does not exist.

Five tools on this page prepare a change: `send_rfp`, `negotiate`,
`decide_proposal`, `request_contract` and `draft_venue_email`. Each returns a
preview and an approval handoff, and nothing reaches a venue until
[`confirm_change`](https://docs.nowadays.ai/mcp/making-changes#confirm_change) runs after the person
said yes. `shortlist_proposal` is the exception. It saves at once and never
tells the venue. See [Making changes](https://docs.nowadays.ai/mcp/making-changes.md).

## `get_sourcing_status`

Reports where sourcing stands on the event. It contains no prices.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |

Returns `counts` (`candidates`, `rfpsSent`, `proposalsReceived`,
`awaitingReply`, `markedUnavailableOrOverBudget`, `notYetSent`,
`clientDeclined`, `clientShortlisted`, `contractRequested` and `booked`) and
`venues`. Each venue has its `name`, `city`, `standing`, `addedBy`,
`rfpSentAt`, `proposalReceivedAt`, `clientDecision`, `booked`, `daysOut` and
`daysToProposal`. `proposalLagDays` gives the fastest and slowest proposal so
far. The day counts describe what has happened on this event. They are not a
forecast of when the next proposal arrives.

## `get_proposals`

Reads the proposals venues sent back for the event.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venue` | string | Part of a venue's name, to return only that venue's proposal. |

Returns `proposals`, one per venue with an active proposal. Each has `venue`
(name, location, guestrooms and meeting rooms), `quotes`, `clientDecision`,
`clientShortlistedAt`, `contractRequestedAt`, `booked` and
`clientFacingNotes`. Each quote has `status`, `receivedAt`, `dateOption`,
`storedGrandTotal` and `details`, which hold the dates quoted, guestroom and
meeting room rates, the F\&B minimum, fees and taxes, concessions, cancellation
and attrition terms, and open items. Also returns `venuesWithoutProposal`, the
names of venues on the event that have not quoted yet.

## `get_proposal_alerts`

Reports whether the signed-in person is told when a proposal lands on the
event. Alerts go only as a private Slack DM from the Nowadays app. This tool
never changes a setting.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |

Returns `linked`, which is `false` when the person's Slack account is not
connected to Nowadays. Otherwise it returns `proposalAlertsOn`,
`mutedForThisEvent` and `delivery`. A `say` sentence tells the person what to
do. Alerts are turned on, and a Slack account is connected, from the Nowadays
app in Slack.

## `contract_status`

Reports where the event's contracts stand: which venue each is with, whether
it has been reviewed, and clause by clause whether it meets the client's own
contract rules. It never signs, sends or changes anything.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venue` | string | A venue's name, to return only that venue's contract. |
| `only_unmet` | boolean | `true` to return only clauses that are not met. |

Returns `contracts`, each with `venue`, `name`, `reviewStatus`,
`signatureStatus`, `signerName`, `signedAt`, `receivedAt`, the counts `met`,
`notMet` and `skipped`, and `clauses` with the wording and page number behind
each answer. `reviewStatus` of `reviewed` means someone has read the contract.
It does not mean anyone agreed to it or signed it.

## `get_venue_activity`

Reads the log of what Nowadays did to chase each venue on the event: calls
placed, voicemails left, who was reached and what they said, and every
negotiation round sent, including rounds sent from the dashboard. This is our
side of the contact. It never proves the venue replied.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venue` | string | Part of a venue's name, to return only that venue. |

Returns `venues`, each with `venueName`, `entries` (the contact log),
`negotiations` (the asks sent, newest first) and a `dashboardUrl`.
`moreEntries` and `moreNegotiations` count what the result left out.

## `send_rfp`

Prepares RFPs to the exact venues the person selected. A venue may already be
on the event, be elsewhere in the Nowadays catalog, or be a new property found
through Google Places. Pair each venue with its city when you know it.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venues` | array of strings | The exact venue names the person selected, up to 5. |
| `venue_cities` | object | Each venue name mapped to its city, for example `{ "Hotel Zaza": "Austin" }`. |
| `acknowledge_test_event` | boolean | Set only after a send was refused because the event is a test event, and the person then said to send it anyway. |

Returns a preview of the whole plan the hotels will receive (dates,
room-nights, headcount and the questions for the hotels) and an approval
handoff. The RFPs go out only on confirm.

## `shortlist_proposal`

Bookmarks a venue on the event's shortlist, or removes a bookmark. The venue
must already be on the event. This saves at once, with no confirm step, and
never tells the venue. Call it once per venue.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venue` | string | The venue's name, as it appears on the event. Required. |
| `shortlisted` | boolean | `true` to bookmark, `false` to remove a bookmark (default `true`). |

Returns a `say` sentence that confirms what was saved. A venue the client
declined cannot be bookmarked. Undo the decline first.

If the call runs past its time limit, the save may still land. The error says
"That took too long to answer, so it may or may not have saved. Read it back
before trying again." Call `get_proposals` or `get_sourcing_status` to check
before you call it again.

## `decide_proposal`

Prepares a decision on venues' proposals: decline them, or move declined ones
back to quoted. Name every venue you are deciding about in one call. They
share one reason and one note. Each venue is emailed once the decision is
confirmed.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venues` | array of strings | The venues' names, exactly as they appear on the event. If one name does not resolve, nothing is prepared for any of them. Required. |
| `decision` | string | `decline` or `reinstate`. Required. |
| `tags` | array of strings | One or more reason ids from the table below. The venue reads the label. Required. |
| `note` | string | Extra context in the person's own words. The venue reads this too. |

| Decision | Reason ids |
| - | - |
| `decline` | `too_expensive`, `location`, `dates_unavailable`, `capacity_too_small`, `missing_amenities`, `slow_response`, `chose_another`, `other` |
| `reinstate` | `price_improved`, `dates_now_work`, `negotiated_better_terms`, `client_reconsidered`, `declined_by_mistake`, `other` |

Returns a preview with one venue's email as it will read, and an approval
handoff. Each email is written again at confirm time, so the final wording can
differ slightly from the preview.

## `negotiate`

Prepares an ask to a venue to improve their offer: waive a fee, add
concessions, or anything in the note. Once confirmed, the email is written and
sent in the existing email conversation with the venue.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venue` | string | The venue's name, as it appears on the event. Required. |
| `concessions` | array of strings | Concession ids from the table below. |
| `note` | string | Anything else to ask for, in the person's own words. The venue reads this. |

Each id sends a fixed line with the terms in its label. For different terms,
or anything the table does not cover, use `note`.

| Id | What the venue is asked for |
| - | - |
| `comp_rooms` | Complimentary rooms (1 per 35 paid rooms) |
| `resort_fee_waiver` | Waive resort/destination fee |
| `suite_upgrades` | Complimentary suite upgrades (2) |
| `meeting_room_rental_waiver` | Waive meeting room rental |
| `complimentary_internet` | Complimentary wifi in meeting and guest rooms |
| `welcome_drinks` | Complimentary non-alcoholic welcome beverage |
| `spa_discount` | 20% discount on spa services |
| `av_discount` | 30% discount on AV equipment |
| `fb_discount` | 20% off menu pricing, 50% off staff meals |
| `planner_points` | Hotel planner points |
| `attrition_slippage` | 25% cumulative attrition allowed |
| `group_rate_extension` | Extend group rate before/after event dates |
| `self_parking` | Complimentary self-parking |
| `valet` | Complimentary valet |
| `preplanning_room_nights` | Complimentary room nights for pre-planning visits |
| `welcome_amenities` | Complimentary welcome amenities |
| `vip_amenities` | VIP amenities |
| `early_late_checkout` | Early check-in / late check-out (VIPs) |
| `cancellation_policy` | Flexible cancellation policy |
| `gym_access` | Complimentary gym access |
| `pool_access` | No pool renovations during event |

Returns a preview that lists what will be asked for, and an approval handoff.
The preview does not show the finished email, because the email is written at
confirm time.

## `request_contract`

Prepares a contract request to a venue the person has chosen. The venue must
already be on the event with a proposal. Billing and contact details are
reused from this client's last contract request.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venue` | string | The venue's name, as it appears on the event. Required. |
| `additional_comments` | string | Anything the person wants the venue told with the request. |

Returns a preview of the request with the reused details, and an approval
handoff. The request is refused, and nothing is prepared, if the venue was
declined, is marked unavailable or over budget, already has a contract
request, or has not sent a proposal.

The first contract request for a client is also refused, because there are no
billing details to reuse yet. No argument accepts billing details, so this
tool cannot make a client's first request. Make that one in the Nowadays
dashboard. Later requests reuse its details.

## `draft_venue_email`

Prepares an email to one of the event's venues, such as a follow-up, a
site-visit request, or a question about something missing from their proposal.
Write the body yourself, in Nowadays' voice. The email goes out from the
Nowadays inbox, not from the person's own address.

| Argument | Type | Description |
| - | - | - |
| `event_id` | string | Either id of the event. Required. |
| `venue` | string | The venue's name. Required. |
| `body` | string | The full email in plain text, signed off as Nowadays. Required. |

Returns a preview of the email and an approval handoff. The email is sent only
on confirm.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.