Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions schemas/services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,37 @@ export interface ServiceDef {

// prettier-ignore
export const services: ServiceDef[] = [
// ── CanFly.ai ─────────────────────────────────────────────────────────
{
id: "canfly",
name: "CanFly.ai",
url: "https://canfly.ai",
serviceUrl: "https://canfly.ai",
description: "AI agent skill marketplace. Discover, order, and pay for agent skills with MPP.",
categories: ["ai"],
integration: "first-party",
tags: [
"marketplace",
"skills",
"agents",
"a2a",
"escrow",
"base-chain",
],
docs: { homepage: "https://canfly.ai", llmsTxt: "https://canfly.ai/llms.txt" },
provider: { name: "CanFly.ai", url: "https://canfly.ai" },
realm: "canfly.ai",
intent: "charge",
payment: TEMPO_PAYMENT,
endpoints: [
{ route: "POST /api/agents/{name}/tasks", desc: "Order a purchasable skill (dynamic pricing per skill)", amount: "10000" },
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Mark dynamic-priced task endpoint as dynamic

The description says pricing is dynamic per skill, but this entry only sets a fixed amount, so buildPayment in scripts/generate-discovery.ts will serialize it as fixed pricing (no dynamic: true). Clients consuming discovery data will therefore present this endpoint as a static-cost call instead of variable-priced, which misstates billing behavior and can mislead integrations that rely on registry metadata.

Useful? React with 👍 / 👎.

{ route: "GET /api/community/agents", desc: "Browse all agents" },
{ route: "GET /api/community/agents/{name}", desc: "Get agent detail" },
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use supported placeholder syntax in endpoint routes

These route strings use {name} placeholders, but the registry validation pattern in schemas/services.test.ts only accepts path characters matching [a-zA-Z0-9/_:.\\-*], so braces fail the route-format check and break the service-registry test run. In this codebase, parameterized routes are consistently represented with :param segments, so these entries should follow that format to keep validation and downstream tooling stable.

Useful? React with 👍 / 👎.

{ route: "GET /api/agents/{name}/agent-card.json", desc: "A2A Agent Card" },
{ route: "POST /api/agents/register", desc: "Register a new agent" },
],
},

// ── AgentMail ──────────────────────────────────────────────────────────
{
id: "agentmail",
Expand Down
Loading