Datoka API

Signed client-declared API receipts. Free preparation/verification; issuance 0.002 USDC via x402.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
68%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_api_public_keys' description lacks action verbin get_api_public_keys

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,054Tokens (tool definitions)
~11.0 KBTypical response size
Significant attention impact (3.95% of 128k context)

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": {
    "api": {
      "url": "https://datoka-api.bhazarstudio.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://datoka-api.bhazarstudio.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢prepare_api_exchange(event)

Validate a client-declared HTTP exchange and compute its commitment; no receipt is persisted.

Input Schema

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "const": "datoka.api.exchange.v1"
        },
        "attestation": {
          "type": "string",
          "const": "client_declared"
        },
        "apiId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "exchangeId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "OPTIONS"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 200,
          "maximum": 599
        },
        "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))$"
        },
        "targetHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "requestBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "responseBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "requestHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "responseHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "bodyEncoding": {
          "type": "string",
          "const": "application_bytes"
        },
        "headerEncoding": {
          "type": "string",
          "const": "jcs-selected-headers-v1"
        }
      },
      "required": [
        "version",
        "attestation",
        "apiId",
        "exchangeId",
        "method",
        "status",
        "startedAt",
        "completedAt",
        "targetHash",
        "requestBodyHash",
        "responseBodyHash",
        "requestHeadersHash",
        "responseHeadersHash",
        "bodyEncoding",
        "headerEncoding"
      ],
      "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.api.exchange.v1"
        },
        "attestation": {
          "type": "string",
          "const": "client_declared"
        },
        "apiId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "exchangeId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "OPTIONS"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 200,
          "maximum": 599
        },
        "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))$"
        },
        "targetHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "requestBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "responseBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "requestHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "responseHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "bodyEncoding": {
          "type": "string",
          "const": "application_bytes"
        },
        "headerEncoding": {
          "type": "string",
          "const": "jcs-selected-headers-v1"
        }
      },
      "required": [
        "version",
        "attestation",
        "apiId",
        "exchangeId",
        "method",
        "status",
        "startedAt",
        "completedAt",
        "targetHash",
        "requestBodyHash",
        "responseBodyHash",
        "requestHeadersHash",
        "responseHeadersHash",
        "bodyEncoding",
        "headerEncoding"
      ],
      "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_api_receipt(event, idempotencyKey)

Persist a signed commitment to a client-declared HTTP exchange. Public price: 0.002 USDC via x402 when enabled; otherwise requires pilot issuance permission. Preserve the event, idempotency key and original payment authorization on retries. This does not prove independent observation or the truth of the response.

Input Schema

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "const": "datoka.api.exchange.v1"
        },
        "attestation": {
          "type": "string",
          "const": "client_declared"
        },
        "apiId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "exchangeId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "OPTIONS"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 200,
          "maximum": 599
        },
        "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))$"
        },
        "targetHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "requestBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "responseBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "requestHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "responseHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "bodyEncoding": {
          "type": "string",
          "const": "application_bytes"
        },
        "headerEncoding": {
          "type": "string",
          "const": "jcs-selected-headers-v1"
        }
      },
      "required": [
        "version",
        "attestation",
        "apiId",
        "exchangeId",
        "method",
        "status",
        "startedAt",
        "completedAt",
        "targetHash",
        "requestBodyHash",
        "responseBodyHash",
        "requestHeadersHash",
        "responseHeadersHash",
        "bodyEncoding",
        "headerEncoding"
      ],
      "additionalProperties": false
    },
    "idempotencyKey": {
      "type": "string",
      "pattern": "^[\\x21-\\x7e]{16,200}$"
    }
  },
  "required": [
    "event",
    "idempotencyKey"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢verify_api_receipt(event, receipt)

Verify signature, trusted issuer, tenant, event commitment and API protocol semantics.

Input Schema

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "const": "datoka.api.exchange.v1"
        },
        "attestation": {
          "type": "string",
          "const": "client_declared"
        },
        "apiId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "exchangeId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD",
            "POST",
            "PUT",
            "PATCH",
            "DELETE",
            "OPTIONS"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 200,
          "maximum": 599
        },
        "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))$"
        },
        "targetHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "requestBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "responseBodyHash": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "algorithm": {
                  "type": "string",
                  "const": "sha256"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "algorithm",
                "digest"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "requestHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "responseHeadersHash": {
          "type": "object",
          "properties": {
            "algorithm": {
              "type": "string",
              "const": "sha256"
            },
            "digest": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          },
          "required": [
            "algorithm",
            "digest"
          ],
          "additionalProperties": false
        },
        "bodyEncoding": {
          "type": "string",
          "const": "application_bytes"
        },
        "headerEncoding": {
          "type": "string",
          "const": "jcs-selected-headers-v1"
        }
      },
      "required": [
        "version",
        "attestation",
        "apiId",
        "exchangeId",
        "method",
        "status",
        "startedAt",
        "completedAt",
        "targetHash",
        "requestBodyHash",
        "responseBodyHash",
        "requestHeadersHash",
        "responseHeadersHash",
        "bodyEncoding",
        "headerEncoding"
      ],
      "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}$"
    },
    "apiId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
    },
    "exchangeId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
    },
    "attestation": {
      "type": "string",
      "const": "client_declared"
    }
  },
  "required": [
    "valid",
    "receiptId",
    "scope",
    "apiId",
    "exchangeId",
    "attestation"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_api_public_keys

Return issuer public keys. Establish issuer trust independently before offline verification.

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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools