Machine-readable manifests
Nine machine-readable files that are the canonical source of truth for HoneyCoin coverage, errors, webhooks, flows, sandbox fixtures, and agent rules. Agents and tooling should read these directly.
The /manifests/ directory in the docs repo holds the canonical, machine-readable representation of every coverage matrix, error catalogue, webhook schema, and agent rule HoneyCoin publishes. Human-facing pages on this site are rendered from these files. Agents, SDK generators, and route builders should read them directly rather than scraping prose.
Where they liveRepo:
HoneyCoin-Inc/honeycoin-readme-docs, branchv1.0.4, pathmanifests/. Once v1.0.4 ships, they'll be reachable athttps://docs.honeycoin.app/manifests/<name>as well.
Inventory
| Manifest | Purpose | Size |
|---|---|---|
coverage.json | Every supported country, currency, collection method, payout destination, operator, and per-corridor min/max amount. | ~11 KB |
wallets.json | Every supported chain with address type, regex, token support, onramp/offramp eligibility, and the ownership model. | ~8 KB |
errors.json | Canonical response shape plus the full catalogue of API errors, transaction errors, and webhook errors with retryable flags and developer actions. | ~6 KB |
webhooks.json | Webhook envelope, signature rules, delivery and retry policy, and every event with dataFields, statusValues, and recipe cross-links. | ~4 KB |
wallet-webhooks.json | The same for wallet webhooks plus the resend endpoint. | ~2 KB |
flows.json | Flow definitions (collect-mobile-money, send-payout, onramp, offramp, wallet-receive) with step-by-step decision points. | ~7 KB |
test-data.json | Sandbox fixtures for success, failure, OTP, and redirect paths per recipe. | ~4 KB |
changelog.json | Structured changelog with version, date, breaking, added, changed, deprecated, fixed arrays. | ~2 KB |
agent-policy.yaml | The list of rules every AI agent must follow when generating HoneyCoin integrations. Rendered as Agent instructions. | ~4 KB |
Conventions
Every manifest follows the same envelope:
{
"version": "2026-05-19",
"description": "Plain-English purpose of this file.",
...
}version— ISO date. Pin to this in production for reproducible behavior; cache for at most 24 hours.description— One-line statement of intent. Useful for agent self-description prompts.
Quick samples
coverage.json — country and operator lookup
coverage.json — country and operator lookup{
"name": "Kenya",
"countryCode": "KE",
"currency": "KES",
"collections": [
{
"method": "mobile_money",
"minAmount": 5,
"maxAmount": 250000,
"operators": ["mpesa", "airtel"],
"operatorIdRequired": false,
"requiredFields": ["amount", "currency", "externalReference", "phoneNumber"]
},
{
"method": "bank_transfer",
"minAmount": 50,
"maxAmount": 999999,
"requiredFields": ["amount", "currency", "externalReference", "email"]
}
],
"payouts": [
{ "destination": "MoMo", "minAmount": 10, "maxAmount": 250000, "operators": ["mpesa", "airtel"] },
{ "destination": "Bank Account", "minAmount": 10, "maxAmount": 999999, "requiresBankCode": true },
{ "destination": "Paybill", "minAmount": 10, "maxAmount": 250000 },
{ "destination": "Till", "minAmount": 10, "maxAmount": 250000 }
]
}errors.json — branch on errorCode
errors.json — branch on errorCode{
"errorCode": "DUPLICATE_EXTERNAL_REFERENCE",
"httpStatus": 409,
"retryable": false,
"developerAction": "Use a new externalReference. The supplied value has already been used for a different transaction."
}agent-policy.yaml — the rules themselves
agent-policy.yaml — the rules themselvesrules:
- id: finality
severity: critical
summary: Wait for status: successful before releasing value.
- id: external-reference
severity: critical
summary: Unique externalReference on every money movement request.
...Using manifests in code
Fetch directly with curl, httpx, or your HTTP client of choice. Cache for at most 24 hours and surface the version field in your logs.
curl https://docs.honeycoin.app/manifests/coverage.json | jq '.countries[] | select(.countryCode == "KE")'import httpx
coverage = httpx.get("https://docs.honeycoin.app/manifests/coverage.json").json()
errors = httpx.get("https://docs.honeycoin.app/manifests/errors.json").json()
def supports(country_code: str, method: str) -> bool:
for c in coverage["countries"]:
if c["countryCode"] == country_code:
return any(m["method"] == method for m in c["collections"])
return False
def is_retryable(error_code: str) -> bool:
# errorCode-keyed entries live under apiErrors; transactionErrors are
# matched by messagePattern/category and webhookErrors by description.
return any(e["errorCode"] == error_code and e["retryable"] for e in errors["apiErrors"])const coverage = await fetch("https://docs.honeycoin.app/manifests/coverage.json").then(r => r.json());
const errors = await fetch("https://docs.honeycoin.app/manifests/errors.json").then(r => r.json());
const supports = (countryCode, method) =>
coverage.countries
.find(c => c.countryCode === countryCode)
?.collections.some(m => m.method === method)
?? false;Known caveats
flows.jsonrecipe pathsSeveral entries in
flows.jsonreferencerecipePathstrings like/recipes/collect-mobile-money. These paths originate from the Mintlify-based docs rebuild and may not resolve once v1.0.4 deploys. TreatrecipePathas illustrative until the team confirms equivalent slugs in this docs version.
Manifest schemasJSON Schemas for these manifests are planned for a future release. Until they are published, the manifests do not carry a
$schemareference, so validate against the documented shapes on this page rather than expecting a resolvable schema URL.
Refresh cadence
| Manifest | Refresh trigger |
|---|---|
coverage.json, wallets.json | HoneyCoin adds or removes a country, currency, rail, operator, chain, or token. |
errors.json | New error code added; retryable flag changed; remediation guidance updated. |
webhooks.json, wallet-webhooks.json | New event added; envelope or signature scheme changed. |
flows.json, test-data.json | New recipe shipped; sandbox fixture updated. |
changelog.json | Every docs release. |
agent-policy.yaml | New rule added or severity changed. |
Each refresh bumps the version date. Agents in production should log the version they consumed for auditability.
Related
- Agent instructions — The human-readable view of
agent-policy.yaml. - llms.txt and skill.md — Other machine-readable surfaces.
- MCP servers — Live tool access on top of these static manifests.
- Prompt examples — How agents should consume manifests in practice.
