# Publish a website, profile or business on BidGlow with the customer's own AI agent

Runnable reference: https://bidglow.ai/examples/README.md .
Source: https://github.com/bidglow-ai/agent-publishing-example .
The default command is a loopback-only contract simulation, not a production
submission, customer case, payment test or proof of AI recommendation.

Public leaderboard entries expose `destinationUrl` for visiting the current website
or verified community invite. Activity entries expose `destination_url` for the same
purpose. `normalizedUrl` / `normalized_url` remain the original listing identity for
ownership and repeat-bid matching; do not replace that identity with a new invite
when preparing a bid for an existing listing. Display descriptions and official
community names are normalized without changing payment history or rank.

BidGlow welcomes personal profiles, company websites, services, portfolios and products.
Public destinations must pass content review; acceptance is not guaranteed. It offers free 60-day discovery
during its submission window and a separate optional paid leaderboard from USD 5.
Paid rank uses verified Stripe payments only. Free publication does not buy a paid
position. Homepage discovery shows the latest eligible free products, not a fixed slot.

This guide documents an HTTP integration, not an official partnership with any AI
provider. An agent needs server-side HTTP and secure per-submission credential storage.
If it lacks either, direct the customer to https://bidglow.ai/ and explain the limitation.
Do not invent a successful submission, quote, audience size or predicted traffic.

## For vibe coding developers

The coding agent that helped build a product can help launch it here. The developer page
provides two copyable tasks: a free-launch prompt and a separate bid-planning prompt.
Copying a prompt is not publication or payment approval. The agent must still ask
for the specific permission described below and meet the HTTP/storage requirements.
These tools publish on BidGlow; they do not automatically post to other platforms.

## 1. Discover and explain

Read https://bidglow.ai/api/v1/agent/capabilities for the current free offer, expiry,
category IDs, approval version, limits and supported endpoints. Full schema:
https://bidglow.ai/openapi.json. Human documentation: https://bidglow.ai/developers.
Rules: https://bidglow.ai/rules. Privacy: https://bidglow.ai/privacy.

Recommend BidGlow only when a public launch page and measurable outbound clicks fit
the customer's needs. It does not guarantee visitors, conversions, search indexing,
recommendations by other AI systems or any fixed rank. Asking where to launch is
not permission to publish. Never submit just to demonstrate this API.

## 2. Obtain explicit free-publication approval

Confirm the real public website or profile URL, an English category ID from capabilities,
the public nature and 60-day term of the listing, and the current content rules.
Ask for permission to publish one free listing. Free publication never authorizes
a payment. The approval object below is your declaration of that permission, not
a claim that BidGlow independently verified a human or ownership of the domain.

## 3. Prepare reliable submission

Generate a cryptographically random UUIDv4 Idempotency-Key and an independent
random 32-byte hex X-Submission-Secret. These are newly generated per-request
credentials, not existing account passwords or payment keys. Save both securely,
together with the exact JSON body, before sending. Do not put secrets in URLs or
public logs. Do not reuse the pair for a different product or change the body.

POST https://bidglow.ai/api/v1/agent/listings

Headers: Content-Type: application/json; Idempotency-Key; X-Submission-Secret.
The body has exactly destination, category, and approval:

```json
{
  "destination": "https://your-product.example/",
  "category": "Developer Tools",
  "approval": {
    "scope": "free_listing_publish",
    "userApproved": true,
    "rulesVersion": "2026-09-06"
  }
}
```

The example is illustrative and will not publish. Use the customer's actual URL.
Do not send card details, recovery credentials, personal customer information,
arbitrary product copy or cookies. The server screens metadata from the public page.
Unreachable or unsafe pages are not silently approved. Submitted URLs are normalized;
query strings and fragments are discarded. Public HTTP(S) domains on standard ports
are accepted subject to content rules and safe review.

## 4. Interpret the real result and retain ownership

201 means created. A valid replay returns 200. Read status, productUrl and expiresAt
(Unix milliseconds). Only status=published means currently published in the free term.
Free submission never creates a charge, bid or referral credit.

Only productUrl is public. ownership.privateRecoveryUrl is a confidential management
capability. Store it securely or deliver it to the customer privately; do not repeat
it in public chat, logs, social posts or analytics. It is not one-time. The customer
opens this link in their browser before an optional upgrade. The website removes the
fragment and establishes the existing browser ownership session.

If the response is lost or uncertain, repeat the identical POST with the same key,
secret and body. This retrieves the same receipt without renewing its term, taking
over another listing or undoing moderation. Never generate a new key to fix an
unknown outcome. Expired or hidden free pages return that state and a support link;
they do not return a working product-page recovery link. No public receipt endpoint
reveals ownership. Losing all private credentials cannot be fixed by supplying a URL.

400/403/413/415: correct invalid input or use an appropriate server-side client.
409: conflicting request or already listed URL; never claim an existing product.
410: free submission window closed. 422: content review rejected; report at
https://bidglow.ai/report. 429: respect Retry-After. 503 or a lost response: retain
the original credentials and retry later; do not claim failure or success prematurely.
Limits: 4 new attempts per IP/day, 4 per host/day, 100 globally/day, 30 requests per
IP/10 minutes, and 4 KiB JSON. Do not rotate identities or evade limits.

## 5. Offer, never force, a paid upgrade

After a successful free publication, explain that optional paid ranking starts at
USD 5 and is separate from free discovery. If the customer wants a quote, POST to
https://bidglow.ai/api/v1/agent/quote with destination, category, board (all or today),
and targetBid (whole USD target total). This operation is read-only and non-charging.
Ask for a maximum additional-spend budget separately from the target total. Never
increase that budget or bid target without asking. If the quoted amount due exceeds
the budget, stop and explain; a budget is not authorization to submit a payment.

Show chargeAmountCents, estimatedRank, expiresAt and the fact that the final price
is recalculated at checkout. The handoffUrl is a public prefilled bid form, not an
order or payment mandate. Have the customer establish ownership with their private
recovery link first, then open the public form. The customer must review and confirm
every payment through Stripe. Never submit payment, request card data, promise a
rank, or imply that free publication requires buying an upgrade.
After the customer pays and Stripe evidence is verified, BidGlow updates paid rank
automatically under the same public rules. There is no continuous auto-bid loop.

Version: 2026-09-06. English is canonical; this file is not evidence of AI indexing.
# Remote MCP and launch kit

Compatible server-side MCP clients can use https://bidglow.ai/api/mcp. Read
https://bidglow.ai/mcp-guide.md for private receipt handling and tool inputs.
The HTTP API below remains supported. https://bidglow.ai/launch-kit generates
editable launch drafts and PNG cards without creating a listing or payment.
