SignalGrade API
Score a public website.
This is the public connector surface for the live SignalGrade engine. It accepts a public website URL and returns the same evidence-integrity rules as the scorecard on /signalgrade: verified vs unverified provenance, coverage, seven signals, and the first prioritized fix. It does not invent a complete /100 grade when homepage HTML is unverified.
Auth
No API key. No OAuth. No bearer token. The live scorecard is already free. If a connector form asks for credentials, leave them blank.
Canonical URLs
https://gmancreations.com/openapi.json
https://gmancreations.com/api/v1/score
https://gmancreations.com/developers
OpenAPI 3.1: /openapi.json.
Endpoint
GET or POST. Schema signalgrade.score.v1. The instrument scores the origin homepage, robots.txt, and llms.txt. Extra paths on url are ignored.
Useful Muse operationIds: scoreWebsiteGet, scoreWebsitePost, getOpenApiDocument.
Example request
curl -sS "https://gmancreations.com/api/v1/score?url=https://example.com"
curl -sS https://gmancreations.com/api/v1/score \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","name":"Example Domain"}'
Example response (unverified HTML)
When the homepage body is Markdown or otherwise not HTML, HTML checks stay unverified. Coverage is reported as verified points, not a /100 grade. This fixture is the engine output for a Jina-style reader payload, not a live promise that example.com will always score this way.
{
"schema": "signalgrade.score.v1",
"ok": true,
"url": "https://example.com",
"provenance": {
"htmlVerified": false,
"htmlReader": "jina",
"sourceFormat": "markdown",
"label": "Limited diagnostic. Homepage HTML was not verified (reader returned Markdown)."
},
"coverage": {
"complete": false,
"verifiedEarned": 14,
"verifiedPoints": 26,
"unverifiedPoints": 74,
"totalPoints": 100
},
"score": {
"complete": false,
"display": "14 / 26 verified points",
"secondary": "/ 26 verified points",
"note": "74 points unverified",
"value": 14,
"grade": null,
"outOf": null
},
"firstFix": {
"key": "llms",
"label": "AI discovery file"
}
}
Safety and coverage
htmlVerifiedis true only when the homepage body looks like HTML. Markdown readers do not get title, heading, schema, FAQ, or viewport regexes.- If any check is unverified,
score.completeis false andscore.outOfis null. - Private, internal, localhost, link-local, metadata, IP literals, credentials, non-http(s) schemes, and non-default ports are rejected.
- Redirects are re-checked. Fetch timeout is 7 seconds per URL. Response bodies are capped at 512KB. POST bodies are capped at 8KB.
- Rate limit is best-effort per serverless isolate (12 requests / minute / IP). Honor
Retry-Afteron 429. - CORS is enabled on this API and on
/openapi.jsonso a connector can import the spec. Checkout and intake stay closed.
Connector setup (Muse)
- Create a custom connector.
- Point it at
https://gmancreations.com/openapi.json. - Base URL:
https://gmancreations.com. No auth scheme. - Expose
scoreWebsiteGetorscoreWebsitePost. - Read
provenance.htmlVerifiedandscore.completebefore talking about a /100 score.
Muse custom connectors are guided by Muse, not certified by this API. If import wants a spec URL, use /openapi.json. If it wants an example, use GET /api/v1/score?url=https://example.com.
Not in this API
Checkout, intake, Stripe sessions, newsletter, and letters. Those are not public connector surfaces.