This quickstart creates a GPS-gated place video mission. Use it when an agent or developer wants the safest path from mission idea to funded draft. The launch CLI is recommended because it validates the mission locally, calls Katch preview, creates the draft with an idempotency key, and returns the exact funding transaction in one JSON response. Install the Katch mission CLI:
npm install -g katch-mission-sdk
Do not install the katch package from npm. It is unrelated to this mission platform.

1. Create mission JSON

{
  "missionType": "place_video",
  "title": "Film a cappuccino at Ritual Coffee",
  "description": "Capture a short video showing the cafe counter, drink, and shop atmosphere.",
  "mediaType": "video",
  "reward": { "token": "KATCH", "amount": 1000 },
  "targetCount": 1,
  "verification": {
    "accept": [
      "Video is recorded inside or directly outside Ritual Coffee Roasters",
      "Video clearly shows a coffee drink and recognizable cafe context",
      "Submission appears recent and original"
    ],
    "reject": [
      "Stock footage, screenshots, or reused social posts",
      "No visible coffee shop context",
      "Private customer information is readable"
    ]
  },
  "location": {
    "placeLabel": "Ritual Coffee Roasters",
    "visibility": {
      "center": { "lat": 37.7765, "lng": -122.4241 },
      "radiusMeters": 15000
    },
    "submission": {
      "center": { "lat": 37.7765, "lng": -122.4241 },
      "radiusMeters": 120
    }
  }
}
Save it as mission.json. External missions must use KATCH or USDC for reward.token. The API rejects any other reward token before funding calldata is returned.

2. Launch the draft

katch mission launch --mission ./mission.json
The response includes normalized public copy, local validation, the created draft, and fundingTransaction, which is the exact on-chain transaction request the creator wallet must broadcast. Do not fund or publish anything from hand-written assumptions. The launch response is the product contract. The funding quote includes a short-lived Katch authorization. If funding.authorization.expired is true, or the CLI warns that expiry is close, rerun katch mission launch before creating a treasury proposal or sending the transaction. The funding flow is:
  1. Make sure the creator wallet has enough KATCH or USDC.
  2. If token allowance is too low, approve the returned factory address to spend the required budget.
  3. Broadcast fundingTransaction / funding.sendExactly from the creator wallet.
  4. Wait for the transaction to be mined.
  5. Run katch mission confirm <draftId>.
The CLI does not currently auto-broadcast transactions. This is deliberate: creators may use EOAs, smart accounts, treasuries, or proposal systems, and all of them should send the same returned transaction.

3. Confirm funding

After the funding transaction confirms:
katch mission confirm draft_mabc1234_deadbeef
Katch verifies that the on-chain mission matches the draft.

4. Check status

katch mission doctor draft_mabc1234_deadbeef
Doctor tells the agent whether the mission is blocked, waiting for review, published, rejected, or ready for deliverables.

Intent-based shortcut

Agents can draft mission JSON from intent first:
katch mission launch \
  --intent "Film a cappuccino at Ritual Coffee in San Francisco" \
  --mission-type place_video \
  --place-label "Ritual Coffee Roasters" \
  --lat 37.7765 \
  --lng -122.4241
For GPS-gated missions, provide --lat and --lng. Katch v1 does not geocode or invent coordinates.