← TapCONTENT HISTORY

Update to Tap

Snapshot Oct 7, 2026 · 00:22 UTC · version 2.0.0

WHAT CHANGED · RULE-BASED ANALYSIS

Package or technical metadata updated

Package contents changed in 3 files: .codex-plugin/plugin.json, skills/review-broadcast-campaigns/SKILL.md, skills/review-broadcast-campaigns/agents/openai.yaml. Open the file diff to inspect the edits.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Package file

Before

f700b2062e59cce1c3329c9493dbe16b94a7448e876b3ce4c4487fa632eed7b3

After

e20e1f666e577d682249aff4134408cb8d6b7795d488b6f4272d443d7bc025c8

Package file

Before

1630

After

1880

Package file

Before

c5441da450bce892b7b8e44e3b7a0a30fe98b46c7e00c84b1893cf78f9ffce04

After

e1c42db48d046721f1373148fac6e879996f015743d63864c490ed895e40fbc5

Package file

Before

4355

After

7166

Compare saved observations

Download comparison JSON

skills/review-broadcast-campaigns/SKILL.md

--- before
+++ after
@@ -1,81 +1,122 @@
 ---
 name: review-broadcast-campaigns
-description: Review Tap TV and radio campaigns, prepare unsent broadcast RFPs, check readiness, and compare submitted supplier responses. Use for buyer planning and RFP requests in Tap.
+description: Plan Tap campaigns, manage public and private RFPs, compare supplier responses, and prepare unsent direct-buy drafts and track existing Orders. Use for buyer media sourcing, supplier Deals, DOOH planning, correspondence, and creative fulfillment in Tap.
 ---
 
-# Review broadcast campaigns in Tap
+# Buyer media planning in Tap
 
