tixbit 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,7 @@ No command requires a TixBit developer API key. Public discovery and links need
8
8
 
9
9
  Run `tixbit auth` for public browser sign-in and wallet setup links. This command does not create a CLI session. Open the returned TixBit sign-in page, then complete checkout or selling in your browser. Do not copy browser cookies or bearer tokens.
10
10
 
11
- The public service currently has no supported browser-to-CLI seller session exchange. Website sign-in therefore does not unlock seller API calls from this CLI. The `buy` web checkout route does not issue Link spend requests; it expects a token from an authorized integration.
11
+ Seller-capable builds use `tixbit sell login` for browser OAuth with PKCE and explicit seller consent. The 0.3.0 release candidate includes an issued public CLI client, but 0.3.0 is not yet published, the client is not production-allowlisted, and seller account configuration is absent. Seller sign-in is not currently ready for end users. Website sign-in alone does not create a CLI session. The `buy` web checkout route does not issue Link spend requests; it expects a token from an authorized integration.
12
12
 
13
13
  For wallet setup, use [official Link onboarding](https://link.com/agents): install `@stripe/link-cli` and run `link-cli onboard`. This requires your Link account, not a developer API key. A Link spend request is a separate approval for a selected purchase. See [Link agent checkout](#link-agent-checkout).
14
14
 
@@ -19,7 +19,7 @@ For wallet setup, use [official Link onboarding](https://link.com/agents): insta
19
19
  | Browser purchase | Sign in and approve the final payment in the browser |
20
20
  | MPP `purchase` | Your mppx wallet, buyer email, confirmation, total cap, recovery UUID |
21
21
  | Automatic Link payment | User-approved payment credential from an authorized integration |
22
- | Seller API | Signed-in user credential and seller access |
22
+ | Seller CLI | Approved OAuth client, explicit seller consent and owned inventory; exact review before confirmation |
23
23
 
24
24
  ## Install
25
25
 
@@ -135,7 +135,7 @@ tixbit buy <listingId> --quantity 2 --max-price 300.00 --email buyer@example.com
135
135
  # No payment is sent; review and approve the final total in the browser.
136
136
  tixbit buy <listingId> --quantity 2 --max-price 300.00 --email buyer@example.com --confirm
137
137
 
138
- # Without a signed-in integration, returns browser sign-in and seller links.
138
+ # Requires sell login and current inventory permission.
139
139
  tixbit sell list
140
140
  ```
141
141
 
@@ -143,7 +143,7 @@ A handoff returns `success: false`, `status: "authorization_required"`, and exit
143
143
 
144
144
  ### Optional advanced integrations
145
145
 
146
- Authorized applications may supply a user-approved Link payment credential or a signed-in seller's Privy access token. Optional `TIXBIT_LINK_TOKEN` and `TIXBIT_ACCESS_TOKEN` injection is for these integrations only, not normal onboarding. Neither is a TixBit API key, and no developer or infrastructure key can replace user authorization. Never pass credentials in arguments, log them, or extract them from browser storage. Seller integrations use `tixbit sell create --confirm < listing.json`.
146
+ Authorized applications may supply a user-approved Link payment credential or use the legacy SDK seller methods with a signed-in seller's Privy access token. Optional `TIXBIT_LINK_TOKEN` and `TIXBIT_ACCESS_TOKEN` injection is for these integrations only, not normal onboarding. Neither is a TixBit API key. Never pass credentials in arguments, log them, or extract them from browser storage. The seller CLI uses reviewed OAuth flows below and does not consume `TIXBIT_ACCESS_TOKEN`.
147
147
 
148
148
  `--max-price` is the total USD charge ceiling including ticket fees, not a per-ticket price or a bid. Link checkout sends `maxAmountCents` in both POST requests and refuses payment unless the quote advertises `maxAmountCentsSupported: true`. Payment requires a public checkout deployment that advertises and enforces the total cap. The backend rechecks its actual charge before payment. Link currently accepts only 4-12 alphanumeric listing IDs. Native `sl_UUID` listings are not supported by this payment backend; use link-only `checkout` for browser completion instead.
149
149
 
@@ -155,7 +155,79 @@ Seller JSON uses the existing web API schema. Example after seller approval:
155
155
  {"externalEventId":"AbCd12","section":"GA","quantity":2,"generalAdmission":true,"priceCents":10000,"termsAccepted":true}
156
156
  ```
157
157
 
158
- `priceCents` is the seller's per-ticket asking price, unlike the buyer's total cap. Optional fields include `row`, `seatNumbers`, `faceValueCents`, `assetPaths`, `disclosures`, and `notes`; the server validates them and enforces seller access. Creation requires both `--confirm` and `termsAccepted: true`. Submission is not a claim that the listing is live. After uncertain creation, inspect `sell list` before retrying.
158
+ `priceCents` is the seller's per-ticket asking price, unlike the buyer's total cap. The reviewed CLI accepts `row`, `seatNumbers`, `faceValueCents`, `disclosures`, `notes`, and optional `ownedImportId`; uploading assets is not part of this interface. Creation requires explicit seller terms acceptance and a separate confirmation of the prepared review. Submission is not proof a listing is live.
159
+
160
+ ### Sell your own tickets
161
+
162
+ Release prerequisites: `0.3.0` is an unpublished candidate. Its built-in public
163
+ OAuth client has been issued, but has not been approved or allowlisted in
164
+ production, and the seller account bridge is not configured. The commands below
165
+ describe the intended workflow after publication and authorized server setup;
166
+ they do not mean seller sign-in currently works.
167
+
168
+ After a seller-capable `0.3.0` or newer release is published, install it with
169
+ `npm install -g tixbit@latest` and verify `tixbit --version`. Installing today's
170
+ published release does not install this candidate. Before signing in, operators
171
+ must deploy the companion seller service, configure its account bridge and
172
+ approve the exact built-in client in the required allowlists. Then check
173
+ `sell capabilities`; `configured: true` alone does not prove this client or user
174
+ has seller access. End users will not need a developer API key or manual client
175
+ setup once those prerequisites are complete.
176
+
177
+ ```sh
178
+ tixbit sell --help
179
+ tixbit sell capabilities
180
+ tixbit sell login
181
+ # Open signInUrl, sign in, review consent, then paste full callback on stdin:
182
+ tixbit sell login --complete
183
+ tixbit sell auth-status
184
+ tixbit sell list
185
+
186
+ # Resolve the event/section before preparing seller JSON:
187
+ tixbit search "Braves" --city Atlanta --state GA --json
188
+ tixbit seatmap "$EVENT_ID" --json
189
+ tixbit sell create --file listing.json --dry-run
190
+ tixbit sell create --file listing.json --attempt "$ATTEMPT_UUID"
191
+ tixbit sell review "$REVIEW_ID"
192
+ # Only after approval of the exact preview:
193
+ tixbit sell confirm "$REVIEW_ID" --confirm
194
+ tixbit sell status "$SELLER_LISTING_ID"
195
+ ```
196
+
197
+ Generate a UUID v4 for each new intent and preserve it as `ATTEMPT_UUID`.
198
+ Preparing creates a review only. `--dry-run` performs local validation without
199
+ login or network requests. Copy `REVIEW_ID` from preparation, then review and
200
+ confirm it. Credentials and private confirmation nonces are saved in private
201
+ files under `~/.config/tixbit/seller`; never print or paste those files into chat.
202
+ The OAuth callback is `https://mcp.tixbit.com/cli/callback`, with resource
203
+ `https://mcp.tixbit.com/api/mcp`. Localhost production redirects are not used.
204
+
205
+ Operators can provision the public CLI client before account infrastructure is
206
+ enabled using the [explicit offline procedure](https://github.com/tixbit/tixbit-monorepo/blob/main/docs/runbooks/mcp-cli-provisioning.md).
207
+ The fixed-profile command uses the existing signing key, creates no access
208
+ grant, and never changes either client allowlist or production settings. Reuse
209
+ an existing approved matching client when available; provisioning is a separate
210
+ operator action from user sign-in and consent.
211
+
212
+ For repricing use `tixbit sell reprice --file reprice.json`, with
213
+ `{"listingId":"OWNED_ID","priceCents":11000}`. To remove an unsold listing,
214
+ use `tixbit sell delist --file delist.json`, with `{"listingId":"OWNED_ID"}`.
215
+ Both support `--dry-run` and `--attempt` and require the same review/confirm
216
+ sequence. `sell cancel REVIEW_ID` abandons an unexecuted review without changing
217
+ inventory. `sell logout` removes local credentials; revoke the server connection
218
+ through TixBit to invalidate its grant.
219
+
220
+ After a lost confirmation response, inspect the same review and inventory.
221
+ Completed retries replay the result; ambiguous attempts require reconciliation.
222
+ Never rotate attempt IDs or create a duplicate listing to bypass uncertainty.
223
+ Quantity/seat edits, relisting, payout setup, payments and fulfillment are not
224
+ supported. Quantity is 1–20 and USD unit price is 100–5,000,000 integer cents;
225
+ marketplace eligibility and sale-state checks still apply.
226
+
227
+ The distributable [seller skill](skills/tixbit-selling/SKILL.md) includes exact
228
+ workflows, installation and troubleshooting. Copy the complete directory into
229
+ your agent's skills directory; it is included in this candidate's package contents
230
+ and will ship with the seller-capable npm release after publication.
159
231
 
160
232
  MPP `purchase` retains the official mppx path but now requires `--confirm`, `--max-price`, and an explicit `--idempotency-key` before wallet loading. Its challenge hook checks the pathUSD atomic amount before any credential is created, rejects unknown assets/recurring intents, and permits only one payment challenge. The cap covers the ticket charge; network fees, if any, are managed separately by the wallet. SDK callers who inject their own `paymentFetch` own its authorization policy: use `assertMppChallenge` in `onChallenge` as shown below and get user approval before calling `purchaseTickets`. Do not register credential-producing event handlers that bypass this hook.
161
233
 
@@ -420,6 +492,7 @@ Returns the full URL to the event page on `www.tixbit.com`.
420
492
  | `TIXBIT_EMAIL` | Optional alternative to `buy --email` | none |
421
493
  | `TIXBIT_LINK_TOKEN` | Optional advanced integration: user-approved Link credential; never an argument | none |
422
494
  | `TIXBIT_ACCESS_TOKEN` | Optional advanced integration: signed-in seller user credential, not an API key | none |
495
+ | `TIXBIT_SELLER_CLIENT_ID` | Optional override for the built-in issued public OAuth client ID; not a secret | built-in CLI client |
423
496
  | `TIXBIT_PAYMENT_URL` | Canonical MPP endpoint or loopback QA URL; no credentials, query, fragment, or redirects | `https://mcp.tixbit.com/api/purchase` |
424
497
  | `MPPX_PRIVATE_KEY` | Optional mppx account source; prefer the OS keychain | mppx keychain |
425
498