@nordsym/apiclaw 1.0.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/.github/ISSUE_TEMPLATE/add-api.yml +123 -0
- package/BRIEFING.md +30 -0
- package/CONCEPT.md +494 -0
- package/README.md +272 -0
- package/backend/convex/README.md +90 -0
- package/backend/convex/_generated/api.d.ts +55 -0
- package/backend/convex/_generated/api.js +23 -0
- package/backend/convex/_generated/dataModel.d.ts +60 -0
- package/backend/convex/_generated/server.d.ts +143 -0
- package/backend/convex/_generated/server.js +93 -0
- package/backend/convex/apiKeys.ts +75 -0
- package/backend/convex/purchases.ts +74 -0
- package/backend/convex/schema.ts +45 -0
- package/backend/convex/transactions.ts +57 -0
- package/backend/convex/tsconfig.json +25 -0
- package/backend/convex/users.ts +94 -0
- package/backend/package-lock.json +521 -0
- package/backend/package.json +15 -0
- package/dist/credits.d.ts +54 -0
- package/dist/credits.d.ts.map +1 -0
- package/dist/credits.js +209 -0
- package/dist/credits.js.map +1 -0
- package/dist/discovery.d.ts +37 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +109 -0
- package/dist/discovery.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +355 -0
- package/dist/index.js.map +1 -0
- package/dist/registry/apis.json +20894 -0
- package/dist/registry/parse_apis.py +146 -0
- package/dist/revenuecat.d.ts +61 -0
- package/dist/revenuecat.d.ts.map +1 -0
- package/dist/revenuecat.js +166 -0
- package/dist/revenuecat.js.map +1 -0
- package/dist/test.d.ts +6 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +81 -0
- package/dist/test.js.map +1 -0
- package/dist/types.d.ts +96 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/webhooks/revenuecat.d.ts +48 -0
- package/dist/webhooks/revenuecat.d.ts.map +1 -0
- package/dist/webhooks/revenuecat.js +119 -0
- package/dist/webhooks/revenuecat.js.map +1 -0
- package/docs/revenuecat-setup.md +89 -0
- package/landing/next-env.d.ts +5 -0
- package/landing/next.config.mjs +6 -0
- package/landing/package-lock.json +1666 -0
- package/landing/package.json +27 -0
- package/landing/postcss.config.js +6 -0
- package/landing/src/app/api/keys/route.ts +71 -0
- package/landing/src/app/api/log/route.ts +37 -0
- package/landing/src/app/api/stats/route.ts +37 -0
- package/landing/src/app/globals.css +261 -0
- package/landing/src/app/layout.tsx +37 -0
- package/landing/src/app/page.tsx +753 -0
- package/landing/src/app/page.tsx.bak +567 -0
- package/landing/src/components/AddKeyModal.tsx +159 -0
- package/landing/tailwind.config.ts +34 -0
- package/landing/tsconfig.json +20 -0
- package/newsletter-template.html +71 -0
- package/outreach/OUTREACH-SYSTEM.md +211 -0
- package/outreach/email-template.html +179 -0
- package/outreach/targets.md +133 -0
- package/package.json +39 -0
- package/src/credits.ts +261 -0
- package/src/discovery.ts +147 -0
- package/src/index.ts +396 -0
- package/src/registry/apis.json +20894 -0
- package/src/registry/parse_apis.py +146 -0
- package/src/revenuecat.ts +239 -0
- package/src/test.ts +97 -0
- package/src/types.ts +110 -0
- package/src/webhooks/revenuecat.ts +187 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
MessageSquare, Mail, Search, Cpu, Volume2,
|
|
5
|
+
ArrowRight, Zap, Shield, Terminal, ExternalLink,
|
|
6
|
+
Github, Check, Twitter, Quote, Sparkles, Code2, Wallet
|
|
7
|
+
} from "lucide-react";
|
|
8
|
+
|
|
9
|
+
const apis = [
|
|
10
|
+
{ name: "46elks", category: "SMS", flag: "🇸🇪", color: "text-blue-400" },
|
|
11
|
+
{ name: "Resend", category: "Email", icon: Mail, color: "text-purple-400" },
|
|
12
|
+
{ name: "Brave Search", category: "Search", icon: Search, color: "text-orange-400" },
|
|
13
|
+
{ name: "OpenRouter", category: "LLM", icon: Cpu, color: "text-cyan-400" },
|
|
14
|
+
{ name: "ElevenLabs", category: "TTS", icon: Volume2, color: "text-pink-400" },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const testimonials = [
|
|
18
|
+
{
|
|
19
|
+
quote: "Finally, my agents can provision their own API access. No more manual key management.",
|
|
20
|
+
author: "AI Engineer",
|
|
21
|
+
handle: "@ai_builder",
|
|
22
|
+
avatar: "🧑💻"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
quote: "The MCP integration is seamless. Added it to Claude and my agent started discovering APIs immediately.",
|
|
26
|
+
author: "Startup Founder",
|
|
27
|
+
handle: "@founder_dev",
|
|
28
|
+
avatar: "🚀"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
quote: "Agent-native payments with USDC? This is how infrastructure should work in 2026.",
|
|
32
|
+
author: "Web3 Developer",
|
|
33
|
+
handle: "@web3_agent",
|
|
34
|
+
avatar: "⟠"
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
const features = [
|
|
39
|
+
{
|
|
40
|
+
icon: Search,
|
|
41
|
+
title: "Discovery",
|
|
42
|
+
description: "Agents query capabilities, not product names. 'I need EU SMS' returns ranked options."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
icon: Code2,
|
|
46
|
+
title: "Evaluation",
|
|
47
|
+
description: "Pricing, rate limits, regions, compliance—all in structured, agent-readable format."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
icon: Wallet,
|
|
51
|
+
title: "Purchase",
|
|
52
|
+
description: "Instant credential provisioning via USDC on Base. No signups. No dashboards."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
icon: Zap,
|
|
56
|
+
title: "Integration",
|
|
57
|
+
description: "MCP-native. Works with Claude, GPT, and any agent that speaks the protocol."
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
const steps = [
|
|
62
|
+
{
|
|
63
|
+
step: "1",
|
|
64
|
+
title: "Agent asks",
|
|
65
|
+
description: '"I need to send SMS"',
|
|
66
|
+
code: `agent.call("apiclaw", {
|
|
67
|
+
capability: "sms",
|
|
68
|
+
region: "EU"
|
|
69
|
+
})`,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
step: "2",
|
|
73
|
+
title: "APIClaw returns",
|
|
74
|
+
description: "Ranked options with pricing",
|
|
75
|
+
code: `{
|
|
76
|
+
"apis": [
|
|
77
|
+
{ "name": "46elks", "price": "$0.07" },
|
|
78
|
+
{ "name": "twilio", "price": "$0.09" }
|
|
79
|
+
]
|
|
80
|
+
}`,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
step: "3",
|
|
84
|
+
title: "Agent purchases",
|
|
85
|
+
description: "Instant credentials via USDC",
|
|
86
|
+
code: `agent.purchase({
|
|
87
|
+
api: "46elks",
|
|
88
|
+
payment: "usdc-base",
|
|
89
|
+
amount: 100
|
|
90
|
+
})`,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
step: "4",
|
|
94
|
+
title: "Done",
|
|
95
|
+
description: "API ready to use",
|
|
96
|
+
code: `{
|
|
97
|
+
"status": "active",
|
|
98
|
+
"credentials": { ... },
|
|
99
|
+
"ready": true
|
|
100
|
+
}`,
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
|
|
104
|
+
export default function Home() {
|
|
105
|
+
return (
|
|
106
|
+
<main className="min-h-screen">
|
|
107
|
+
{/* Header */}
|
|
108
|
+
<header className="fixed top-0 w-full z-50 bg-background/90 backdrop-blur-xl border-b border-border-subtle">
|
|
109
|
+
<div className="max-w-6xl mx-auto px-6 py-4 flex items-center justify-between">
|
|
110
|
+
<div className="flex items-center gap-3">
|
|
111
|
+
<div className="w-9 h-9 rounded-xl bg-accent/20 flex items-center justify-center">
|
|
112
|
+
<Zap className="w-5 h-5 text-accent" />
|
|
113
|
+
</div>
|
|
114
|
+
<span className="font-bold text-lg tracking-tight">APIClaw</span>
|
|
115
|
+
</div>
|
|
116
|
+
<nav className="hidden md:flex items-center gap-8 text-sm text-text-muted">
|
|
117
|
+
<a href="#features" className="hover:text-text-primary transition">Features</a>
|
|
118
|
+
<a href="#quick-start" className="hover:text-text-primary transition">Quick Start</a>
|
|
119
|
+
<a href="#apis" className="hover:text-text-primary transition">APIs</a>
|
|
120
|
+
<a href="#pricing" className="hover:text-text-primary transition">Pricing</a>
|
|
121
|
+
</nav>
|
|
122
|
+
<a
|
|
123
|
+
href="https://github.com/nordsym/apiclaw"
|
|
124
|
+
target="_blank"
|
|
125
|
+
rel="noopener noreferrer"
|
|
126
|
+
className="btn-secondary !py-2 !px-4 text-sm"
|
|
127
|
+
>
|
|
128
|
+
<Github className="w-4 h-4" />
|
|
129
|
+
<span>GitHub</span>
|
|
130
|
+
</a>
|
|
131
|
+
</div>
|
|
132
|
+
</header>
|
|
133
|
+
|
|
134
|
+
{/* Hero */}
|
|
135
|
+
<section className="pt-36 pb-24 px-6">
|
|
136
|
+
<div className="max-w-4xl mx-auto text-center">
|
|
137
|
+
<div className="badge mb-8">
|
|
138
|
+
<Terminal className="w-4 h-4" />
|
|
139
|
+
<span>MCP Server for Claude, GPT, and any agent</span>
|
|
140
|
+
</div>
|
|
141
|
+
|
|
142
|
+
<h1 className="text-5xl md:text-7xl font-extrabold mb-6 leading-[1.1] tracking-tighter">
|
|
143
|
+
<span className="gradient-text">APIs for Agents</span>
|
|
144
|
+
</h1>
|
|
145
|
+
|
|
146
|
+
<p className="text-xl md:text-2xl text-text-secondary mb-4 max-w-2xl mx-auto leading-relaxed">
|
|
147
|
+
Agents discover, evaluate, and purchase API access directly.
|
|
148
|
+
</p>
|
|
149
|
+
<p className="text-lg text-text-muted mb-12">
|
|
150
|
+
No dashboards. No signups. Just APIs.
|
|
151
|
+
</p>
|
|
152
|
+
|
|
153
|
+
<div className="flex flex-col sm:flex-row items-center justify-center gap-4 mb-8">
|
|
154
|
+
<a
|
|
155
|
+
href="https://github.com/nordsym/apiclaw"
|
|
156
|
+
target="_blank"
|
|
157
|
+
rel="noopener noreferrer"
|
|
158
|
+
className="btn-primary glow"
|
|
159
|
+
>
|
|
160
|
+
<Github className="w-5 h-5" />
|
|
161
|
+
View on GitHub
|
|
162
|
+
</a>
|
|
163
|
+
<button className="btn-secondary">
|
|
164
|
+
<span>Add to Claude</span>
|
|
165
|
+
<ArrowRight className="w-4 h-4" />
|
|
166
|
+
</button>
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
<p className="text-sm text-text-muted">
|
|
170
|
+
Apps are dead. API-first. Agent-native.
|
|
171
|
+
</p>
|
|
172
|
+
</div>
|
|
173
|
+
</section>
|
|
174
|
+
|
|
175
|
+
{/* Integration badges */}
|
|
176
|
+
<section className="pb-20 px-6">
|
|
177
|
+
<div className="max-w-4xl mx-auto">
|
|
178
|
+
<div className="flex flex-wrap items-center justify-center gap-3">
|
|
179
|
+
<span className="text-text-muted text-sm">Integrates with:</span>
|
|
180
|
+
{['46elks', 'Resend', 'Brave', 'OpenRouter', 'ElevenLabs'].map((name, i) => (
|
|
181
|
+
<span key={i} className="integration-badge">{name}</span>
|
|
182
|
+
))}
|
|
183
|
+
<span className="integration-badge">+ more</span>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
</section>
|
|
187
|
+
|
|
188
|
+
<div className="divider" />
|
|
189
|
+
|
|
190
|
+
{/* What People Say */}
|
|
191
|
+
<section className="py-24 px-6">
|
|
192
|
+
<div className="max-w-6xl mx-auto">
|
|
193
|
+
<div className="text-center mb-16">
|
|
194
|
+
<span className="section-label">TESTIMONIALS</span>
|
|
195
|
+
<h2 className="text-3xl md:text-4xl font-bold mt-4 tracking-tight">What People Say</h2>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
<div className="grid md:grid-cols-3 gap-6">
|
|
199
|
+
{testimonials.map((t, i) => (
|
|
200
|
+
<div key={i} className="testimonial-card rounded-2xl p-6">
|
|
201
|
+
<Quote className="w-8 h-8 text-accent/30 mb-4" />
|
|
202
|
+
<p className="text-text-secondary mb-6 leading-relaxed">"{t.quote}"</p>
|
|
203
|
+
<div className="flex items-center gap-3">
|
|
204
|
+
<div className="w-10 h-10 rounded-full bg-surface flex items-center justify-center text-xl">
|
|
205
|
+
{t.avatar}
|
|
206
|
+
</div>
|
|
207
|
+
<div>
|
|
208
|
+
<p className="font-medium text-sm">{t.author}</p>
|
|
209
|
+
<p className="text-text-muted text-sm">{t.handle}</p>
|
|
210
|
+
</div>
|
|
211
|
+
</div>
|
|
212
|
+
</div>
|
|
213
|
+
))}
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
</section>
|
|
217
|
+
|
|
218
|
+
<div className="divider" />
|
|
219
|
+
|
|
220
|
+
{/* Quick Start */}
|
|
221
|
+
<section id="quick-start" className="py-24 px-6">
|
|
222
|
+
<div className="max-w-4xl mx-auto">
|
|
223
|
+
<div className="text-center mb-16">
|
|
224
|
+
<span className="section-label">QUICK START</span>
|
|
225
|
+
<h2 className="text-3xl md:text-4xl font-bold mt-4 tracking-tight">Up and running in seconds</h2>
|
|
226
|
+
</div>
|
|
227
|
+
|
|
228
|
+
<div className="terminal glow-subtle">
|
|
229
|
+
<div className="terminal-header">
|
|
230
|
+
<div className="terminal-dot terminal-dot-red" />
|
|
231
|
+
<div className="terminal-dot terminal-dot-yellow" />
|
|
232
|
+
<div className="terminal-dot terminal-dot-green" />
|
|
233
|
+
</div>
|
|
234
|
+
<div className="terminal-body">
|
|
235
|
+
<div className="mb-4">
|
|
236
|
+
<span className="terminal-prompt">$ </span>
|
|
237
|
+
<span className="terminal-command">npx @nordsym/apiclaw init</span>
|
|
238
|
+
</div>
|
|
239
|
+
<div className="terminal-output mb-4">
|
|
240
|
+
✓ APIClaw MCP server installed<br />
|
|
241
|
+
✓ Configuration file created<br />
|
|
242
|
+
✓ Ready to connect to Claude Desktop
|
|
243
|
+
</div>
|
|
244
|
+
<div className="mb-4">
|
|
245
|
+
<span className="terminal-prompt">$ </span>
|
|
246
|
+
<span className="terminal-command">npx @nordsym/apiclaw start</span>
|
|
247
|
+
</div>
|
|
248
|
+
<div className="terminal-output">
|
|
249
|
+
🚀 APIClaw running on MCP<br />
|
|
250
|
+
📡 Listening for agent requests...<br />
|
|
251
|
+
<br />
|
|
252
|
+
<span className="text-accent">→ Add to Claude: Settings → MCP Servers → Add</span>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
|
|
257
|
+
<div className="text-center mt-8">
|
|
258
|
+
<a
|
|
259
|
+
href="https://github.com/nordsym/apiclaw#installation"
|
|
260
|
+
target="_blank"
|
|
261
|
+
rel="noopener noreferrer"
|
|
262
|
+
className="text-accent hover:underline inline-flex items-center gap-2"
|
|
263
|
+
>
|
|
264
|
+
View full documentation
|
|
265
|
+
<ExternalLink className="w-4 h-4" />
|
|
266
|
+
</a>
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
</section>
|
|
270
|
+
|
|
271
|
+
<div className="divider" />
|
|
272
|
+
|
|
273
|
+
{/* Features */}
|
|
274
|
+
<section id="features" className="py-24 px-6 bg-surface/30">
|
|
275
|
+
<div className="max-w-6xl mx-auto">
|
|
276
|
+
<div className="text-center mb-16">
|
|
277
|
+
<span className="section-label">FEATURES</span>
|
|
278
|
+
<h2 className="text-3xl md:text-4xl font-bold mt-4 tracking-tight">Built for the agentic era</h2>
|
|
279
|
+
</div>
|
|
280
|
+
|
|
281
|
+
<div className="grid sm:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
282
|
+
{features.map((f, i) => (
|
|
283
|
+
<div key={i} className="card-hover rounded-2xl bg-surface-elevated border border-border p-6">
|
|
284
|
+
<div className="w-12 h-12 rounded-xl bg-accent/10 flex items-center justify-center mb-4">
|
|
285
|
+
<f.icon className="w-6 h-6 text-accent" />
|
|
286
|
+
</div>
|
|
287
|
+
<h3 className="font-semibold text-lg mb-2">{f.title}</h3>
|
|
288
|
+
<p className="text-text-secondary text-sm leading-relaxed">{f.description}</p>
|
|
289
|
+
</div>
|
|
290
|
+
))}
|
|
291
|
+
</div>
|
|
292
|
+
</div>
|
|
293
|
+
</section>
|
|
294
|
+
|
|
295
|
+
{/* How it works */}
|
|
296
|
+
<section id="how-it-works" className="py-24 px-6">
|
|
297
|
+
<div className="max-w-6xl mx-auto">
|
|
298
|
+
<div className="text-center mb-16">
|
|
299
|
+
<span className="section-label">HOW IT WORKS</span>
|
|
300
|
+
<h2 className="text-3xl md:text-4xl font-bold mt-4 tracking-tight">Four lines of agent code</h2>
|
|
301
|
+
<p className="text-text-secondary text-lg mt-4">That's it.</p>
|
|
302
|
+
</div>
|
|
303
|
+
|
|
304
|
+
<div className="grid md:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
305
|
+
{steps.map((item, i) => (
|
|
306
|
+
<div key={i} className="card-hover rounded-2xl bg-surface-elevated border border-border p-6">
|
|
307
|
+
<div className="w-10 h-10 rounded-full bg-accent/20 text-accent font-bold flex items-center justify-center mb-4">
|
|
308
|
+
{item.step}
|
|
309
|
+
</div>
|
|
310
|
+
<h3 className="font-semibold text-lg mb-2">{item.title}</h3>
|
|
311
|
+
<p className="text-text-secondary text-sm mb-4">{item.description}</p>
|
|
312
|
+
<div className="code-block rounded-lg p-3">
|
|
313
|
+
<pre className="text-xs font-mono text-text-muted overflow-x-auto">
|
|
314
|
+
{item.code}
|
|
315
|
+
</pre>
|
|
316
|
+
</div>
|
|
317
|
+
</div>
|
|
318
|
+
))}
|
|
319
|
+
</div>
|
|
320
|
+
</div>
|
|
321
|
+
</section>
|
|
322
|
+
|
|
323
|
+
<div className="divider" />
|
|
324
|
+
|
|
325
|
+
{/* Supported APIs */}
|
|
326
|
+
<section id="apis" className="py-24 px-6 bg-surface/30">
|
|
327
|
+
<div className="max-w-6xl mx-auto">
|
|
328
|
+
<div className="text-center mb-16">
|
|
329
|
+
<span className="section-label">API CATALOG</span>
|
|
330
|
+
<h2 className="text-3xl md:text-4xl font-bold mt-4 tracking-tight">Supported APIs</h2>
|
|
331
|
+
<p className="text-text-secondary text-lg mt-4">First five. Many more coming.</p>
|
|
332
|
+
</div>
|
|
333
|
+
|
|
334
|
+
<div className="grid sm:grid-cols-2 lg:grid-cols-5 gap-4">
|
|
335
|
+
{apis.map((api, i) => (
|
|
336
|
+
<div
|
|
337
|
+
key={i}
|
|
338
|
+
className="card-hover rounded-xl bg-surface-elevated border border-border p-5 text-center"
|
|
339
|
+
>
|
|
340
|
+
<div className={`w-12 h-12 rounded-xl bg-surface flex items-center justify-center mx-auto mb-3 ${api.color}`}>
|
|
341
|
+
{api.flag ? (
|
|
342
|
+
<span className="text-2xl">{api.flag}</span>
|
|
343
|
+
) : api.icon ? (
|
|
344
|
+
<api.icon className="w-6 h-6" />
|
|
345
|
+
) : null}
|
|
346
|
+
</div>
|
|
347
|
+
<h3 className="font-semibold">{api.name}</h3>
|
|
348
|
+
<p className="text-text-muted text-sm">{api.category}</p>
|
|
349
|
+
</div>
|
|
350
|
+
))}
|
|
351
|
+
</div>
|
|
352
|
+
|
|
353
|
+
<p className="text-center text-text-muted mt-8">
|
|
354
|
+
+ Stripe, Twilio, SendGrid, Anthropic, OpenAI, and more...
|
|
355
|
+
</p>
|
|
356
|
+
</div>
|
|
357
|
+
</section>
|
|
358
|
+
|
|
359
|
+
{/* Pricing */}
|
|
360
|
+
<section id="pricing" className="py-24 px-6">
|
|
361
|
+
<div className="max-w-4xl mx-auto">
|
|
362
|
+
<div className="text-center mb-16">
|
|
363
|
+
<span className="section-label">PRICING</span>
|
|
364
|
+
<h2 className="text-3xl md:text-4xl font-bold mt-4 tracking-tight">Simple pricing</h2>
|
|
365
|
+
<p className="text-text-secondary text-lg mt-4">Pay only for what your agents use.</p>
|
|
366
|
+
</div>
|
|
367
|
+
|
|
368
|
+
<div className="grid md:grid-cols-2 gap-6">
|
|
369
|
+
{/* Free tier */}
|
|
370
|
+
<div className="rounded-2xl bg-surface-elevated border border-border p-8">
|
|
371
|
+
<h3 className="text-xl font-semibold mb-2">Free</h3>
|
|
372
|
+
<p className="text-text-secondary mb-6">For exploration and testing</p>
|
|
373
|
+
<div className="text-4xl font-bold mb-6">
|
|
374
|
+
$0<span className="text-lg text-text-muted font-normal">/mo</span>
|
|
375
|
+
</div>
|
|
376
|
+
<ul className="space-y-3 mb-8">
|
|
377
|
+
<li className="flex items-center gap-3 text-text-secondary">
|
|
378
|
+
<Check className="w-5 h-5 text-accent flex-shrink-0" />
|
|
379
|
+
API discovery
|
|
380
|
+
</li>
|
|
381
|
+
<li className="flex items-center gap-3 text-text-secondary">
|
|
382
|
+
<Check className="w-5 h-5 text-accent flex-shrink-0" />
|
|
383
|
+
5% transaction fee
|
|
384
|
+
</li>
|
|
385
|
+
<li className="flex items-center gap-3 text-text-secondary">
|
|
386
|
+
<Check className="w-5 h-5 text-accent flex-shrink-0" />
|
|
387
|
+
Community support
|
|
388
|
+
</li>
|
|
389
|
+
</ul>
|
|
390
|
+
<button className="btn-secondary w-full justify-center">
|
|
391
|
+
Get started
|
|
392
|
+
</button>
|
|
393
|
+
</div>
|
|
394
|
+
|
|
395
|
+
{/* Pro tier */}
|
|
396
|
+
<div className="rounded-2xl bg-surface-elevated border border-accent/50 p-8 relative glow">
|
|
397
|
+
<div className="absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 bg-accent text-background text-xs font-bold tracking-wide rounded-full uppercase">
|
|
398
|
+
Popular
|
|
399
|
+
</div>
|
|
400
|
+
<h3 className="text-xl font-semibold mb-2">Pro</h3>
|
|
401
|
+
<p className="text-text-secondary mb-6">For production agents</p>
|
|
402
|
+
<div className="text-4xl font-bold mb-6">
|
|
403
|
+
$99<span className="text-lg text-text-muted font-normal">/mo</span>
|
|
404
|
+
</div>
|
|
405
|
+
<ul className="space-y-3 mb-8">
|
|
406
|
+
<li className="flex items-center gap-3 text-text-secondary">
|
|
407
|
+
<Check className="w-5 h-5 text-accent flex-shrink-0" />
|
|
408
|
+
Everything in Free
|
|
409
|
+
</li>
|
|
410
|
+
<li className="flex items-center gap-3 text-text-secondary">
|
|
411
|
+
<Check className="w-5 h-5 text-accent flex-shrink-0" />
|
|
412
|
+
Only 2% transaction fee
|
|
413
|
+
</li>
|
|
414
|
+
<li className="flex items-center gap-3 text-text-secondary">
|
|
415
|
+
<Check className="w-5 h-5 text-accent flex-shrink-0" />
|
|
416
|
+
Priority support
|
|
417
|
+
</li>
|
|
418
|
+
<li className="flex items-center gap-3 text-text-secondary">
|
|
419
|
+
<Check className="w-5 h-5 text-accent flex-shrink-0" />
|
|
420
|
+
Custom API integrations
|
|
421
|
+
</li>
|
|
422
|
+
</ul>
|
|
423
|
+
<button className="btn-primary w-full justify-center">
|
|
424
|
+
Join waitlist
|
|
425
|
+
</button>
|
|
426
|
+
</div>
|
|
427
|
+
</div>
|
|
428
|
+
|
|
429
|
+
{/* USDC Badge */}
|
|
430
|
+
<div className="flex items-center justify-center gap-4 mt-12 px-6 py-4 rounded-xl bg-surface-elevated border border-border max-w-md mx-auto">
|
|
431
|
+
<div className="w-10 h-10 rounded-full bg-blue-500/20 flex items-center justify-center flex-shrink-0">
|
|
432
|
+
<span className="text-xl">⟠</span>
|
|
433
|
+
</div>
|
|
434
|
+
<div>
|
|
435
|
+
<p className="font-medium">Agents pay with USDC on Base</p>
|
|
436
|
+
<p className="text-sm text-text-muted">Coinbase Agent Wallet compatible</p>
|
|
437
|
+
</div>
|
|
438
|
+
</div>
|
|
439
|
+
</div>
|
|
440
|
+
</section>
|
|
441
|
+
|
|
442
|
+
<div className="divider" />
|
|
443
|
+
|
|
444
|
+
{/* Stay in the Loop */}
|
|
445
|
+
<section className="py-24 px-6">
|
|
446
|
+
<div className="max-w-xl mx-auto text-center">
|
|
447
|
+
<span className="section-label">NEWSLETTER</span>
|
|
448
|
+
<h2 className="text-3xl md:text-4xl font-bold mt-4 mb-4 tracking-tight">Stay in the Loop</h2>
|
|
449
|
+
<p className="text-text-secondary mb-8">
|
|
450
|
+
Get updates on new API integrations, agent features, and the future of autonomous commerce.
|
|
451
|
+
</p>
|
|
452
|
+
|
|
453
|
+
<form className="flex flex-col sm:flex-row gap-3" onSubmit={(e) => e.preventDefault()}>
|
|
454
|
+
<input
|
|
455
|
+
type="email"
|
|
456
|
+
placeholder="you@company.com"
|
|
457
|
+
className="flex-1 px-4 py-3 rounded-xl text-text-primary"
|
|
458
|
+
/>
|
|
459
|
+
<button type="submit" className="btn-primary flex-shrink-0 justify-center">
|
|
460
|
+
<Sparkles className="w-4 h-4" />
|
|
461
|
+
Subscribe
|
|
462
|
+
</button>
|
|
463
|
+
</form>
|
|
464
|
+
|
|
465
|
+
<p className="text-text-muted text-sm mt-4">
|
|
466
|
+
No spam. Unsubscribe anytime.
|
|
467
|
+
</p>
|
|
468
|
+
</div>
|
|
469
|
+
</section>
|
|
470
|
+
|
|
471
|
+
{/* CTA */}
|
|
472
|
+
<section className="py-24 px-6 bg-surface/30">
|
|
473
|
+
<div className="max-w-2xl mx-auto text-center">
|
|
474
|
+
<h2 className="text-3xl md:text-4xl font-bold mb-6 tracking-tight">Ready to go agent-native?</h2>
|
|
475
|
+
<p className="text-text-secondary text-lg mb-8">
|
|
476
|
+
Join the waitlist for early access and shape the future of agent commerce.
|
|
477
|
+
</p>
|
|
478
|
+
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
|
|
479
|
+
<a
|
|
480
|
+
href="https://github.com/nordsym/apiclaw"
|
|
481
|
+
target="_blank"
|
|
482
|
+
rel="noopener noreferrer"
|
|
483
|
+
className="btn-primary"
|
|
484
|
+
>
|
|
485
|
+
<Github className="w-5 h-5" />
|
|
486
|
+
Star on GitHub
|
|
487
|
+
</a>
|
|
488
|
+
<button className="btn-secondary">
|
|
489
|
+
Join waitlist
|
|
490
|
+
<ArrowRight className="w-4 h-4" />
|
|
491
|
+
</button>
|
|
492
|
+
</div>
|
|
493
|
+
</div>
|
|
494
|
+
</section>
|
|
495
|
+
|
|
496
|
+
{/* Footer */}
|
|
497
|
+
<footer className="border-t border-border py-16 px-6">
|
|
498
|
+
<div className="max-w-6xl mx-auto">
|
|
499
|
+
<div className="grid md:grid-cols-4 gap-12 mb-12">
|
|
500
|
+
{/* Brand */}
|
|
501
|
+
<div className="md:col-span-2">
|
|
502
|
+
<div className="flex items-center gap-3 mb-4">
|
|
503
|
+
<div className="w-9 h-9 rounded-xl bg-accent/20 flex items-center justify-center">
|
|
504
|
+
<Zap className="w-5 h-5 text-accent" />
|
|
505
|
+
</div>
|
|
506
|
+
<span className="font-bold text-lg tracking-tight">APIClaw</span>
|
|
507
|
+
</div>
|
|
508
|
+
<p className="text-text-muted mb-6 max-w-sm">
|
|
509
|
+
The API marketplace built for autonomous agents. Discover, evaluate, and purchase—all without human intervention.
|
|
510
|
+
</p>
|
|
511
|
+
<div className="flex items-center gap-4">
|
|
512
|
+
<a
|
|
513
|
+
href="https://github.com/nordsym/apiclaw"
|
|
514
|
+
target="_blank"
|
|
515
|
+
rel="noopener noreferrer"
|
|
516
|
+
className="w-10 h-10 rounded-lg bg-surface-elevated border border-border flex items-center justify-center text-text-muted hover:text-text-primary hover:border-accent/50 transition"
|
|
517
|
+
>
|
|
518
|
+
<Github className="w-5 h-5" />
|
|
519
|
+
</a>
|
|
520
|
+
<a
|
|
521
|
+
href="https://twitter.com/nordsym"
|
|
522
|
+
target="_blank"
|
|
523
|
+
rel="noopener noreferrer"
|
|
524
|
+
className="w-10 h-10 rounded-lg bg-surface-elevated border border-border flex items-center justify-center text-text-muted hover:text-text-primary hover:border-accent/50 transition"
|
|
525
|
+
>
|
|
526
|
+
<Twitter className="w-5 h-5" />
|
|
527
|
+
</a>
|
|
528
|
+
</div>
|
|
529
|
+
</div>
|
|
530
|
+
|
|
531
|
+
{/* Links */}
|
|
532
|
+
<div>
|
|
533
|
+
<h4 className="font-semibold mb-4">Product</h4>
|
|
534
|
+
<ul className="space-y-3 text-text-muted">
|
|
535
|
+
<li><a href="#features" className="hover:text-text-primary transition">Features</a></li>
|
|
536
|
+
<li><a href="#pricing" className="hover:text-text-primary transition">Pricing</a></li>
|
|
537
|
+
<li><a href="#apis" className="hover:text-text-primary transition">API Catalog</a></li>
|
|
538
|
+
<li><a href="https://github.com/nordsym/apiclaw#installation" target="_blank" rel="noopener noreferrer" className="hover:text-text-primary transition">Documentation</a></li>
|
|
539
|
+
</ul>
|
|
540
|
+
</div>
|
|
541
|
+
|
|
542
|
+
<div>
|
|
543
|
+
<h4 className="font-semibold mb-4">Company</h4>
|
|
544
|
+
<ul className="space-y-3 text-text-muted">
|
|
545
|
+
<li><a href="https://nordsym.se" target="_blank" rel="noopener noreferrer" className="hover:text-text-primary transition">NordSym</a></li>
|
|
546
|
+
<li><a href="https://github.com/nordsym" target="_blank" rel="noopener noreferrer" className="hover:text-text-primary transition">GitHub</a></li>
|
|
547
|
+
<li><a href="https://twitter.com/nordsym" target="_blank" rel="noopener noreferrer" className="hover:text-text-primary transition">Twitter</a></li>
|
|
548
|
+
</ul>
|
|
549
|
+
</div>
|
|
550
|
+
</div>
|
|
551
|
+
|
|
552
|
+
<div className="pt-8 border-t border-border flex flex-col md:flex-row items-center justify-between gap-4">
|
|
553
|
+
<p className="text-text-muted text-sm">
|
|
554
|
+
© 2026 NordSym. All rights reserved.
|
|
555
|
+
</p>
|
|
556
|
+
<div className="flex items-center gap-3">
|
|
557
|
+
<div className="badge">
|
|
558
|
+
<Shield className="w-3 h-3" />
|
|
559
|
+
MCP Compatible
|
|
560
|
+
</div>
|
|
561
|
+
</div>
|
|
562
|
+
</div>
|
|
563
|
+
</div>
|
|
564
|
+
</footer>
|
|
565
|
+
</main>
|
|
566
|
+
);
|
|
567
|
+
}
|