-Use the connected Tap MCP tools for current buyer-workspace data. Match the
-user's named campaign before making changes; ask which campaign when multiple
-matches remain. Tool names retain `Plan` and `Avail` for compatibility; call
-these campaigns and supplier responses in the answer.
-
-## Review campaigns and gaps
-
-Use `listMyPlans` to identify visible campaigns. Its summary does not contain
-all completion fields. When asked for missing details, retrieve
-`getPlanContext` for each campaign being assessed and check budget, objective,
-audience, flight, markets, and media against that context. Distinguish an
-optional unassigned brand from a required RFP completion issue. Missing fields
-in a list projection are unknown until the detailed context is retrieved.
-
-Report concrete gaps without filling them with guesses. A request to review
-does not authorize saving edits.
-
-## Prepare or update broadcast RFPs
-
-Retrieve current campaign context and matching RFP details first. Reuse a
-matching existing draft when appropriate and explicitly say it already
-existed. Use `createBroadcastRfpDrafts` only when creation is needed; distinguish
-its created and already-existing results. Preserve issued RFPs when editing
-campaign drafts.
-
-Ground station choices in `listBroadcastRecipientCandidates` and current
-recipient records. Do not invent stations, recipients, rates, or availability.
-Use `stageBroadcastRfpRecipients` only when a recipient change is requested or
-needed for the requested preparation; replacing the saved selection requires
-approval. Preparing a draft does not send it.
-
-For readiness reviews, use `listBroadcastRfps` and `getBroadcastRfp`. Separate
-sent RFPs from drafts, report each draft's completion issues, and distinguish
-"ready to send" from "sent". A draft with no selected recipient is not ready.
-
-## Review submitted responses
-
-Use `getBroadcastBuyingContext` and `assembleBroadcastBuy` for the requested
-campaign and medium. Compare submitted options using their actual quoted
-rates, quantities, audience, dates, and weekly goals. Explain the recommended
-option, total cost, projected impressions, effective CPM, uncovered goals, and
-remaining budget where the tools provide them. Keep proposed and saved buys
-distinct; calculation alone does not save or select a composition.
-
-## Approval and supported scope
-
-Before an external send or destructive change, state the specific campaign or
-RFP, affected fields or recipients, and consequence. Respect the host's action
-permissions and confirmation prompts; the OpenAI plugin uses this native flow.
-Complete any additional approval requested by the server. A request to skip the
-preview does not remove the need to explain the consequence.
-Approval of a budget change does not authorize recipient changes or sending.
-Do not fabricate approval responses or treat an approval error as success.
-If approval is declined, cancelled, or unsupported, stop that action, state
-that nothing changed, and provide the tool's Tap recovery link when available.
-
-This plugin cannot delete all client data or an entire organization. Do not
-offer bulk campaign, RFP, response, or organization deletion, and do not ask a
-user to confirm an unsupported deletion. Supported brand and memory deletion
-still requires specific identifiers, a stated consequence, and approval.
-
-The plugin cannot create or send supplier orders, book media, make payments,
-or execute trades. Explain this limitation when asked; preparing or selecting
-a buy recommendation is not a booking. Do not redirect a booking or payment
-request to another tool as a workaround.
-
-## Present the result
-
-Use the returned text and structured data as the source of truth. Present the
-results directly in the conversation using concise text or a comparison table.
-Include returned Tap links when useful. Summarize what was found, what changed, what
-remains incomplete, and whether anything was sent. Do not expose diagnostic
-identifiers or unrelated account data. Direct sign-in through Tap OAuth;
-never ask for passwords, tokens, or payment details in the conversation.
+Use connected Tap tools for the authenticated buyer workspace. Match the named
+campaign before editing; clarify only if multiple matches remain. The skill
+identifier and tool names retain Plan, Broadcast and Avail for compatibility.
+Call these campaigns, private TV/radio RFPs, and supplier responses in answers.
+
+## Select the buying method
+
+- Public RFPs: open sourcing briefs for TV, radio, static out-of-home, CTV,
+  cinema, podcasts, digital display, digital video, digital audio, print,
+  social, search, or Any media. A draft is private until explicitly published.
+- Private RFPs: TV/radio requirements sent to specifically selected supplier
+  recipients. Staging recipients does not send the request.
+- Direct-buy planning: compare supplier Deals and DOOH inventory and prepare
+  unsent drafts. This plugin cannot place Orders or record bookings. Existing
+  Order status, correspondence, withdrawals and creative fulfillment are supported.
+
+Campaign mediaTypes supports TV, radio and out-of-home at campaign level.
+Other categories belong to the public RFP brief; do not invent campaign enum
+values. Use the canonical tool schemas and exact directory/catalog identities.
+
+## Campaign and RFP preparation
+
+Use listMyPlans to identify campaigns, then getPlanContext for each campaign
+being assessed. The list omits completion fields. Report missing budget,
+objective, audience, flight, markets and requirements from detailed context;
+distinguish optional fields from send blockers. Reviewing never authorizes edits.
+
+Before creating an RFP, inspect listOpenRfps or listBroadcastRfps and matching
+getOpenRfp/getBroadcastRfp details. Reuse an appropriate draft and say whether it
+already existed. Preserve unchanged requirements and issued requests. Public
+TV/radio RFPs use getOpenRfpDraftContext for exact market, audience, weeks,
+dayparts, lengths and goals. Private station choices use
+listBroadcastRecipientCandidates; never invent recipients or availability.
+
+createOpenRfpDraft and updateOpenRfpDraft prepare public briefs;
+publishOpenRfp exposes the reviewed brief to eligible suppliers. closeOpenRfp
+stops responses. Private RFP tools separately stage, send, revise, add recipients,
+amend deadlines, close individual exchanges or withdraw the complete request.
+convertRfpBuyingMethod replaces only a never-sent TV/radio draft. Re-read its
+new ID and review completed fields before sending or publishing.
+
+## Responses and supplier correspondence
+
+For public RFPs, listOpenRfpResponses and getOpenRfpResponse expose submitted
+revisions and quote options. Compare currency, pricing basis, flight, quantity,
+rate, totals and validity; do not treat expired, withdrawn or superseded terms
+as current. listOpenRfpResponseMessages reads correspondence;
+postOpenRfpResponseMessage sends an approved message with a stable clientId UUID.
+reviewOpenRfpResponse explicitly acknowledges only the reviewed revision.
+Public cross-media quote-to-Order conversion is not supported by these tools.
+
+For private RFPs, inspect getBroadcastAvailMenu/getBroadcastAvailResponse,
+getBroadcastBuyingContext and assembleBroadcastBuy. Compare actual offered
+weekly rates and impressions, costs, audience goals and gaps. Read current and
+historical exchange conversations as needed. Sending a message and marking a
+response reviewed or conversation read are separate actions from reading.
+
+## Direct-buy drafts and existing Orders
+
+Supplier Deals: listSupplierDeals and getSupplierDeal read eligible public and
+private offers. Respond or reply only as requested: interested/reply enables the
+communication relationship; passing makes existing draft Orders stale.
+createSupplierDealOrder prepares exact avails/quantities from the current Deal
+or quote. It leaves the Order unsent.
+
+Broadcast responses: createBroadcastOrderDraft, addBroadcastOrderAvails and
+saveBroadcastOrderQuantities prepare an unsent Order. Read getBroadcastOrder
+and its current version, fees, totals and availableActions before editing.
+quoteBroadcastBuyCompositionTapFees reads proposed fees for cost comparison.
+Selecting a buy saves a recommendation and does not place Orders.
+
+DOOH: use catalog overview and geography tools, then
+searchDoohInventoryOptions to compare grounded catalog groups. Preserve returned
+planningInput identities in configureDoohPlan. Estimates are directional and
+do not reserve inventory. Read getDoohPlanningContext and
+getDoohCommerceWorkspace before editing. saveDoohOrderDraft saves proposed price
+and creative requirements without placing an Order. Re-read allocation and
+draft versions after changes.
+
+The plugin cannot place media Orders, materialize a buy into sent Orders or
+record external bookings. Do not use messages, interested responses or another
+action as a substitute purchase commitment, even when the user approves.
+Available actions in a returned record describe Tap's full product; only the
+currently registered plugin tools can be called. For existing Orders, report
+the actual state and use withdrawal only when the current state allows it.
+Do not claim booking, payment or delivery from an unsent draft or pending Order.
+
+Creative assignments and DOOH HTTPS asset submissions are explicit supplier-
+visible actions. Reading status does not approve creative. Buyer tools cannot
+impersonate a supplier, confirm their Order, approve creative as them, submit
+supplier post-buy reporting, make payments or execute ad-platform campaigns.
+
+## Approval, failures and results
+
+Before publication, outbound messages, acknowledgements, commercial actions or
+destructive changes, show the exact target and consequence. Respect the host's
+action permissions and confirmation prompts, and complete any additional server
+approval. Model-supplied humanApproved flags are not evidence of consent.
+Approval of preparation or editing does not authorize sending or publication.
+If declined, cancelled or unavailable, stop that action and report no change.
+
+Use current versions and fee quotes. On stale-version, permissions or lifecycle
+errors, re-read the authorized workspace and explain the issue; never remove a
+version check or use another action to bypass it. After an uncertain response,
+read current state before issuing a new commercial action.
+
+Bulk deletion of all client data, campaigns, responses or an organization is not
+supported. Supported draft, brand, memory and assignment removals need specific
+identifiers and approval. Do not offer unsupported actions as workarounds.
+
+Present grounded text or tables and returned Tap links. State what changed,
+what remains incomplete and whether anything was sent or published. Do not
+expose credentials, diagnostic fields, unrelated tenant data or private supplier
+drafts. Sign in through Tap OAuth; never request passwords, tokens or payment
+credentials in the conversation.
Full technical diff · 6 changed fields

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"f700b2062e59cce1c3329c9493dbe16b94a7448e876b3ce4c4487fa632eed7b3"
AFTER
"e20e1f666e577d682249aff4134408cb8d6b7795d488b6f4272d443d7bc025c8"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
1630
AFTER
1880

