The onboarding site and nexus-service are disconnected. A vendor can register and configure its marketplace in the onboarding site, but there's no path from there to a live, negotiable marketplace. The two subsystems don't talk to each other.
A marketplace is a vendor's product line — the set of products and pricing tiers it offers for negotiation. The marketplace ID, not the vendor ID, is the key identifier because a single vendor can operate multiple marketplaces. For example, an energy company might have one marketplace for residential electricity plans and another for business gas contracts, each with its own products, tiers, and eligibility conditions. The marketplace is the unit that gets embedded on a vendor's website and that a buyer agent negotiates against.
nexus-service exposes an endpoint that returns a complete skill document (markdown) for a given marketplace.
Flow:
- Request hits
https://nexus.moojo.id/skills/<marketplace-id> - nexus-service queries the Firebase DB used by the onboarding site — reads vendor name, products, pricing tiers, trust specs for that marketplace ID
- Renders and returns a skill document (same shape as the existing
claw-marketplace-skill.md) - Response is
text/markdown
The skill is generated on the fly from the onboarding site's data. When a vendor updates its catalog, the next fetch reflects the change — no deployment needed. nexus-service may cache generated skills with a reasonable TTL to avoid hitting Firebase on every request.
- The onboarding site writes to its Firebase DB
- nexus-service reads from that same Firebase DB
- No API calls between the two systems — Firebase is the shared state
The primer is the thing on the vendor's page that tells an agent "you can negotiate by reading this skill: <url>." Once a vendor finishes setup, the onboarding site shows a primer snippet to embed in the vendor's website. It has two parts:
A <meta> tag for headless agents and agents that inspect raw HTML:
<meta
name="haggl-skill"
content="AI agents can negotiate a personalized deal — read https://nexus.moojo.id/skills/<marketplace-id> for instructions."
/>A visible element for browser-based agents:
<p>AI agents can negotiate a personalized deal — read
<a href="https://nexus.moojo.id/skills/<marketplace-id>">https://nexus.moojo.id/skills/<marketplace-id></a>
for instructions.</p>The onboarding site constructs the primer on its own — it knows the marketplace ID and the base URL. No nexus-service involvement in snippet generation.
The existing POST /marketplace and GET /meta endpoints are unchanged. The /skills endpoint is additive — it's the piece that connects the two subsystems.