Example agent.{" "}
Add your own agent{" "}
- to log, grade, and set goals.
+
+ to log, grade, and set goals. This illustrative profile has no
+ live x402 listing.
+
) : null}
diff --git a/src/lib/data/seed.ts b/src/lib/data/seed.ts
index e586dce..da9267a 100644
--- a/src/lib/data/seed.ts
+++ b/src/lib/data/seed.ts
@@ -98,7 +98,9 @@ function buildAgent(spec: SeedSpec): Agent {
name: spec.name,
slug: spec.slug,
ownerWallet: DEFAULT_OWNER,
- x402Url: `https://agents.suedeai.ai/a/${spec.slug}`,
+ // These are deterministic illustrative profiles, not published Agent
+ // Studio records. Never manufacture a Studio URL from the demo slug.
+ x402Url: "",
priceUsdc: spec.priceUsdc,
category: spec.category,
launchedAt,
diff --git a/src/lib/data/types.ts b/src/lib/data/types.ts
index 63e7333..f0585e0 100644
--- a/src/lib/data/types.ts
+++ b/src/lib/data/types.ts
@@ -21,9 +21,9 @@ export interface Agent {
id: string;
name: string;
ownerWallet: string;
- /** Public x402 listing URL on the builder (e.g. agents.suedeai.ai/a/{slug}). */
+ /** Public x402 listing URL on the builder, or empty for illustrative data. */
x402Url: string;
- /** Slug used for builder deep-links (x402 discovery doc, public page). */
+ /** Stable local slug for resolving the illustrative or operator-entered profile. */
slug: string;
priceUsdc: number;
category: string;
diff --git a/tests/public-link-integrity.test.ts b/tests/public-link-integrity.test.ts
new file mode 100644
index 0000000..6a3707f
--- /dev/null
+++ b/tests/public-link-integrity.test.ts
@@ -0,0 +1,41 @@
+import { readFile } from "node:fs/promises";
+import { describe, expect, it } from "vitest";
+import sitemap from "@/app/sitemap";
+import { publicAgentData } from "@/lib/data/seed-provider";
+import { SITE_URL } from "@/lib/site";
+
+describe("public example link integrity", () => {
+ it("suppresses unavailable Studio listings for every public example page", () => {
+ const examples = publicAgentData();
+ expect(examples).toHaveLength(18);
+ for (const { agent } of examples) {
+ expect(agent.x402Url).toBe("");
+ }
+ });
+
+ it("covers every current sitemap agent page without manufacturing an external CTA", () => {
+ const examples = publicAgentData();
+ const agentUrls = sitemap()
+ .map((entry) => entry.url)
+ .filter((url) => url.startsWith(`${SITE_URL}/agent/`));
+
+ expect(agentUrls).toEqual(
+ examples.map(
+ ({ agent }) =>
+ `${SITE_URL}/agent/${encodeURIComponent(agent.id)}`,
+ ),
+ );
+ expect(examples.every(({ agent }) => agent.x402Url === "")).toBe(true);
+ });
+
+ it("labels illustrative profiles when no live listing is attached", async () => {
+ const source = await readFile(
+ new URL("../src/components/AgentDetailApp.tsx", import.meta.url),
+ "utf8",
+ );
+ expect(source).toContain(
+ "This illustrative profile has no",
+ );
+ expect(source).toContain("live x402 listing.");
+ });
+});