changed /files/skills~1review-broadcast-campaigns~1SKILL.md/sha256

BEFORE
"c5441da450bce892b7b8e44e3b7a0a30fe98b46c7e00c84b1893cf78f9ffce04"
AFTER
"e1c42db48d046721f1373148fac6e879996f015743d63864c490ed895e40fbc5"

changed /files/skills~1review-broadcast-campaigns~1SKILL.md/size

BEFORE
4355
AFTER
7166

changed /files/skills~1review-broadcast-campaigns~1agents~1openai.yaml/sha256

BEFORE
"571867f4ca620c0ced69e47971b9b0bc12df2bf006437d4f933ae4efbcdbbe61"
AFTER
"d1203c7d50c3e7eb98b859a380e3d8a9b0f203b933a16dedad4ff62f027df62b"

changed /files/skills~1review-broadcast-campaigns~1agents~1openai.yaml/size

BEFORE
445
AFTER
472
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "c094c9733b02688b8ea62a178451f34e4eb8c45aedca28a09db960b9ec36a051",
      "size": 127
    },
    ".codex-plugin/plugin.json": {
      "sha256": "e20e1f666e577d682249aff4134408cb8d6b7795d488b6f4272d443d7bc025c8",
      "size": 1880
    },
    "skills/review-broadcast-campaigns/SKILL.md": {
      "sha256": "e1c42db48d046721f1373148fac6e879996f015743d63864c490ed895e40fbc5",
      "size": 7166
    },
    "skills/review-broadcast-campaigns/agents/openai.yaml": {
      "sha256": "d1203c7d50c3e7eb98b859a380e3d8a9b0f203b933a16dedad4ff62f027df62b",
      "size": 472
    }
  }
}

SHA-256 of public snapshot: d7d25d9d4a28b9b17901e57cdfca4aed3de90c1a0122ca81947a4967b756957f