Datoka Agent
Signed agent execution declarations. Free verification; issuance 0.002 USDC via x402 on Base.
Should I use this
Quality & Safety
Findings (1)
- LOWin get_agent_public_keys
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"agent": {
"url": "https://datoka-agent.bhazarstudio.workers.dev/mcp"
}
}
}Remote endpoints
https://datoka-agent.bhazarstudio.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢prepare_agent_event(event)
Validate an agent execution declaration and compute its commitment. Does not create a receipt.
Input Schema
{
"type": "object",
"properties": {
"event": {
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "datoka.agent.execution.v1"
},
"agentId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"runId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"stepId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"tool": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"outcome": {
"type": "string",
"enum": [
"success",
"error"
]
},
"startedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"completedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"inputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
},
"outputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
}
},
"required": [
"version",
"agentId",
"runId",
"stepId",
"tool",
"outcome",
"startedAt",
"completedAt",
"inputHash",
"outputHash"
],
"additionalProperties": false
}
},
"required": [
"event"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"event": {
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "datoka.agent.execution.v1"
},
"agentId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"runId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"stepId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"tool": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"outcome": {
"type": "string",
"enum": [
"success",
"error"
]
},
"startedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"completedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"inputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
},
"outputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
}
},
"required": [
"version",
"agentId",
"runId",
"stepId",
"tool",
"outcome",
"startedAt",
"completedAt",
"inputHash",
"outputHash"
],
"additionalProperties": false
},
"commitment": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"encoding": {
"type": "string",
"const": "jcs"
},
"digest": {
"type": "string"
}
},
"required": [
"algorithm",
"encoding",
"digest"
],
"additionalProperties": false
},
"chain": {
"type": "string"
}
},
"required": [
"event",
"commitment",
"chain"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪issue_agent_receipt(event, idempotencyKey)
Persist a signed execution declaration receipt. Public price: 0.002 USDC via x402 on the advertised network. Preserve event, idempotencyKey and payment authorization on retries. Signed declarations do not independently prove execution.
Input Schema
{
"type": "object",
"properties": {
"event": {
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "datoka.agent.execution.v1"
},
"agentId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"runId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"stepId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"tool": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"outcome": {
"type": "string",
"enum": [
"success",
"error"
]
},
"startedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"completedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"inputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
},
"outputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
}
},
"required": [
"version",
"agentId",
"runId",
"stepId",
"tool",
"outcome",
"startedAt",
"completedAt",
"inputHash",
"outputHash"
],
"additionalProperties": false
},
"idempotencyKey": {
"type": "string",
"pattern": "^[\\x21-\\x7e]{16,200}$"
}
},
"required": [
"event",
"idempotencyKey"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"event": {
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "datoka.agent.execution.v1"
},
"agentId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"runId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"stepId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"tool": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"outcome": {
"type": "string",
"enum": [
"success",
"error"
]
},
"startedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"completedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"inputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
},
"outputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
}
},
"required": [
"version",
"agentId",
"runId",
"stepId",
"tool",
"outcome",
"startedAt",
"completedAt",
"inputHash",
"outputHash"
],
"additionalProperties": false
},
"receipt": {
"type": "object",
"properties": {
"body": {
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "datoka.receipt.v1"
},
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"issuer": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"keyId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"issuedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"request": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"chain": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"eventType": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"subject": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"encoding": {
"type": "string",
"enum": [
"jcs",
"bytes"
]
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"encoding",
"digest"
],
"additionalProperties": false
}
},
"required": [
"scope",
"chain",
"eventType",
"subject"
],
"additionalProperties": false
},
"sequence": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"previous": {
"anyOf": [
{
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
{
"type": "null"
}
]
}
},
"required": [
"version",
"id",
"issuer",
"keyId",
"issuedAt",
"request",
"sequence",
"previous"
],
"additionalProperties": false
},
"algorithm": {
"type": "string",
"const": "Ed25519"
},
"signature": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{86}$"
}
},
"required": [
"body",
"algorithm",
"signature"
],
"additionalProperties": false
}
},
"required": [
"event",
"receipt"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢verify_agent_receipt(event, receipt)
Verify the declaration against a trusted Datoka receipt. A valid signature does not independently prove the action occurred.
Input Schema
{
"type": "object",
"properties": {
"event": {
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "datoka.agent.execution.v1"
},
"agentId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"runId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"stepId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"tool": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"outcome": {
"type": "string",
"enum": [
"success",
"error"
]
},
"startedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"completedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"inputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
},
"outputHash": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"digest"
],
"additionalProperties": false
}
},
"required": [
"version",
"agentId",
"runId",
"stepId",
"tool",
"outcome",
"startedAt",
"completedAt",
"inputHash",
"outputHash"
],
"additionalProperties": false
},
"receipt": {
"type": "object",
"properties": {
"body": {
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "datoka.receipt.v1"
},
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"issuer": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"keyId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"issuedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}(?:Z))$"
},
"request": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"chain": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"eventType": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"subject": {
"type": "object",
"properties": {
"algorithm": {
"type": "string",
"const": "sha256"
},
"encoding": {
"type": "string",
"enum": [
"jcs",
"bytes"
]
},
"digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"algorithm",
"encoding",
"digest"
],
"additionalProperties": false
}
},
"required": [
"scope",
"chain",
"eventType",
"subject"
],
"additionalProperties": false
},
"sequence": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"previous": {
"anyOf": [
{
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
{
"type": "null"
}
]
}
},
"required": [
"version",
"id",
"issuer",
"keyId",
"issuedAt",
"request",
"sequence",
"previous"
],
"additionalProperties": false
},
"algorithm": {
"type": "string",
"const": "Ed25519"
},
"signature": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{86}$"
}
},
"required": [
"body",
"algorithm",
"signature"
],
"additionalProperties": false
}
},
"required": [
"event",
"receipt"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"valid": {
"type": "boolean",
"const": true
},
"receiptId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"scope": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"agentId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"runId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"stepId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"attestation": {
"type": "string",
"const": "signed_declaration"
}
},
"required": [
"valid",
"receiptId",
"scope",
"agentId",
"runId",
"stepId",
"attestation"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_agent_public_keys
Return public keys of this issuer. The operator must establish trust in this issuer independently.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"issuer": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"keys": {
"type": "array",
"items": {
"type": "object",
"properties": {
"keyId": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
},
"jwk": {
"type": "object",
"properties": {
"kty": {
"type": "string",
"const": "OKP"
},
"crv": {
"type": "string",
"const": "Ed25519"
},
"x": {
"type": "string"
},
"key_ops": {
"type": "array",
"items": {
"type": "string"
}
},
"ext": {
"type": "boolean"
}
},
"required": [
"kty",
"crv",
"x"
],
"additionalProperties": false
}
},
"required": [
"keyId",
"jwk"
],
"additionalProperties": false
}
}
},
"required": [
"issuer",
"keys"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Evidence