-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrating.html
More file actions
192 lines (167 loc) · 15.5 KB
/
Copy pathrating.html
File metadata and controls
192 lines (167 loc) · 15.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
---
layout: default
section: Discovery
title: Kin Score
summary: Kin Score is the API Evangelist rating system — a transparent, machine-readable rating that measures how complete an API is for developers and how safely it can be driven by AI agents. The rubric, the two scores, and where it runs.
nav: Discovery
sub: Ratings
permalink: /rating/
---
{%- comment -%}
Everything numeric on this page renders from site.data.scoring, mirrored from
api-search/signals/_data/scoring.yml by apievangelist-aws/scripts/mirror-rubric.py —
the same file the scorer reads. Do not hand-copy weights, points, bands, shares or
counts back into this page.
It used to be hand-written, and by 0.12.0 every number on it was wrong: "six facets
and 74 checks" against 8 facets and 110 checks; composite bands at 70/60/45/30/15
against 66.5/54.3/39.3/26.2/11; agent bands at 60/45/15 against 46/34/6; and two facets
renamed in the rubric — Governance to Contract Governance, Commercial Clarity to Access
Clarity — still under their old names. None of that errored. The page kept rendering,
and it kept being the page a provider is sent to when they want to know why they scored
what they scored.
facet_order is presentation only (weight-descending). A facet added to the rubric and
not listed here will not render — the same trap that hid `regulatory` on apis.io for
three months. The per-facet existence guard below means a REMOVED facet degrades to a
missing row rather than an empty one.
{%- endcomment -%}
{%- assign rubric = site.data.scoring -%}
{%- assign bands = rubric.bands | sort: "min" | reverse -%}
{%- assign abands = rubric.agent_readiness.bands | sort: "min" | reverse -%}
{%- assign dims = rubric.agent_readiness.dimensions | sort: "points" | reverse -%}
{%- assign facet_order = "contract_quality,developer_ergonomics,commercial_clarity,operational_transparency,governance,discoverability,regulatory,open_source" | split: "," -%}
{%- assign all_checks = 0 -%}
{%- for art_pair in rubric.artifacts -%}{%- for c in art_pair[1].checks -%}{%- assign all_checks = all_checks | plus: 1 -%}{%- endfor -%}{%- endfor -%}
<style>
.rate-band { display:inline-block; padding:0.25em 0.7em; border-radius:999px; font-size:0.72rem; font-weight:700; text-transform:uppercase; letter-spacing:0.04em; white-space:nowrap; }
.rb-exemplar{background:#d1f7e0;color:#0f5132}.rb-strong{background:#cfe2ff;color:#0a3d91}.rb-developing{background:#fff3cd;color:#664d03}.rb-thin{background:#ffe0c2;color:#7a3e07}.rb-emerging{background:#f8d7da;color:#842029}.rb-minimal{background:#e9ecef;color:#495057}
.rb-agent-native{background:#cff4e6;color:#0b6b4f}.rb-agent-ready{background:#d7ebff;color:#0a4b8c}.rb-agent-aware{background:#fff0d4;color:#7a5200}.rb-human-only{background:#eceef1;color:#5a6472}
.rate-band-row td { vertical-align:top; padding:0.6rem 0.75rem; border-bottom:1px solid #eef1f5; font-size:0.9rem; }
.rate-band-row .rr-range { font-size:0.78rem; color:#6c757d; white-space:nowrap; font-variant-numeric:tabular-nums; }
.rate-band-row .rr-share { font-size:0.75rem; color:#9aa4b5; }
.rate-facet td { vertical-align:top; padding:0.6rem 0.75rem; border-bottom:1px solid #eef1f5; font-size:0.9rem; }
.rate-facet .rf-w { text-align:right; font-weight:700; color:#0a3d91; font-variant-numeric:tabular-nums; white-space:nowrap; }
.rate-dim { display:inline-flex; align-items:center; gap:0.35rem; background:#f5f8fe; border:1px solid #e1e9f6; border-radius:999px; padding:0.2em 0.7em; font-size:0.8rem; margin:0 0.3rem 0.4rem 0; }
.rate-dim b { color:#0a3d91; font-variant-numeric:tabular-nums; }
/* Every facet and dimension name below opens its own detail page on apis.io —
what it measures, the checks that feed it, how the whole catalog distributes
on it, and the providers at the top of it. The pages live over there, not
here: the rating runs across the APIs.io catalog, so that is where the
population behind each number actually is, and a second copy of each page
on this domain would compete with it for the same query. */
.rate-facet a { color:#0a3d91; text-decoration:none; }
.rate-facet a:hover { text-decoration:underline; }
a.rate-dim { color:#2d3748; text-decoration:none; }
a.rate-dim:hover { background:#eef3fb; border-color:#c3d4ee; }
</style>
<div class="row">
<div class="col-12 col-xl-8">
<section>
<!-- Header -->
<div class="d-flex align-items-center mb-3">
<img src="https://kinlane-images.s3.amazonaws.com/shared/api-evangelist-logos/api-evangelist-kin.png" alt="Kin Score" style="height:60px;width:auto;" class="me-3 flex-shrink-0">
<h1 class="fs-3 mb-0">{{ page.title }}</h1>
</div>
<p class="lead text-muted mb-4">{{ page.summary }}</p>
<!-- Story -->
<div class="mb-2" style="max-width: 46rem;">
<p class="mb-3">I have spent my whole career forming opinions about whether an API is any good — not whether the company is valuable or the product is clever, but the narrower, more useful question of whether I can find it, understand it, trust how it behaves, and integrate it without a human beside me filling in what the documentation left out. I made that judgment thousands of times in my head before I finally wrote it down. The result is <strong>Kin Score</strong> — the API Evangelist rating system: a transparent, machine-readable rubric that scores a provider's public API surface so my sixteen years of opinions about APIs scale, travel, and can be argued with by anyone.</p>
<p class="mb-3">Every input is an artifact the provider actually publishes — an OpenAPI contract with real descriptions and error responses, a change log, documented rate limits, plans a buyer can read without a sales call. There is no panel, no vibes, and no pay-to-play tier that buys a better number. The whole rubric is out in the open, so any provider can see exactly why they scored what they scored and precisely what would move them up.</p>
</div>
<!-- Two scores -->
<h2 class="fs-5 fw-semibold mt-4 mb-2">Two scores, on purpose</h2>
<div class="mb-2" style="max-width: 46rem;">
<p class="mb-3"><strong>Composite quality</strong> is what people expect: how complete, transparent, and integration-ready an API is for a human developer — a weighted blend of six always-on facets and {{ all_checks }} individual checks, plus two conditional facets that apply only where they can mean something. Deliberately blunt, because the point is comparability, not a certificate.</p>
<p class="mb-3"><strong>Agent readiness</strong> is scored separately, because a human developer papers over an enormous amount of API friction that an autonomous agent cannot. Every implicit convention a human silently absorbs — ambiguous errors, undocumented idempotency, prose-only auth — is a place an agent retries blindly, double-charges a card, or hallucinates a payload. It lives on its own axis because a provider can be thin for humans yet ready for agents, or strong for humans yet useless to their agents.</p>
</div>
<!-- Composite bands -->
<h2 class="fs-5 fw-semibold mt-4 mb-2">Composite quality bands</h2>
<p class="text-muted mb-3" style="max-width:46rem;">A provider's composite score (0–100) maps to one of {{ bands | size }} bands, calibrated against the real distribution of the catalog rather than picked round. The share column is what each band actually holds today.</p>
<table class="table table-sm mb-4" style="max-width:46rem;">
<tbody>
{%- for b in bands %}
<tr class="rate-band-row"><td><span class="rate-band rb-{{ b.id }}">{{ b.label }}</span></td><td class="rr-range">{{ b.range }}<div class="rr-share">{{ b.share }}</div></td><td>{{ b.description | strip_newlines }}</td></tr>
{%- endfor %}
</tbody>
</table>
<div class="p-3 mb-4 rounded-3" style="max-width:46rem;background:#f8f9fb;border-left:4px solid #0a3d91;">
<p class="mb-0 small"><strong>What changed in v{{ rubric.schema_version }}.</strong> {{ rubric.release_note.body | markdownify | strip_html | strip_newlines | truncate: 620 }} <a href="https://apis.io/rating/">Read the full rubric →</a></p>
</div>
<h2 class="fs-5 fw-semibold mt-4 mb-2">The facets</h2>
<p class="text-muted mb-3" style="max-width:46rem;">The composite is a weighted blend of facets, each scored 0–100 from its own checks. The weights decide what "good" means. Six apply to every provider and sum to 100%; two are <em>conditional</em> and apply only where they can mean something — regulatory posture to providers in a regulated industry, open source to providers whose product is itself open source. <strong>Each facet name links to its own page on APIs.io</strong> — the exact checks that feed it, how the whole catalog distributes on it, and the providers scoring highest on it.</p>
<table class="table table-sm mb-4" style="max-width:46rem;">
<tbody>
{%- for fkey in facet_order %}{% assign f = rubric.facets[fkey] %}{% if f %}
<tr class="rate-facet"><td><strong><a href="https://apis.io/rating/facets/{{ fkey | replace: '_', '-' }}/">{{ f.label }}</a></strong>{% if f.conditional %} <span class="rate-band" style="background:#fdf0d5;color:#7a4b00;">conditional</span>{% endif %}</td><td>{{ f.description | strip_newlines | strip_html | truncate: 160 }}</td><td class="rf-w">{{ f.weight | times: 100 | round }}%</td></tr>
{%- endif %}{% endfor %}
</tbody>
</table>
<h2 class="fs-5 fw-semibold mt-4 mb-2">Agent readiness <span class="rate-band rb-agent-native align-middle">separate score</span></h2>
<p class="text-muted mb-3" style="max-width:46rem;">A standalone 0–100 score measuring how safely an autonomous agent can drive the API, mapped to its own {{ abands | size }} bands. A provider can be Thin for humans yet Agent-Ready, or Strong yet Human-Only.</p>
<table class="table table-sm mb-3" style="max-width:46rem;">
<tbody>
{%- for b in abands %}
<tr class="rate-band-row"><td><span class="rate-band rb-{{ b.id }}">{{ b.label }}</span></td><td class="rr-range">{{ b.range }}<div class="rr-share">{{ b.share }}</div></td><td>{{ b.description | strip_newlines }}</td></tr>
{%- endfor %}
</tbody>
</table>
<p class="text-muted small mb-2" style="max-width:46rem;">{{ dims | size }} dimensions feed the score (points each) — each one links to its page on APIs.io, with the signal it reads, the grades it awards, and how many providers publish it:</p>
<div class="mb-4" style="max-width:46rem;">
{%- for d in dims %}<a class="rate-dim" href="https://apis.io/rating/dimensions/{{ d.id | replace: '_', '-' }}/">{{ d.label }} <b>{{ d.points }}</b></a>{% endfor %}
</div>
<!-- Transparency -->
<h2 class="fs-5 fw-semibold mt-4 mb-2">Transparency is the product</h2>
<div class="mb-2" style="max-width: 46rem;">
<p class="mb-3">The rubric is versioned, all {{ all_checks }} checks are enumerated with the points they award, and the bands are calibrated against the real distribution of what is actually out there rather than picked to flatter anyone. If you disagree with a weight, you can see the weight. If you think a check is wrong, you can see the check. A rating nobody can inspect is just an opinion with better production values, and the industry has enough of those.</p>
</div>
<!-- Where it runs -->
<h2 class="fs-5 fw-semibold mt-4 mb-2">Where it runs</h2>
<div class="mb-2" style="max-width: 46rem;">
<p class="mb-3">The rating system is licensable, and <strong>APIs.io is the first company to license it</strong>. It runs across the entire APIs.io catalog on every rebuild, shows up in search results and on every provider's page, and is served through the APIs.io API and MCP server so both people and their agents can filter and rank by it.</p>
</div>
<!-- CTA -->
<div class="p-4 mb-4 rounded-3" style="max-width: 46rem; background: linear-gradient(135deg,#f5f8fe,#eef3fb); border:1px solid #d4def0; border-left:5px solid #0a3d91;">
<p class="mb-2 fw-semibold" style="color:#12233f;">See it running on APIs.io</p>
<p class="text-muted mb-3">Browse live ratings for thousands of API providers, and read the full rubric — every facet, all {{ all_checks }} checks, both scoring axes, and the agent-readiness dimensions with their exact points.</p>
<a href="https://apis.io/rating/" class="btn btn-primary btn-sm">The full rubric & live ratings at APIs.io →</a>
</div>
<!-- How to improve -->
<h2 class="fs-5 fw-semibold mt-4 mb-2">How a provider improves</h2>
<div class="mb-2" style="max-width: 46rem;">
<p class="mb-3">Every provider is profiled from a public repository in the <a href="https://github.com/api-evangelist" target="_blank" rel="noopener">API Evangelist GitHub organization</a> — <code>github.com/api-evangelist/<provider></code>. That is where the scored artifacts live, so improving a rating is a normal open-source contribution:</p>
<ul class="text-muted">
<li><strong>Ask a question</strong> — open an issue on the provider's repository.</li>
<li><strong>Add an artifact</strong> — submit a pull request with the missing spec, plans, rate limits, or agentic-access contract; the next scoring run picks it up.</li>
<li><strong>Work your listing through the API</strong> — the <a href="https://apis.io/developer/plans/" target="_blank" rel="noopener">APIs.io Influence plan</a> ($499/mo) returns every check you fail and what each is worth (as SARIF or JUnit, so you can fail your own build on it), projects where you land if you make named fixes, and lets you claim your listing, correct facts, dispute a finding, and request a re-check.</li>
</ul>
<p class="mb-3">The first two paths are free and always will be — the rubric is open specifically so any provider can climb it on their own.</p>
</div>
<!-- Related -->
<div class="mb-4" style="max-width: 46rem;">
<h2 class="fs-6 fw-semibold mb-2">Related reading</h2>
<ul class="text-muted mb-0">
<li><a href="/2026/07/17/apis-io-is-the-first-to-license-the-api-evangelist-rating-system/">APIs.io Is the First to License the API Evangelist Rating System</a></li>
<li><a href="https://apis.io/developer/plans/" target="_blank" rel="noopener">APIs.io plans & pricing</a> — what the Influence plan covers</li>
</ul>
</div>
<!-- License note -->
<div class="mb-4" style="max-width: 46rem;">
<p class="small text-muted mb-0">Run a catalog, marketplace, gateway, or procurement process and want to score API surfaces on a rubric that is open, agent-aware, and not for sale to the highest bidder? The system exists, it is proven, and you can license it too — <a href="mailto:kin@apievangelist.com">get in touch</a>.</p>
</div>
</section>
</div>
<!-- Sidebar -->
<div class="col-12 col-xl-4 mt-4 mt-xl-0">
<div class="sidebar">
<!-- Newsletter -->
{% include newsletter-signup.html %}
<!-- apis.io -->
<div class="widget-card mb-3">
<h5>Discover APIs</h5>
<a href="https://apis.io" target="_blank" rel="noopener" class="d-block">
<img src="https://kinlane-images.s3.amazonaws.com/apievangelist/apis-io/apis-io-2026-06-03.png" alt="apis.io — API Search" class="img-fluid rounded border">
</a>
<p class="text-muted small mb-0 mt-2">Search across thousands of APIs on apis.io →</p>
</div>
</div>
</div>
</div>