overlay: 1.0.0
info:
title: API Evangelist enhancements for the EmailRep Reputation API
version: 1.0.0
x-generated: '2026-08-13'
x-method: generated
x-source: >-
Enhancements derived from https://docs.sublime.security/reference/emailrep-introduction, the
provider's own OpenAPI at openapi/_original/emailrep-alpha-api-openapi.json (retrieved through
the Sublime docs MCP server), and a live probe of https://emailrep.io/bill@microsoft.com on
2026-08-13. Never mutate the original spec — apply this overlay instead.
extends: openapi/emailrep-reputation-api-openapi.yml
actions:
- target: $.info
description: Record provenance and the provider's own title for this contract.
update:
x-apievangelist-enriched: '2026-08-13'
x-provider-spec-title: EmailRep Alpha API
x-provider-spec-retrieval: >-
The provider publishes no downloadable OpenAPI. Their spec is registered in their ReadMe
docs project and is only reachable through https://docs.sublime.security/mcp.
- target: $.paths['/{email}'].get
description: >-
Add the User-Agent requirement, which is documented in prose only and appears in no
OpenAPI the provider publishes. Omitting it returns 403 before the key is even checked.
update:
x-required-headers:
- name: User-Agent
required: true
missing_status: 403
description: >-
Must accurately describe the consuming application. A missing user agent returns
HTTP 403; a generic or misleading one may be blocked.
x-rate-limit:
window: rolling-24h
headers:
- X-Rate-Limit-Daily-Remaining
- X-Rate-Limit-Monthly-Remaining
exhaustion_status: 429
- target: $.paths['/{email}'].get.responses
description: >-
Document the 403 the provider returns for a missing User-Agent. It is absent from both the
provider's spec and the refined spec, so a spec-driven agent cannot anticipate it.
update:
'403':
description: >-
Forbidden — the request carried no User-Agent header, or one that could not be
identified. Documented at
https://docs.sublime.security/reference/emailrep-introduction.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
- target: $.paths['/{email}'].get.responses['429']
description: >-
429 is overloaded. Record the second, non-rate-limit meaning observed in production so an
agent does not retry forever against a condition that will never clear.
update:
x-overloaded-status:
- condition: quota exhausted
reason_example: rate limit exceeded
retryable: true
- condition: anonymous access disabled
reason_example: the unauthenticated API is currently disabled. please use an API key
retryable: false
observed: '2026-08-13'
- target: $.components.securitySchemes.ApiKeyAuth
description: Correct the documented-vs-deployed gap on anonymous access.
update:
x-anonymous-access:
documented: true
enforced: false
note: >-
The docs still say a key is optional. As of 2026-08-13 an anonymous request returns 429
with reason "the unauthenticated API is currently disabled. please use an API key".
Treat the key as required.
x-signup: https://emailrep.io/free
- target: $.servers
description: Flag that the provider's own spec offers a plaintext server.
update:
x-transport-warning: >-
The provider's own OpenAPI lists http://emailrep.io alongside https://emailrep.io. Never
use the plaintext server — the query parameter is a real person's email address, and
emailrep.io serves no HSTS.
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.