trustsource 0.2.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/.vscode/settings.json +9 -0
- package/LICENSE +21 -0
- package/Procfile +1 -0
- package/README.md +142 -0
- package/mcp-server/.env.example +7 -0
- package/mcp-server/README.md +116 -0
- package/mcp-server/package-lock.json +1815 -0
- package/mcp-server/package.json +58 -0
- package/mcp-server/smithery.yaml +45 -0
- package/mcp-server/src/index.ts +171 -0
- package/mcp-server/tsconfig.json +19 -0
- package/package.json +35 -0
- package/public/index.html +954 -0
- package/railway.json +11 -0
- package/skills/trustsource-domain/skill.md +182 -0
- package/src/openapi.ts +660 -0
- package/src/routes/headers.ts +448 -0
- package/src/routes/robots.ts +455 -0
- package/src/routes/sslcheck.ts +408 -0
- package/src/routes/trustscore.ts +268 -0
- package/src/server.ts +318 -0
- package/src/types/whois-json.d.ts +4 -0
- package/tsconfig.json +13 -0
|
@@ -0,0 +1,954 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>TrustSource — Verification Intelligence for AI Agents</title>
|
|
7
|
+
<meta name="description" content="Four x402-powered APIs for autonomous AI agents: domain trust scoring, SSL certificate intelligence, HTTP security header audit, and robots.txt + AI bot policy detection. No API keys. Pay per query." />
|
|
8
|
+
<meta property="og:title" content="TrustSource — Verification Intelligence for AI Agents" />
|
|
9
|
+
<meta property="og:description" content="Four x402-powered verification APIs. Pay per query via USDC. No API keys." />
|
|
10
|
+
<meta property="og:url" content="https://trustsource.cc" />
|
|
11
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
12
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
13
|
+
<link href="https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Syne:wght@700;800&display=swap" rel="stylesheet" />
|
|
14
|
+
<style>
|
|
15
|
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
16
|
+
|
|
17
|
+
:root {
|
|
18
|
+
--bg: #080808;
|
|
19
|
+
--bg2: #0f0f0f;
|
|
20
|
+
--border: #1e1e1e;
|
|
21
|
+
--text: #f0f0f0;
|
|
22
|
+
--muted: #555;
|
|
23
|
+
--dim: #2a2a2a;
|
|
24
|
+
--accent: #00e5a0;
|
|
25
|
+
--accent2: #0066ff;
|
|
26
|
+
--mono: 'DM Mono', monospace;
|
|
27
|
+
--display: 'Syne', sans-serif;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
html { scroll-behavior: smooth; }
|
|
31
|
+
|
|
32
|
+
body {
|
|
33
|
+
background: var(--bg);
|
|
34
|
+
color: var(--text);
|
|
35
|
+
font-family: var(--mono);
|
|
36
|
+
min-height: 100vh;
|
|
37
|
+
overflow-x: hidden;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* ── Grid overlay ── */
|
|
41
|
+
body::before {
|
|
42
|
+
content: '';
|
|
43
|
+
position: fixed;
|
|
44
|
+
inset: 0;
|
|
45
|
+
background-image:
|
|
46
|
+
linear-gradient(var(--border) 1px, transparent 1px),
|
|
47
|
+
linear-gradient(90deg, var(--border) 1px, transparent 1px);
|
|
48
|
+
background-size: 64px 64px;
|
|
49
|
+
opacity: 0.35;
|
|
50
|
+
pointer-events: none;
|
|
51
|
+
z-index: 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* ── Nav ── */
|
|
55
|
+
nav {
|
|
56
|
+
position: fixed;
|
|
57
|
+
top: 0; left: 0; right: 0;
|
|
58
|
+
z-index: 100;
|
|
59
|
+
display: flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
justify-content: space-between;
|
|
62
|
+
padding: 20px 40px;
|
|
63
|
+
background: rgba(8,8,8,0.85);
|
|
64
|
+
backdrop-filter: blur(12px);
|
|
65
|
+
border-bottom: 1px solid var(--border);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.nav-logo {
|
|
69
|
+
font-family: var(--display);
|
|
70
|
+
font-weight: 800;
|
|
71
|
+
font-size: 1.1rem;
|
|
72
|
+
letter-spacing: -0.02em;
|
|
73
|
+
color: var(--text);
|
|
74
|
+
text-decoration: none;
|
|
75
|
+
}
|
|
76
|
+
.nav-logo span { color: var(--accent); }
|
|
77
|
+
|
|
78
|
+
.nav-links { display: flex; gap: 32px; list-style: none; }
|
|
79
|
+
.nav-links a {
|
|
80
|
+
color: var(--muted);
|
|
81
|
+
text-decoration: none;
|
|
82
|
+
font-size: 0.78rem;
|
|
83
|
+
letter-spacing: 0.08em;
|
|
84
|
+
text-transform: uppercase;
|
|
85
|
+
transition: color 0.2s;
|
|
86
|
+
}
|
|
87
|
+
.nav-links a:hover { color: var(--text); }
|
|
88
|
+
|
|
89
|
+
/* ── Hero ── */
|
|
90
|
+
.hero {
|
|
91
|
+
position: relative;
|
|
92
|
+
z-index: 1;
|
|
93
|
+
min-height: 100vh;
|
|
94
|
+
display: flex;
|
|
95
|
+
flex-direction: column;
|
|
96
|
+
justify-content: center;
|
|
97
|
+
padding: 120px 40px 80px;
|
|
98
|
+
max-width: 1100px;
|
|
99
|
+
margin: 0 auto;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.hero-tag {
|
|
103
|
+
display: inline-flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
gap: 8px;
|
|
106
|
+
font-size: 0.72rem;
|
|
107
|
+
letter-spacing: 0.12em;
|
|
108
|
+
text-transform: uppercase;
|
|
109
|
+
color: var(--accent);
|
|
110
|
+
margin-bottom: 32px;
|
|
111
|
+
opacity: 0;
|
|
112
|
+
animation: fadeUp 0.6s 0.1s forwards;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.hero-tag::before {
|
|
116
|
+
content: '';
|
|
117
|
+
display: block;
|
|
118
|
+
width: 6px; height: 6px;
|
|
119
|
+
background: var(--accent);
|
|
120
|
+
border-radius: 50%;
|
|
121
|
+
animation: pulse 2s infinite;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@keyframes pulse {
|
|
125
|
+
0%, 100% { opacity: 1; transform: scale(1); }
|
|
126
|
+
50% { opacity: 0.5; transform: scale(1.4); }
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.hero h1 {
|
|
130
|
+
font-family: var(--display);
|
|
131
|
+
font-weight: 800;
|
|
132
|
+
font-size: clamp(3rem, 8vw, 7rem);
|
|
133
|
+
line-height: 0.95;
|
|
134
|
+
letter-spacing: -0.04em;
|
|
135
|
+
margin-bottom: 32px;
|
|
136
|
+
opacity: 0;
|
|
137
|
+
animation: fadeUp 0.6s 0.2s forwards;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.hero h1 em {
|
|
141
|
+
font-style: normal;
|
|
142
|
+
color: transparent;
|
|
143
|
+
-webkit-text-stroke: 1px var(--accent);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.hero-sub {
|
|
147
|
+
font-size: clamp(0.95rem, 2vw, 1.15rem);
|
|
148
|
+
color: var(--muted);
|
|
149
|
+
max-width: 580px;
|
|
150
|
+
line-height: 1.7;
|
|
151
|
+
margin-bottom: 52px;
|
|
152
|
+
opacity: 0;
|
|
153
|
+
animation: fadeUp 0.6s 0.3s forwards;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.hero-actions {
|
|
157
|
+
display: flex;
|
|
158
|
+
align-items: center;
|
|
159
|
+
gap: 20px;
|
|
160
|
+
flex-wrap: wrap;
|
|
161
|
+
opacity: 0;
|
|
162
|
+
animation: fadeUp 0.6s 0.4s forwards;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.btn-primary {
|
|
166
|
+
display: inline-flex;
|
|
167
|
+
align-items: center;
|
|
168
|
+
gap: 10px;
|
|
169
|
+
padding: 14px 28px;
|
|
170
|
+
background: var(--accent);
|
|
171
|
+
color: #000;
|
|
172
|
+
font-family: var(--mono);
|
|
173
|
+
font-weight: 500;
|
|
174
|
+
font-size: 0.85rem;
|
|
175
|
+
letter-spacing: 0.04em;
|
|
176
|
+
text-decoration: none;
|
|
177
|
+
border: none;
|
|
178
|
+
cursor: pointer;
|
|
179
|
+
transition: transform 0.15s, background 0.15s;
|
|
180
|
+
clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px));
|
|
181
|
+
}
|
|
182
|
+
.btn-primary:hover { background: #00ffb3; transform: translateY(-2px); }
|
|
183
|
+
|
|
184
|
+
.btn-secondary {
|
|
185
|
+
display: inline-flex;
|
|
186
|
+
align-items: center;
|
|
187
|
+
gap: 8px;
|
|
188
|
+
padding: 14px 24px;
|
|
189
|
+
background: transparent;
|
|
190
|
+
color: var(--muted);
|
|
191
|
+
font-family: var(--mono);
|
|
192
|
+
font-size: 0.82rem;
|
|
193
|
+
letter-spacing: 0.04em;
|
|
194
|
+
text-decoration: none;
|
|
195
|
+
border: 1px solid var(--border);
|
|
196
|
+
transition: color 0.2s, border-color 0.2s;
|
|
197
|
+
}
|
|
198
|
+
.btn-secondary:hover { color: var(--text); border-color: var(--muted); }
|
|
199
|
+
|
|
200
|
+
@keyframes fadeUp {
|
|
201
|
+
from { opacity: 0; transform: translateY(16px); }
|
|
202
|
+
to { opacity: 1; transform: translateY(0); }
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/* ── Stats bar ── */
|
|
206
|
+
.stats {
|
|
207
|
+
position: relative;
|
|
208
|
+
z-index: 1;
|
|
209
|
+
border-top: 1px solid var(--border);
|
|
210
|
+
border-bottom: 1px solid var(--border);
|
|
211
|
+
display: grid;
|
|
212
|
+
grid-template-columns: repeat(4, 1fr);
|
|
213
|
+
max-width: 1100px;
|
|
214
|
+
margin: 0 auto;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.stat {
|
|
218
|
+
padding: 36px 32px;
|
|
219
|
+
border-right: 1px solid var(--border);
|
|
220
|
+
}
|
|
221
|
+
.stat:last-child { border-right: none; }
|
|
222
|
+
|
|
223
|
+
.stat-value {
|
|
224
|
+
font-family: var(--display);
|
|
225
|
+
font-size: 2.2rem;
|
|
226
|
+
font-weight: 800;
|
|
227
|
+
letter-spacing: -0.04em;
|
|
228
|
+
color: var(--text);
|
|
229
|
+
margin-bottom: 4px;
|
|
230
|
+
}
|
|
231
|
+
.stat-value span { color: var(--accent); }
|
|
232
|
+
.stat-label {
|
|
233
|
+
font-size: 0.68rem;
|
|
234
|
+
color: var(--muted);
|
|
235
|
+
letter-spacing: 0.08em;
|
|
236
|
+
text-transform: uppercase;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* ── Section headers ── */
|
|
240
|
+
.section {
|
|
241
|
+
position: relative;
|
|
242
|
+
z-index: 1;
|
|
243
|
+
max-width: 1100px;
|
|
244
|
+
margin: 0 auto;
|
|
245
|
+
padding: 96px 40px;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.section-label {
|
|
249
|
+
font-size: 0.7rem;
|
|
250
|
+
letter-spacing: 0.14em;
|
|
251
|
+
text-transform: uppercase;
|
|
252
|
+
color: var(--accent);
|
|
253
|
+
margin-bottom: 32px;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.section-title {
|
|
257
|
+
font-family: var(--display);
|
|
258
|
+
font-size: clamp(1.8rem, 4vw, 3rem);
|
|
259
|
+
font-weight: 800;
|
|
260
|
+
letter-spacing: -0.04em;
|
|
261
|
+
line-height: 1.05;
|
|
262
|
+
margin-bottom: 16px;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.section-intro {
|
|
266
|
+
color: var(--muted);
|
|
267
|
+
font-size: 0.92rem;
|
|
268
|
+
line-height: 1.7;
|
|
269
|
+
max-width: 620px;
|
|
270
|
+
margin-bottom: 48px;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/* ── API overview cards ── */
|
|
274
|
+
.api-cards {
|
|
275
|
+
display: grid;
|
|
276
|
+
grid-template-columns: repeat(2, 1fr);
|
|
277
|
+
gap: 1px;
|
|
278
|
+
background: var(--border);
|
|
279
|
+
border: 1px solid var(--border);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.api-card {
|
|
283
|
+
background: var(--bg);
|
|
284
|
+
padding: 36px;
|
|
285
|
+
transition: background 0.2s;
|
|
286
|
+
text-decoration: none;
|
|
287
|
+
color: inherit;
|
|
288
|
+
display: flex;
|
|
289
|
+
flex-direction: column;
|
|
290
|
+
justify-content: space-between;
|
|
291
|
+
min-height: 220px;
|
|
292
|
+
}
|
|
293
|
+
.api-card:hover { background: var(--bg2); }
|
|
294
|
+
|
|
295
|
+
.api-card-header {
|
|
296
|
+
display: flex;
|
|
297
|
+
align-items: baseline;
|
|
298
|
+
justify-content: space-between;
|
|
299
|
+
margin-bottom: 16px;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.api-card-route {
|
|
303
|
+
font-family: var(--mono);
|
|
304
|
+
font-size: 0.95rem;
|
|
305
|
+
color: var(--accent);
|
|
306
|
+
letter-spacing: -0.01em;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.api-card-price {
|
|
310
|
+
font-size: 0.7rem;
|
|
311
|
+
color: var(--muted);
|
|
312
|
+
letter-spacing: 0.06em;
|
|
313
|
+
font-family: var(--mono);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.api-card-title {
|
|
317
|
+
font-family: var(--display);
|
|
318
|
+
font-size: 1.5rem;
|
|
319
|
+
font-weight: 700;
|
|
320
|
+
letter-spacing: -0.02em;
|
|
321
|
+
margin-bottom: 12px;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.api-card-desc {
|
|
325
|
+
font-size: 0.82rem;
|
|
326
|
+
color: var(--muted);
|
|
327
|
+
line-height: 1.65;
|
|
328
|
+
margin-bottom: 20px;
|
|
329
|
+
flex-grow: 1;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.api-card-link {
|
|
333
|
+
font-size: 0.7rem;
|
|
334
|
+
letter-spacing: 0.08em;
|
|
335
|
+
text-transform: uppercase;
|
|
336
|
+
color: var(--accent);
|
|
337
|
+
display: inline-flex;
|
|
338
|
+
align-items: center;
|
|
339
|
+
gap: 6px;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/* ── Per-API detail sections ── */
|
|
343
|
+
.api-section {
|
|
344
|
+
position: relative;
|
|
345
|
+
z-index: 1;
|
|
346
|
+
border-top: 1px solid var(--border);
|
|
347
|
+
padding: 96px 40px;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.api-section-inner {
|
|
351
|
+
max-width: 1100px;
|
|
352
|
+
margin: 0 auto;
|
|
353
|
+
display: grid;
|
|
354
|
+
grid-template-columns: 1fr 1fr;
|
|
355
|
+
gap: 80px;
|
|
356
|
+
align-items: start;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.api-section-text { padding-top: 8px; }
|
|
360
|
+
|
|
361
|
+
.api-section-route {
|
|
362
|
+
font-family: var(--mono);
|
|
363
|
+
font-size: 0.78rem;
|
|
364
|
+
color: var(--accent);
|
|
365
|
+
margin-bottom: 14px;
|
|
366
|
+
letter-spacing: 0.02em;
|
|
367
|
+
word-break: break-all;
|
|
368
|
+
line-height: 1.5;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.api-section-title {
|
|
372
|
+
font-family: var(--display);
|
|
373
|
+
font-size: clamp(1.6rem, 3vw, 2.4rem);
|
|
374
|
+
font-weight: 800;
|
|
375
|
+
letter-spacing: -0.04em;
|
|
376
|
+
line-height: 1.05;
|
|
377
|
+
margin-bottom: 16px;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.api-section-desc {
|
|
381
|
+
font-size: 0.88rem;
|
|
382
|
+
color: var(--muted);
|
|
383
|
+
line-height: 1.75;
|
|
384
|
+
margin-bottom: 32px;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.signal-list {
|
|
388
|
+
display: flex;
|
|
389
|
+
flex-direction: column;
|
|
390
|
+
gap: 14px;
|
|
391
|
+
margin-bottom: 32px;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.signal-row {
|
|
395
|
+
display: flex;
|
|
396
|
+
align-items: baseline;
|
|
397
|
+
justify-content: space-between;
|
|
398
|
+
padding: 12px 0;
|
|
399
|
+
border-bottom: 1px solid var(--border);
|
|
400
|
+
font-size: 0.82rem;
|
|
401
|
+
}
|
|
402
|
+
.signal-row:last-child { border-bottom: none; }
|
|
403
|
+
|
|
404
|
+
.signal-name { color: var(--text); }
|
|
405
|
+
.signal-pts { color: var(--accent); font-size: 0.72rem; letter-spacing: 0.06em; }
|
|
406
|
+
|
|
407
|
+
.tier-list {
|
|
408
|
+
display: flex;
|
|
409
|
+
flex-direction: column;
|
|
410
|
+
gap: 8px;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.tier-row {
|
|
414
|
+
display: flex;
|
|
415
|
+
align-items: center;
|
|
416
|
+
gap: 12px;
|
|
417
|
+
font-size: 0.78rem;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.tier-badge {
|
|
421
|
+
font-family: var(--mono);
|
|
422
|
+
font-size: 0.62rem;
|
|
423
|
+
font-weight: 500;
|
|
424
|
+
padding: 3px 8px;
|
|
425
|
+
letter-spacing: 0.08em;
|
|
426
|
+
min-width: 110px;
|
|
427
|
+
text-align: center;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.tier-trusted, .tier-valid, .tier-open, .tier-a-plus { background: rgba(0,229,160,0.15); color: #00e5a0; border: 1px solid rgba(0,229,160,0.3); }
|
|
431
|
+
.tier-moderate, .tier-weak, .tier-selective, .tier-a { background: rgba(255,200,0,0.1); color: #ffc800; border: 1px solid rgba(255,200,0,0.2); }
|
|
432
|
+
.tier-caution, .tier-expiring, .tier-blocked-ai, .tier-b { background: rgba(255,120,0,0.1); color: #ff7800; border: 1px solid rgba(255,120,0,0.2); }
|
|
433
|
+
.tier-high-risk, .tier-expired, .tier-untrusted, .tier-invalid, .tier-blocked-all, .tier-f { background: rgba(255,60,60,0.1); color: #ff3c3c; border: 1px solid rgba(255,60,60,0.2); }
|
|
434
|
+
|
|
435
|
+
.tier-range { color: var(--muted); font-size: 0.72rem; }
|
|
436
|
+
|
|
437
|
+
/* ── Code block ── */
|
|
438
|
+
.code-block {
|
|
439
|
+
background: var(--bg2);
|
|
440
|
+
border: 1px solid var(--border);
|
|
441
|
+
padding: 24px;
|
|
442
|
+
font-family: var(--mono);
|
|
443
|
+
font-size: 0.72rem;
|
|
444
|
+
line-height: 1.7;
|
|
445
|
+
overflow-x: auto;
|
|
446
|
+
position: relative;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.code-block::before {
|
|
450
|
+
content: 'RESPONSE';
|
|
451
|
+
position: absolute;
|
|
452
|
+
top: 12px; right: 16px;
|
|
453
|
+
font-size: 0.58rem;
|
|
454
|
+
letter-spacing: 0.12em;
|
|
455
|
+
color: var(--muted);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
.c-key { color: #888; }
|
|
459
|
+
.c-str { color: #a8d8a8; }
|
|
460
|
+
.c-num { color: var(--accent); }
|
|
461
|
+
.c-tier { color: #ffd580; }
|
|
462
|
+
.c-meta { color: #7eb8f7; }
|
|
463
|
+
|
|
464
|
+
/* ── Pricing ── */
|
|
465
|
+
.pricing-section {
|
|
466
|
+
position: relative;
|
|
467
|
+
z-index: 1;
|
|
468
|
+
border-top: 1px solid var(--border);
|
|
469
|
+
max-width: 1100px;
|
|
470
|
+
margin: 0 auto;
|
|
471
|
+
padding: 96px 40px;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
.pricing-card {
|
|
475
|
+
border: 1px solid var(--border);
|
|
476
|
+
display: grid;
|
|
477
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.pricing-item {
|
|
481
|
+
padding: 40px;
|
|
482
|
+
border-right: 1px solid var(--border);
|
|
483
|
+
}
|
|
484
|
+
.pricing-item:last-child { border-right: none; }
|
|
485
|
+
|
|
486
|
+
.pricing-item-label {
|
|
487
|
+
font-size: 0.68rem;
|
|
488
|
+
letter-spacing: 0.12em;
|
|
489
|
+
text-transform: uppercase;
|
|
490
|
+
color: var(--muted);
|
|
491
|
+
margin-bottom: 12px;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.pricing-item-value {
|
|
495
|
+
font-family: var(--display);
|
|
496
|
+
font-size: 1.8rem;
|
|
497
|
+
font-weight: 800;
|
|
498
|
+
letter-spacing: -0.03em;
|
|
499
|
+
}
|
|
500
|
+
.pricing-item-value span {
|
|
501
|
+
font-size: 0.8rem;
|
|
502
|
+
color: var(--muted);
|
|
503
|
+
font-weight: 400;
|
|
504
|
+
letter-spacing: 0;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/* ── CTA ── */
|
|
508
|
+
.cta-section {
|
|
509
|
+
position: relative;
|
|
510
|
+
z-index: 1;
|
|
511
|
+
border-top: 1px solid var(--border);
|
|
512
|
+
max-width: 1100px;
|
|
513
|
+
margin: 0 auto;
|
|
514
|
+
padding: 96px 40px;
|
|
515
|
+
text-align: center;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.cta-section h2 {
|
|
519
|
+
font-family: var(--display);
|
|
520
|
+
font-size: clamp(2rem, 5vw, 4rem);
|
|
521
|
+
font-weight: 800;
|
|
522
|
+
letter-spacing: -0.04em;
|
|
523
|
+
line-height: 1.05;
|
|
524
|
+
margin-bottom: 16px;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.cta-section p {
|
|
528
|
+
color: var(--muted);
|
|
529
|
+
font-size: 0.85rem;
|
|
530
|
+
margin-bottom: 48px;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
.cta-actions {
|
|
534
|
+
display: flex;
|
|
535
|
+
justify-content: center;
|
|
536
|
+
align-items: center;
|
|
537
|
+
gap: 20px;
|
|
538
|
+
flex-wrap: wrap;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/* ── Footer ── */
|
|
542
|
+
footer {
|
|
543
|
+
position: relative;
|
|
544
|
+
z-index: 1;
|
|
545
|
+
border-top: 1px solid var(--border);
|
|
546
|
+
max-width: 1100px;
|
|
547
|
+
margin: 0 auto;
|
|
548
|
+
padding: 32px 40px;
|
|
549
|
+
display: flex;
|
|
550
|
+
justify-content: space-between;
|
|
551
|
+
align-items: center;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
.footer-logo {
|
|
555
|
+
font-family: var(--display);
|
|
556
|
+
font-size: 0.9rem;
|
|
557
|
+
font-weight: 800;
|
|
558
|
+
letter-spacing: -0.02em;
|
|
559
|
+
color: var(--muted);
|
|
560
|
+
text-decoration: none;
|
|
561
|
+
}
|
|
562
|
+
.footer-logo span { color: var(--accent); }
|
|
563
|
+
|
|
564
|
+
.footer-links { display: flex; gap: 24px; list-style: none; }
|
|
565
|
+
.footer-links a {
|
|
566
|
+
color: var(--muted);
|
|
567
|
+
text-decoration: none;
|
|
568
|
+
font-size: 0.75rem;
|
|
569
|
+
letter-spacing: 0.06em;
|
|
570
|
+
transition: color 0.2s;
|
|
571
|
+
}
|
|
572
|
+
.footer-links a:hover { color: var(--text); }
|
|
573
|
+
|
|
574
|
+
@media (max-width: 768px) {
|
|
575
|
+
nav { padding: 16px 20px; }
|
|
576
|
+
.nav-links { display: none; }
|
|
577
|
+
.hero { padding: 100px 20px 60px; }
|
|
578
|
+
.stats { grid-template-columns: repeat(2, 1fr); }
|
|
579
|
+
.stat { border-right: 1px solid var(--border); }
|
|
580
|
+
.stat:nth-child(2n) { border-right: none; }
|
|
581
|
+
.stat:nth-child(1), .stat:nth-child(2) { border-bottom: 1px solid var(--border); }
|
|
582
|
+
.api-cards { grid-template-columns: 1fr; }
|
|
583
|
+
.api-section-inner { grid-template-columns: 1fr; gap: 40px; }
|
|
584
|
+
.api-section, .section { padding: 60px 20px; }
|
|
585
|
+
.pricing-card { grid-template-columns: 1fr; }
|
|
586
|
+
.pricing-item { border-right: none; border-bottom: 1px solid var(--border); }
|
|
587
|
+
.pricing-section, .cta-section { padding: 60px 20px; }
|
|
588
|
+
footer { flex-direction: column; gap: 20px; padding: 24px 20px; }
|
|
589
|
+
}
|
|
590
|
+
</style>
|
|
591
|
+
</head>
|
|
592
|
+
<body>
|
|
593
|
+
|
|
594
|
+
<nav>
|
|
595
|
+
<a href="/" class="nav-logo">Trust<span>Source</span></a>
|
|
596
|
+
<ul class="nav-links">
|
|
597
|
+
<li><a href="#apis">APIs</a></li>
|
|
598
|
+
<li><a href="#trustscore">TrustScore</a></li>
|
|
599
|
+
<li><a href="#sslcheck">SslCheck</a></li>
|
|
600
|
+
<li><a href="#headers">Headers</a></li>
|
|
601
|
+
<li><a href="#robots">Robots</a></li>
|
|
602
|
+
<li><a href="https://api.trustsource.cc/openapi.json" target="_blank">Spec</a></li>
|
|
603
|
+
</ul>
|
|
604
|
+
</nav>
|
|
605
|
+
|
|
606
|
+
<!-- ── Hero ── -->
|
|
607
|
+
<section class="hero">
|
|
608
|
+
<div class="hero-tag">x402 · Base Mainnet · 4 endpoints live</div>
|
|
609
|
+
<h1>Verification<br/>intelligence<br/>for <em>agents.</em></h1>
|
|
610
|
+
<p class="hero-sub">
|
|
611
|
+
Four x402-powered APIs at <code style="color:var(--accent); background:var(--bg2); padding:2px 6px; font-size:0.85em;">api.trustsource.cc</code>
|
|
612
|
+
that autonomous AI agents use before they transact.
|
|
613
|
+
Domain trust scoring. SSL certificate intelligence. HTTP security header audits.
|
|
614
|
+
Robots.txt and AI bot policy detection.
|
|
615
|
+
No API keys. Pay per query in USDC.
|
|
616
|
+
</p>
|
|
617
|
+
<div class="hero-actions">
|
|
618
|
+
<a href="https://agentic.market" target="_blank" class="btn-primary">
|
|
619
|
+
View on Agentic.Market
|
|
620
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none">
|
|
621
|
+
<path d="M3 11L11 3M11 3H5M11 3V9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
622
|
+
</svg>
|
|
623
|
+
</a>
|
|
624
|
+
<a href="#apis" class="btn-secondary">Explore APIs</a>
|
|
625
|
+
<a href="https://api.trustsource.cc/openapi.json" target="_blank" class="btn-secondary">OpenAPI Spec</a>
|
|
626
|
+
</div>
|
|
627
|
+
</section>
|
|
628
|
+
|
|
629
|
+
<!-- ── Stats ── -->
|
|
630
|
+
<div class="stats">
|
|
631
|
+
<div class="stat">
|
|
632
|
+
<div class="stat-value"><span>4</span></div>
|
|
633
|
+
<div class="stat-label">Live APIs</div>
|
|
634
|
+
</div>
|
|
635
|
+
<div class="stat">
|
|
636
|
+
<div class="stat-value">$0.002<span>–.003</span></div>
|
|
637
|
+
<div class="stat-label">USDC per query</div>
|
|
638
|
+
</div>
|
|
639
|
+
<div class="stat">
|
|
640
|
+
<div class="stat-value">0<span>ms</span></div>
|
|
641
|
+
<div class="stat-label">API key setup</div>
|
|
642
|
+
</div>
|
|
643
|
+
<div class="stat">
|
|
644
|
+
<div class="stat-value">1<span>–12h</span></div>
|
|
645
|
+
<div class="stat-label">Result cache</div>
|
|
646
|
+
</div>
|
|
647
|
+
</div>
|
|
648
|
+
|
|
649
|
+
<!-- ── API overview cards ── -->
|
|
650
|
+
<section class="section" id="apis">
|
|
651
|
+
<div class="section-label">// Four endpoints</div>
|
|
652
|
+
<h2 class="section-title">Verify anything<br/>before you transact.</h2>
|
|
653
|
+
<p class="section-intro">
|
|
654
|
+
Each endpoint solves one specific verification need. They share a wallet, share an OpenAPI spec, and stack naturally — your agent can chain them together to get a complete picture of any target.
|
|
655
|
+
</p>
|
|
656
|
+
<div class="api-cards">
|
|
657
|
+
<a href="#trustscore" class="api-card">
|
|
658
|
+
<div>
|
|
659
|
+
<div class="api-card-header">
|
|
660
|
+
<span class="api-card-route">GET /trustscore</span>
|
|
661
|
+
<span class="api-card-price">$0.003 USDC</span>
|
|
662
|
+
</div>
|
|
663
|
+
<div class="api-card-title">TrustScore</div>
|
|
664
|
+
<div class="api-card-desc">
|
|
665
|
+
Domain trust scoring via WHOIS age, TLD risk, DNS presence, registrar reputation. Returns 0–100 score with TRUSTED/MODERATE/CAUTION/HIGH_RISK tier.
|
|
666
|
+
</div>
|
|
667
|
+
</div>
|
|
668
|
+
<span class="api-card-link">Learn more →</span>
|
|
669
|
+
</a>
|
|
670
|
+
|
|
671
|
+
<a href="#sslcheck" class="api-card">
|
|
672
|
+
<div>
|
|
673
|
+
<div class="api-card-header">
|
|
674
|
+
<span class="api-card-route">GET /sslcheck</span>
|
|
675
|
+
<span class="api-card-price">$0.002 USDC</span>
|
|
676
|
+
</div>
|
|
677
|
+
<div class="api-card-title">SslCheck</div>
|
|
678
|
+
<div class="api-card-desc">
|
|
679
|
+
Live TLS handshake analysis — certificate chain, expiry, trusted CA detection, signature strength, TLS 1.2/1.3 protocol check. Returns 0–100 score plus warnings.
|
|
680
|
+
</div>
|
|
681
|
+
</div>
|
|
682
|
+
<span class="api-card-link">Learn more →</span>
|
|
683
|
+
</a>
|
|
684
|
+
|
|
685
|
+
<a href="#headers" class="api-card">
|
|
686
|
+
<div>
|
|
687
|
+
<div class="api-card-header">
|
|
688
|
+
<span class="api-card-route">GET /headers</span>
|
|
689
|
+
<span class="api-card-price">$0.003 USDC</span>
|
|
690
|
+
</div>
|
|
691
|
+
<div class="api-card-title">Headers</div>
|
|
692
|
+
<div class="api-card-desc">
|
|
693
|
+
HTTP security header audit — HSTS, CSP, X-Frame-Options, Referrer-Policy, COOP, server disclosure. Returns A+ to F letter grade with structured analysis.
|
|
694
|
+
</div>
|
|
695
|
+
</div>
|
|
696
|
+
<span class="api-card-link">Learn more →</span>
|
|
697
|
+
</a>
|
|
698
|
+
|
|
699
|
+
<a href="#robots" class="api-card">
|
|
700
|
+
<div>
|
|
701
|
+
<div class="api-card-header">
|
|
702
|
+
<span class="api-card-route">GET /robots</span>
|
|
703
|
+
<span class="api-card-price">$0.002 USDC</span>
|
|
704
|
+
</div>
|
|
705
|
+
<div class="api-card-title">Robots</div>
|
|
706
|
+
<div class="api-card-desc">
|
|
707
|
+
robots.txt parsing plus AI bot policy detection across 24 known crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, and more). Sitemap discovery included.
|
|
708
|
+
</div>
|
|
709
|
+
</div>
|
|
710
|
+
<span class="api-card-link">Learn more →</span>
|
|
711
|
+
</a>
|
|
712
|
+
</div>
|
|
713
|
+
</section>
|
|
714
|
+
|
|
715
|
+
<!-- ── TrustScore detail ── -->
|
|
716
|
+
<section class="api-section" id="trustscore">
|
|
717
|
+
<div class="api-section-inner">
|
|
718
|
+
<div class="api-section-text">
|
|
719
|
+
<div class="api-section-route">GET https://api.trustsource.cc/trustscore?domain=example.com</div>
|
|
720
|
+
<h2 class="api-section-title">TrustScore</h2>
|
|
721
|
+
<p class="api-section-desc">
|
|
722
|
+
Domain trust scoring built on four signals: WHOIS registration age, TLD risk category, DNS resolution and mail records, and registrar reputation. Returns structured JSON your agent can act on directly.
|
|
723
|
+
</p>
|
|
724
|
+
|
|
725
|
+
<div class="signal-list">
|
|
726
|
+
<div class="signal-row"><span class="signal-name">Domain age (WHOIS)</span><span class="signal-pts">0 – 30 pts</span></div>
|
|
727
|
+
<div class="signal-row"><span class="signal-name">TLD risk classification</span><span class="signal-pts">0 – 20 pts</span></div>
|
|
728
|
+
<div class="signal-row"><span class="signal-name">DNS presence (A + MX)</span><span class="signal-pts">0 – 30 pts</span></div>
|
|
729
|
+
<div class="signal-row"><span class="signal-name">Registrar reputation</span><span class="signal-pts">10 – 20 pts</span></div>
|
|
730
|
+
</div>
|
|
731
|
+
|
|
732
|
+
<div class="tier-list">
|
|
733
|
+
<div class="tier-row"><span class="tier-badge tier-trusted">TRUSTED</span><span class="tier-range">75 – 100</span></div>
|
|
734
|
+
<div class="tier-row"><span class="tier-badge tier-moderate">MODERATE</span><span class="tier-range">50 – 74</span></div>
|
|
735
|
+
<div class="tier-row"><span class="tier-badge tier-caution">CAUTION</span><span class="tier-range">25 – 49</span></div>
|
|
736
|
+
<div class="tier-row"><span class="tier-badge tier-high-risk">HIGH_RISK</span><span class="tier-range">0 – 24</span></div>
|
|
737
|
+
</div>
|
|
738
|
+
</div>
|
|
739
|
+
<div class="code-block">
|
|
740
|
+
<span class="c-key">{</span>
|
|
741
|
+
<span class="c-key">"domain":</span> <span class="c-str">"google.com"</span><span class="c-key">,</span>
|
|
742
|
+
<span class="c-key">"score":</span> <span class="c-num">90</span><span class="c-key">,</span>
|
|
743
|
+
<span class="c-key">"tier":</span> <span class="c-tier">"TRUSTED"</span><span class="c-key">,</span>
|
|
744
|
+
<span class="c-key">"breakdown":</span> <span class="c-key">{</span>
|
|
745
|
+
<span class="c-key">"domainAge":</span> <span class="c-num">30</span><span class="c-key">,</span>
|
|
746
|
+
<span class="c-key">"tld":</span> <span class="c-num">20</span><span class="c-key">,</span>
|
|
747
|
+
<span class="c-key">"dnsPresence":</span> <span class="c-num">30</span><span class="c-key">,</span>
|
|
748
|
+
<span class="c-key">"registrar":</span> <span class="c-num">10</span>
|
|
749
|
+
<span class="c-key">},</span>
|
|
750
|
+
<span class="c-key">"details":</span> <span class="c-key">{</span>
|
|
751
|
+
<span class="c-key">"age":</span> <span class="c-key">{</span> <span class="c-key">"days":</span> <span class="c-num">10477</span><span class="c-key">,</span> <span class="c-key">"label":</span> <span class="c-str">"established"</span> <span class="c-key">},</span>
|
|
752
|
+
<span class="c-key">"tld":</span> <span class="c-str">".com"</span><span class="c-key">,</span>
|
|
753
|
+
<span class="c-key">"dns":</span> <span class="c-key">{</span> <span class="c-key">"hasARecord":</span> <span class="c-num">true</span><span class="c-key">,</span> <span class="c-key">"hasMxRecord":</span> <span class="c-num">true</span> <span class="c-key">},</span>
|
|
754
|
+
<span class="c-key">"registrar":</span> <span class="c-str">"markmonitor"</span>
|
|
755
|
+
<span class="c-key">}</span>
|
|
756
|
+
<span class="c-key">}</span>
|
|
757
|
+
</div>
|
|
758
|
+
</div>
|
|
759
|
+
</section>
|
|
760
|
+
|
|
761
|
+
<!-- ── SslCheck detail ── -->
|
|
762
|
+
<section class="api-section" id="sslcheck">
|
|
763
|
+
<div class="api-section-inner">
|
|
764
|
+
<div class="api-section-text">
|
|
765
|
+
<div class="api-section-route">GET https://api.trustsource.cc/sslcheck?domain=example.com</div>
|
|
766
|
+
<h2 class="api-section-title">SslCheck</h2>
|
|
767
|
+
<p class="api-section-desc">
|
|
768
|
+
Live TLS handshake analysis. Walks the full certificate chain, detects trusted root CAs (Let's Encrypt, DigiCert, Cloudflare, GlobalSign, MarkMonitor, and more), validates expiry, scores crypto strength from the cipher suite, and grades modernity by TLS version.
|
|
769
|
+
</p>
|
|
770
|
+
|
|
771
|
+
<div class="signal-list">
|
|
772
|
+
<div class="signal-row"><span class="signal-name">Chain validity</span><span class="signal-pts">0 – 30 pts</span></div>
|
|
773
|
+
<div class="signal-row"><span class="signal-name">Trusted CA</span><span class="signal-pts">0 – 25 pts</span></div>
|
|
774
|
+
<div class="signal-row"><span class="signal-name">Not expired</span><span class="signal-pts">0 – 25 pts</span></div>
|
|
775
|
+
<div class="signal-row"><span class="signal-name">Strong crypto</span><span class="signal-pts">0 – 10 pts</span></div>
|
|
776
|
+
<div class="signal-row"><span class="signal-name">Modern TLS (1.2 / 1.3)</span><span class="signal-pts">0 – 10 pts</span></div>
|
|
777
|
+
</div>
|
|
778
|
+
|
|
779
|
+
<div class="tier-list">
|
|
780
|
+
<div class="tier-row"><span class="tier-badge tier-valid">VALID</span><span class="tier-range">75 – 100</span></div>
|
|
781
|
+
<div class="tier-row"><span class="tier-badge tier-weak">WEAK</span><span class="tier-range">below 70</span></div>
|
|
782
|
+
<div class="tier-row"><span class="tier-badge tier-expiring">EXPIRING</span><span class="tier-range">< 7 days left</span></div>
|
|
783
|
+
<div class="tier-row"><span class="tier-badge tier-untrusted">UNTRUSTED</span><span class="tier-range">self-signed</span></div>
|
|
784
|
+
<div class="tier-row"><span class="tier-badge tier-invalid">INVALID</span><span class="tier-range">chain failure</span></div>
|
|
785
|
+
<div class="tier-row"><span class="tier-badge tier-expired">EXPIRED</span><span class="tier-range">past validTo</span></div>
|
|
786
|
+
</div>
|
|
787
|
+
</div>
|
|
788
|
+
<div class="code-block">
|
|
789
|
+
<span class="c-key">{</span>
|
|
790
|
+
<span class="c-key">"domain":</span> <span class="c-str">"google.com"</span><span class="c-key">,</span>
|
|
791
|
+
<span class="c-key">"score":</span> <span class="c-num">100</span><span class="c-key">,</span>
|
|
792
|
+
<span class="c-key">"tier":</span> <span class="c-tier">"VALID"</span><span class="c-key">,</span>
|
|
793
|
+
<span class="c-key">"breakdown":</span> <span class="c-key">{</span>
|
|
794
|
+
<span class="c-key">"chainValid":</span> <span class="c-num">30</span><span class="c-key">,</span>
|
|
795
|
+
<span class="c-key">"trustedCa":</span> <span class="c-num">25</span><span class="c-key">,</span>
|
|
796
|
+
<span class="c-key">"notExpired":</span> <span class="c-num">25</span><span class="c-key">,</span>
|
|
797
|
+
<span class="c-key">"strongCrypto":</span> <span class="c-num">10</span><span class="c-key">,</span>
|
|
798
|
+
<span class="c-key">"modernTls":</span> <span class="c-num">10</span>
|
|
799
|
+
<span class="c-key">},</span>
|
|
800
|
+
<span class="c-key">"certificate":</span> <span class="c-key">{</span>
|
|
801
|
+
<span class="c-key">"issuer":</span> <span class="c-str">"Google Trust Services"</span><span class="c-key">,</span>
|
|
802
|
+
<span class="c-key">"daysRemaining":</span> <span class="c-num">66</span><span class="c-key">,</span>
|
|
803
|
+
<span class="c-key">"isSelfSigned":</span> <span class="c-num">false</span>
|
|
804
|
+
<span class="c-key">},</span>
|
|
805
|
+
<span class="c-key">"connection":</span> <span class="c-key">{</span> <span class="c-key">"protocol":</span> <span class="c-meta">"TLSv1.3"</span> <span class="c-key">}</span>
|
|
806
|
+
<span class="c-key">}</span>
|
|
807
|
+
</div>
|
|
808
|
+
</div>
|
|
809
|
+
</section>
|
|
810
|
+
|
|
811
|
+
<!-- ── Headers detail ── -->
|
|
812
|
+
<section class="api-section" id="headers">
|
|
813
|
+
<div class="api-section-inner">
|
|
814
|
+
<div class="api-section-text">
|
|
815
|
+
<div class="api-section-route">GET https://api.trustsource.cc/headers?url=https://example.com</div>
|
|
816
|
+
<h2 class="api-section-title">Headers</h2>
|
|
817
|
+
<p class="api-section-desc">
|
|
818
|
+
HTTP security header analyzer. Fetches the target URL, parses response headers, and grades the site's security posture across eight dimensions. Returns a letter grade (A+ to F) plus a 0–100 score and per-header analysis with specific warnings.
|
|
819
|
+
</p>
|
|
820
|
+
|
|
821
|
+
<div class="signal-list">
|
|
822
|
+
<div class="signal-row"><span class="signal-name">HSTS (Strict-Transport-Security)</span><span class="signal-pts">0 – 20 pts</span></div>
|
|
823
|
+
<div class="signal-row"><span class="signal-name">Content Security Policy</span><span class="signal-pts">0 – 20 pts</span></div>
|
|
824
|
+
<div class="signal-row"><span class="signal-name">X-Frame-Options</span><span class="signal-pts">0 – 10 pts</span></div>
|
|
825
|
+
<div class="signal-row"><span class="signal-name">X-Content-Type-Options</span><span class="signal-pts">0 – 10 pts</span></div>
|
|
826
|
+
<div class="signal-row"><span class="signal-name">Referrer-Policy</span><span class="signal-pts">0 – 10 pts</span></div>
|
|
827
|
+
<div class="signal-row"><span class="signal-name">Permissions-Policy</span><span class="signal-pts">0 – 10 pts</span></div>
|
|
828
|
+
<div class="signal-row"><span class="signal-name">Cross-Origin-Opener-Policy</span><span class="signal-pts">0 – 10 pts</span></div>
|
|
829
|
+
<div class="signal-row"><span class="signal-name">Server header disclosure</span><span class="signal-pts">0 – 10 pts</span></div>
|
|
830
|
+
</div>
|
|
831
|
+
|
|
832
|
+
<div class="tier-list">
|
|
833
|
+
<div class="tier-row"><span class="tier-badge tier-a-plus">A+</span><span class="tier-range">90 – 100</span></div>
|
|
834
|
+
<div class="tier-row"><span class="tier-badge tier-a">A</span><span class="tier-range">80 – 89</span></div>
|
|
835
|
+
<div class="tier-row"><span class="tier-badge tier-b">B</span><span class="tier-range">70 – 79</span></div>
|
|
836
|
+
<div class="tier-row"><span class="tier-badge tier-caution">C</span><span class="tier-range">50 – 69</span></div>
|
|
837
|
+
<div class="tier-row"><span class="tier-badge tier-expiring">D</span><span class="tier-range">30 – 49</span></div>
|
|
838
|
+
<div class="tier-row"><span class="tier-badge tier-f">F</span><span class="tier-range">below 30</span></div>
|
|
839
|
+
</div>
|
|
840
|
+
</div>
|
|
841
|
+
<div class="code-block">
|
|
842
|
+
<span class="c-key">{</span>
|
|
843
|
+
<span class="c-key">"url":</span> <span class="c-str">"https://example.com"</span><span class="c-key">,</span>
|
|
844
|
+
<span class="c-key">"grade":</span> <span class="c-tier">"A"</span><span class="c-key">,</span>
|
|
845
|
+
<span class="c-key">"score":</span> <span class="c-num">82</span><span class="c-key">,</span>
|
|
846
|
+
<span class="c-key">"maxScore":</span> <span class="c-num">100</span><span class="c-key">,</span>
|
|
847
|
+
<span class="c-key">"analysis":</span> <span class="c-key">{</span>
|
|
848
|
+
<span class="c-key">"hsts":</span> <span class="c-key">{</span> <span class="c-key">"present":</span> <span class="c-num">true</span><span class="c-key">,</span> <span class="c-key">"score":</span> <span class="c-num">20</span> <span class="c-key">},</span>
|
|
849
|
+
<span class="c-key">"csp":</span> <span class="c-key">{</span> <span class="c-key">"present":</span> <span class="c-num">true</span><span class="c-key">,</span> <span class="c-key">"score":</span> <span class="c-num">18</span> <span class="c-key">},</span>
|
|
850
|
+
<span class="c-key">"xFrameOptions":</span> <span class="c-key">{</span> <span class="c-key">"present":</span> <span class="c-num">true</span><span class="c-key">,</span> <span class="c-key">"score":</span> <span class="c-num">10</span> <span class="c-key">}</span>
|
|
851
|
+
<span class="c-key">},</span>
|
|
852
|
+
<span class="c-key">"warnings":</span> <span class="c-key">[</span><span class="c-str">"missing_permissionsPolicy"</span><span class="c-key">]</span>
|
|
853
|
+
<span class="c-key">}</span>
|
|
854
|
+
</div>
|
|
855
|
+
</div>
|
|
856
|
+
</section>
|
|
857
|
+
|
|
858
|
+
<!-- ── Robots detail ── -->
|
|
859
|
+
<section class="api-section" id="robots">
|
|
860
|
+
<div class="api-section-inner">
|
|
861
|
+
<div class="api-section-text">
|
|
862
|
+
<div class="api-section-route">GET https://api.trustsource.cc/robots?domain=example.com</div>
|
|
863
|
+
<h2 class="api-section-title">Robots</h2>
|
|
864
|
+
<p class="api-section-desc">
|
|
865
|
+
robots.txt parser with structured AI bot policy analysis. Detects which of 24 known AI training crawlers — GPTBot, ClaudeBot, Google-Extended, PerplexityBot, Bytespider, CCBot, Applebot-Extended, and more — are blocked, partially restricted, or fully permitted. Sitemap URLs extracted automatically.
|
|
866
|
+
</p>
|
|
867
|
+
|
|
868
|
+
<div class="signal-list">
|
|
869
|
+
<div class="signal-row"><span class="signal-name">User-agent group parsing</span><span class="signal-pts">structured</span></div>
|
|
870
|
+
<div class="signal-row"><span class="signal-name">Allow / disallow rules</span><span class="signal-pts">per UA</span></div>
|
|
871
|
+
<div class="signal-row"><span class="signal-name">Crawl-delay extraction</span><span class="signal-pts">when set</span></div>
|
|
872
|
+
<div class="signal-row"><span class="signal-name">AI bot policy mapping</span><span class="signal-pts">24 bots</span></div>
|
|
873
|
+
<div class="signal-row"><span class="signal-name">Sitemap discovery</span><span class="signal-pts">all URLs</span></div>
|
|
874
|
+
</div>
|
|
875
|
+
|
|
876
|
+
<div class="tier-list">
|
|
877
|
+
<div class="tier-row"><span class="tier-badge tier-open">OPEN</span><span class="tier-range">no AI restrictions</span></div>
|
|
878
|
+
<div class="tier-row"><span class="tier-badge tier-selective">SELECTIVE</span><span class="tier-range">some bots restricted</span></div>
|
|
879
|
+
<div class="tier-row"><span class="tier-badge tier-blocked-ai">BLOCKED_AI</span><span class="tier-range">most AI bots blocked</span></div>
|
|
880
|
+
<div class="tier-row"><span class="tier-badge tier-blocked-all">BLOCKED_ALL</span><span class="tier-range">all crawlers blocked</span></div>
|
|
881
|
+
<div class="tier-row"><span class="tier-badge tier-valid">NO_ROBOTS_TXT</span><span class="tier-range">no file (open by default)</span></div>
|
|
882
|
+
</div>
|
|
883
|
+
</div>
|
|
884
|
+
<div class="code-block">
|
|
885
|
+
<span class="c-key">{</span>
|
|
886
|
+
<span class="c-key">"domain":</span> <span class="c-str">"example.com"</span><span class="c-key">,</span>
|
|
887
|
+
<span class="c-key">"exists":</span> <span class="c-num">true</span><span class="c-key">,</span>
|
|
888
|
+
<span class="c-key">"tier":</span> <span class="c-tier">"OPEN"</span><span class="c-key">,</span>
|
|
889
|
+
<span class="c-key">"aiFriendly":</span> <span class="c-num">true</span><span class="c-key">,</span>
|
|
890
|
+
<span class="c-key">"ai":</span> <span class="c-key">{</span>
|
|
891
|
+
<span class="c-key">"knownBotsChecked":</span> <span class="c-num">24</span><span class="c-key">,</span>
|
|
892
|
+
<span class="c-key">"knownBotsBlocked":</span> <span class="c-num">0</span><span class="c-key">,</span>
|
|
893
|
+
<span class="c-key">"knownBotsPartial":</span> <span class="c-num">0</span>
|
|
894
|
+
<span class="c-key">},</span>
|
|
895
|
+
<span class="c-key">"sitemaps":</span> <span class="c-key">[</span>
|
|
896
|
+
<span class="c-str">"https://example.com/sitemap.xml"</span>
|
|
897
|
+
<span class="c-key">],</span>
|
|
898
|
+
<span class="c-key">"summary":</span> <span class="c-key">{</span>
|
|
899
|
+
<span class="c-key">"userAgentGroups":</span> <span class="c-num">6</span><span class="c-key">,</span>
|
|
900
|
+
<span class="c-key">"sitemaps":</span> <span class="c-num">1</span>
|
|
901
|
+
<span class="c-key">}</span>
|
|
902
|
+
<span class="c-key">}</span>
|
|
903
|
+
</div>
|
|
904
|
+
</div>
|
|
905
|
+
</section>
|
|
906
|
+
|
|
907
|
+
<!-- ── Pricing ── -->
|
|
908
|
+
<section class="pricing-section">
|
|
909
|
+
<div class="section-label">// Unified pricing</div>
|
|
910
|
+
<div class="pricing-card">
|
|
911
|
+
<div class="pricing-item">
|
|
912
|
+
<div class="pricing-item-label">Per query</div>
|
|
913
|
+
<div class="pricing-item-value">$0.002 <span>– $0.003 USDC</span></div>
|
|
914
|
+
</div>
|
|
915
|
+
<div class="pricing-item">
|
|
916
|
+
<div class="pricing-item-label">Protocol</div>
|
|
917
|
+
<div class="pricing-item-value">x402 <span>/ Base Mainnet</span></div>
|
|
918
|
+
</div>
|
|
919
|
+
<div class="pricing-item">
|
|
920
|
+
<div class="pricing-item-label">API key required</div>
|
|
921
|
+
<div class="pricing-item-value" style="color: var(--accent);">None</div>
|
|
922
|
+
</div>
|
|
923
|
+
</div>
|
|
924
|
+
</section>
|
|
925
|
+
|
|
926
|
+
<!-- ── CTA ── -->
|
|
927
|
+
<section class="cta-section">
|
|
928
|
+
<h2>One wallet.<br/>Four endpoints.</h2>
|
|
929
|
+
<p>No signup. No API key. Discoverable on Agentic.Market.</p>
|
|
930
|
+
<div class="cta-actions">
|
|
931
|
+
<a href="https://agentic.market" target="_blank" class="btn-primary">
|
|
932
|
+
View on Agentic.Market
|
|
933
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none">
|
|
934
|
+
<path d="M3 11L11 3M11 3H5M11 3V9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
|
935
|
+
</svg>
|
|
936
|
+
</a>
|
|
937
|
+
<a href="https://api.trustsource.cc/openapi.json" target="_blank" class="btn-secondary">OpenAPI Spec</a>
|
|
938
|
+
<a href="mailto:hello@trustsource.cc" class="btn-secondary">hello@trustsource.cc</a>
|
|
939
|
+
</div>
|
|
940
|
+
</section>
|
|
941
|
+
|
|
942
|
+
<!-- ── Footer ── -->
|
|
943
|
+
<footer>
|
|
944
|
+
<a href="/" class="footer-logo">Trust<span>Source</span></a>
|
|
945
|
+
<ul class="footer-links">
|
|
946
|
+
<li><a href="https://api.trustsource.cc/openapi.json" target="_blank">API Spec</a></li>
|
|
947
|
+
<li><a href="https://agentic.market" target="_blank">Agentic.Market</a></li>
|
|
948
|
+
<li><a href="https://x402.org" target="_blank">x402 Protocol</a></li>
|
|
949
|
+
<li><a href="mailto:support@trustsource.cc">Contact</a></li>
|
|
950
|
+
</ul>
|
|
951
|
+
</footer>
|
|
952
|
+
|
|
953
|
+
</body>
|
|
954
|
+
</html>
|