Vendor callback simulator

flurryport:vendor-callback-simulatorintakev1first-partysha256:6906a9c5c209Needs: read/write agent token

Fake a vendor's async callback: reshape your app's captured submission into the callback shape and deliver it back to your app, no vendor involved.

Test the return leg of an async vendor integration without the vendor. Your app submits an order and hours later the vendor calls you back with a shipment notification; this recipe fakes that callback faithfully. A standing transformation reshapes the app's own captured outbound submission into the vendor's callback shape, with routing ids carried verbatim and synthetic identifiers derived from the real payload, and delivers it through the CLI bridge into the app's own vendor-facing endpoint on localhost. The whole return path runs on what your app actually sent, not a hand-written fixture that drifts from reality.

The credential never enters the model context: it lives in the FlurryPORT secret store, deliveries are signed server-side, and every send returns a receipt your agent can quote.

What this is

Every async vendor integration has a return leg you cannot schedule: your app submits an order, and hours or days later the vendor calls you back with a shipment notification. Testing that path normally means real vendor involvement, real orders, real waiting. This recipe fakes the vendor faithfully instead. A standing transformation reshapes your app's own captured outbound submission into the vendor's callback shape and delivers it straight into the app's vendor-facing endpoint on your machine. The vendor never picks up, and the order ships anyway.

Driven by what your app actually sent

The callback is synthetic, but nothing in it is invented. It is built from the submission your app really produced: the capture taken by the vendor submission tap. Routing ids come through verbatim, so your app recognizes its own order. Synthetic identifiers are derived deterministically from the real payload: a tracking number built from the PO number can be traced back to the exact submission field it came from, in an assertion, with receipts. A hand-written fixture drifts from reality the day it is written; a callback derived from a capture cannot.

The whole return path, no vendor

Submission captured, transformation applied, callback delivered through the CLI bridge into your own handler, downstream processing runs for real. In the run that seeded this recipe, an order went from created to fulfilled with a tracking number that provably originated inside the captured submission, and no vendor was involved at any point.

Honest limits

One capture produces one callback: an array result delivers as a single body, so multi-line orders get one callback carrying the first line, not one per line. The simulator belongs in dev and test configuration only; a faithful callback delivered into production processing creates real downstream effects. And the captured submission carries your app's vendor credential in its headers, so the recipe has you override the Authorization header on the target, with the credential referenced by name and resolved server-side, never pasted.

It composes

This is the third leg of one story on one endpoint. The vendor submission tap captures what your app sends and blocks real submissions while you test. The capture fixture suite turns the same captures into byte-exact regression tests. This recipe closes the loop by playing the vendor's half of the conversation. The tap alone fits the smallest plans; the simulator is the paid composition, one replay target, one transformation, one binding, all on the tap's existing endpoint.

What to expect

Deliveries land in about a second and are verified from the execution record, not by re-firing. Rehearsal captures age out with your plan's retention window; the standing pipe keeps working because live traffic keeps arriving through the tap. The security model is documented on the endpoint security page.

Install with your agent

npx flurryport mcp

Point your agent at the FlurryPORT MCP server (npx flurryport mcp) and ask it for the flurryport:vendor-callback-simulator recipe. Works from AI clients that can run a local process: desktop apps and terminal agents. Web-only chat clients cannot reach a local MCP server; open a desktop client instead.

Setup walkthrough

  1. VENDOR_CALLBACK_AUTH: This is your own app's inbound credential, not the vendor's: the value the app's vendor-facing callback endpoint expects in its Authorization header in dev. Find it where the app's dev configuration defines inbound auth for vendor callbacks (an API key setting, a bearer token in the dev env file). If the dev endpoint accepts unauthenticated callbacks, skip this secret and set a benign placeholder Authorization header on the target instead, so the captured vendor credential never re-transits.

Gotchas

Where this fits

Related recipes

flurryport:airtable-adddelivery

Let your AI add records to an Airtable table; the token stays server-side.

flurryport:azure-devops-managedelivery

Create and update Azure DevOps work items in one batched pipe: priority, state, tags, and sprint included.

flurryport:azure-devops-querydelivery

Query Azure DevOps work items with WIQL and read the matching ids back, without your AI ever holding the PAT.

flurryport:azure-devops-readdelivery

Read fields for a batch of Azure DevOps work items by id: title, state, tags, priority, iteration.

flurryport:azure-devops-workitemdelivery

Let your AI file Azure DevOps work items (bugs, tasks) the model never holds credentials for.

flurryport:capture-fixture-suiteintake

Turn captured webhooks into byte-exact test fixtures: real provider bytes, re-signed with a test secret, guarded so any reformat fails the build.