openapi: 3.1.0 info: title: MolTrust API version: '2.5' servers: - url: https://api.moltrust.ch description: Production. The served openapi.json omits servers[]; the base is stated by the provider at https://moltrust.ch/developers.html (quickstart), in the agent card supportedInterfaces[0].url (https://api.moltrust.ch/a2a) and in did.json service[].serviceEndpoint (https://api.moltrust.ch). paths: /identity/register: post: summary: Register Agent operationId: register_agent_identity_register_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RegisterRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/register-challenge: get: summary: Register Challenge description: Issue a stateless PoP challenge for keyless registration (no API key). operationId: register_challenge_identity_register_challenge_get responses: '200': description: Successful Response content: application/json: schema: {} /identity/register-pop: post: summary: Register Agent Pop description: 'Keyless registration via Ed25519 proof-of-possession. No API key, no signup: a valid signature over a fresh server challenge proves the caller holds the private key for the presented public key. Grants a DID + signed VC and a zero balance — no spendable credits, see the note further down at the grant. Anti-abuse is the per-IP rate limit above (30/hour). The PoW checked below does not add to that in practice: the challenge is not consumed on use, so one solve covers every registration made with it inside its 300 s TTL — see the note at POW_DIFFICULTY_BITS in app/keyless_register.py. Trust starts at 0 and Sybil-resistance lives in the endorsement graph, so there is deliberately no Sybil gate here.' operationId: register_agent_pop_identity_register_pop_post requestBody: content: application/json: schema: $ref: '#/components/schemas/PopRegisterRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /auth/moltbook: post: summary: Auth With Moltbook operationId: auth_with_moltbook_auth_moltbook_post requestBody: content: application/json: schema: $ref: '#/components/schemas/MoltbookAuthRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/verify/{did}: get: summary: Verify Agent operationId: verify_agent_identity_verify__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/badge/{did}: get: summary: Get Identity Badge description: "Identity badge — composite of agent metadata, current trust score and\nrating count, plus convenience\ \ URLs for the public verify page and SVG\nbadge. Used by the moltrust.ch /verify/{did} frontend, which fetches\n\ this JSON in parallel with /identity/badge/{did}.svg.\n\nReturns 200 with `verified: true` for any registered DID,\ \ even if the\ntrust score is still withheld (insufficient endorsements). Returns 404\nonly when the DID is not registered\ \ at all.\n\nFrontend contract (the fields the /verify/{did} page reads):\n verified, tier, trust_score, grade, issued_at,\ \ expires_at,\n vc_hash, badge_url. Additional fields (display_name, withheld,\n total_ratings, average_rating,\ \ verify_url) are extras the page\n ignores but other consumers (klaw gateway, etc.) may use." operationId: get_identity_badge_identity_badge__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 80 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/badge/{did}.svg: get: summary: Get Identity Badge Svg description: 'SVG badge for embedding/inlining on the moltrust.ch /verify/{did} page. The frontend fetches this in parallel with /identity/badge/{did} and inlines the result via r.text(). Mirrors the rendering logic of /badge/{did:path} (which predates the /identity/* convention) so both URLs stay in lockstep. 1h cache. Returns 200 with a placeholder SVG even for unknown/unscored DIDs — matches the /badge/{did:path} behaviour (renders ''N/A'' rather than surfacing a 404 inline image).' operationId: get_identity_badge_svg_identity_badge__did__svg_get parameters: - name: did in: path required: true schema: type: string maxLength: 80 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /reputation/query/{did}: get: summary: Get Reputation operationId: get_reputation_reputation_query__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /reputation/rate: post: summary: Rate Agent operationId: rate_agent_reputation_rate_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RateRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /skills: get: summary: List Skills operationId: list_skills_skills_get parameters: - name: limit in: query required: false schema: type: integer maximum: 100 minimum: 1 default: 20 title: Limit responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /skill/interaction-proof: post: summary: Create Interaction Proof Endpoint description: 'Interaction Proof: hash payload + anchor on Base L2. Required before endorsement.' operationId: create_interaction_proof_endpoint_skill_interaction_proof_post requestBody: content: application/json: schema: $ref: '#/components/schemas/InteractionProofRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /skill/endorse: post: summary: Endorse Skill Endpoint description: Issue SkillEndorsementCredential (W3C VC). Requires valid interaction proof. operationId: endorse_skill_endpoint_skill_endorse_post requestBody: content: application/json: schema: $ref: '#/components/schemas/EndorseRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /skill/trust-score/{did}: get: summary: Get Trust Score description: 'Phase 2 Trust Score with breakdown. Free. 1h cache. Validated and rate limited: the handler writes trust_score_cache rows, so an unbounded stream of junk DIDs was both a compute cost and a way to grow the cache table.' operationId: get_trust_score_skill_trust_score__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /trust/gate/{did}: get: summary: Trust Gate description: "ALLOW/DENY a counter-party DID. F3 flywheel primitive.\n\nAlways returns HTTP 200; inspect `decision`\ \ in the body.\n\nDecision tree:\n 1. Agent unknown → DENY agent_not_found\n\ \ 2. Phase 2 returns a real score:\n score >= min_score → ALLOW (behavioral)\n\ \ score < min_score → DENY insufficient_trust_score (behavioral)\n\ \ 3. Phase 2 withholds (< 3 endorsers, score is null):\n allow_cold_start = false \ \ → DENY score_withheld\n allow_cold_start = true:\n cold_start_score is null \ \ → DENY score_withheld\n cold_start_score >= min_score \ \ → ALLOW (cold_start)\n cold_start_score < min_score → DENY insufficient_trust_score\ \ (cold_start)" operationId: trust_gate_trust_gate__did__get parameters: - name: did in: path required: true schema: type: string title: Did - name: min_score in: query required: false schema: type: number maximum: 100.0 minimum: 0.0 default: 50.0 title: Min Score - name: context in: query required: false schema: anyOf: - type: string maxLength: 100 - type: 'null' title: Context - name: allow_cold_start in: query required: false schema: type: boolean default: false title: Allow Cold Start responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /agents/{did}/operator: post: summary: Claim Agent Operator description: 'Set or replace the operator of an agent. Only the agent''s own owner can call this — the owner_did on the API key must equal the agent DID itself (current self-sovereign model). Most common pattern: the agent claims itself as operator so it can put a cap on its own spend.' operationId: claim_agent_operator_agents__did__operator_post parameters: - name: did in: path required: true schema: type: string title: Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#[REDACTED]' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /operators/{operator_did}/agents/{agent_did}/budget-cap: put: summary: Set Budget Cap operationId: set_budget_cap_operators__operator_did__agents__agent_did__budget_cap_put parameters: - name: operator_did in: path required: true schema: type: string title: Operator Did - name: agent_did in: path required: true schema: type: string title: Agent Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BudgetCapRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: summary: Get Budget Cap operationId: get_budget_cap_operators__operator_did__agents__agent_did__budget_cap_get parameters: - name: operator_did in: path required: true schema: type: string title: Operator Did - name: agent_did in: path required: true schema: type: string title: Agent Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /operators/{operator_did}/budget-caps: get: summary: List Budget Caps operationId: list_budget_caps_operators__operator_did__budget_caps_get parameters: - name: operator_did in: path required: true schema: type: string title: Operator Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /skill/endorsements/given/{did}: get: summary: Get Endorsements Given description: All endorsements given by an agent (transparency). Free. operationId: get_endorsements_given_skill_endorsements_given__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /skill/endorsements/{did}: get: summary: Get Endorsements description: All received endorsements for an agent. Free. operationId: get_endorsements_skill_endorsements__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /swarm/graph/{did}: get: summary: Get Swarm Graph description: 'Endorsement graph: who endorses this DID, who endorses them (2 hops). Two-hop graph queries are the most expensive read on the endorsement tables; validated and rate limited for the same reason as trust-score.' operationId: get_swarm_graph_swarm_graph__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /swarm/stats: get: summary: Get Swarm Stats description: Global swarm statistics. operationId: get_swarm_stats_swarm_stats_get responses: '200': description: Successful Response content: application/json: schema: {} /swarm/seed: post: summary: Register Seed description: Register a trusted seed agent. Requires ADMIN_KEY header. operationId: register_seed_swarm_seed_post requestBody: content: application/json: schema: $ref: '#/components/schemas/SeedRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /swarm/propagate/{did}: get: summary: Propagate Trust description: Force recompute trust score with Phase 2 algorithm. operationId: propagate_trust_swarm_propagate__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /payment/lightning/invoice: post: summary: Create Lightning Invoice operationId: create_lightning_invoice_payment_lightning_invoice_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LightningInvoiceRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /health: get: summary: Health Check operationId: health_check_health_get responses: '200': description: Successful Response content: application/json: schema: {} /.well-known/did.json: get: summary: Did Web Document operationId: did_web_document__well_known_did_json_get responses: '200': description: Successful Response content: application/json: schema: {} /identity/resolve/{did}: get: summary: Resolve Did operationId: resolve_did_identity_resolve__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/key/{did}: get: summary: Get Agent Public Key description: Return public key + on-chain anchor info for a DID. operationId: get_agent_public_key_identity_key__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/nonce: get: summary: Get Binding Nonce description: Generate a nonce for DID-wallet binding signature. operationId: get_binding_nonce_identity_nonce_get parameters: - name: did in: query required: true schema: type: string maxLength: 128 title: Did - name: chain in: query required: false schema: type: string maxLength: 20 default: base title: Chain responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/bind: post: summary: Bind Wallet description: Bind a wallet address to a DID with cryptographic proof of ownership. operationId: bind_wallet_identity_bind_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WalletBindRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /x402/verify: get: summary: X402 Verify description: Check if a DID has payment readiness (bound wallet + trust score). operationId: x402_verify_x402_verify_get parameters: - name: did in: query required: true schema: type: string maxLength: 128 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /x402/stats: get: summary: X402 Stats description: 'Stats on /x402/verify usage. Optional: filter by DID.' operationId: x402_stats_x402_stats_get parameters: - name: did in: query required: false schema: type: string maxLength: 128 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /webhooks/payment: post: summary: Payment Webhook description: Receive Basescan webhook for incoming USDC payments to MolTrust wallet. operationId: payment_webhook_webhooks_payment_post responses: '200': description: Successful Response content: application/json: schema: {} /agents/inactive: get: summary: Get Inactive Agents description: Returns agents inactive for more than `days` days. Admin-only. RSAC Gap 3. operationId: get_inactive_agents_agents_inactive_get parameters: - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 default: 30 title: Days responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/bridge: post: summary: Bridge Did description: Bridge an external DID to a MolTrust DID via wallet signature proof. operationId: bridge_did_identity_bridge_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DIDBridgeRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/bridge-simple: post: summary: Bridge Did Simple description: Lightweight DID bridge — maps external DID to caller's MolTrust DID. No wallet required. operationId: bridge_did_simple_identity_bridge_simple_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SimpleBridgeRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/resolve-external/{external_did}: get: summary: Resolve External Did description: Resolve an external DID to its bridged MolTrust DID document. operationId: resolve_external_did_identity_resolve_external__external_did__get parameters: - name: external_did in: path required: true schema: type: string title: External Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/import-score: post: summary: Import External Score description: Import an external trust score into MolTrust via DID bridge. operationId: import_external_score_identity_import_score_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScoreImportRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/agent-type/{did}: post: summary: Set Agent Class description: Set or update the agent classification and governance tier. operationId: set_agent_class_identity_agent_type__did__post parameters: - name: did in: path required: true schema: type: string title: Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AgentClassRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: summary: Get Agent Class description: Read agent classification and governance rules. operationId: get_agent_class_identity_agent_type__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/agent-types: get: summary: List Agent Types description: List all available agent classifications with governance rules. operationId: list_agent_types_identity_agent_types_get responses: '200': description: Successful Response content: application/json: schema: {} /identity/register-batch: post: tags: - Identity summary: Register Batch description: Batch-register external agents with Merkle anchoring. Requires ADMIN_KEY. operationId: register_batch_identity_register_batch_post responses: '200': description: Successful Response content: application/json: schema: {} /credentials/issue: post: summary: Issue Vc operationId: issue_vc_credentials_issue_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IssueVCRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credentials/verify: post: summary: Verify Vc operationId: verify_vc_credentials_verify_post requestBody: content: application/json: schema: $ref: '#/components/schemas/VerifyVCRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /compliance/assess: post: tags: - Compliance summary: Compliance Assess description: 'Classify an AI system under the EU AI Act (Reg (EU) 2024/1689): risk tier (prohibited/high/limited/minimal), obligations checklist and gap analysis. Deterministic; every verdict is pinned to the verified spec-fakten.' operationId: compliance_assess_compliance_assess_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ComplianceAssessRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /compliance/declaration: post: tags: - Compliance summary: Compliance Declaration description: 'Issue an EU declaration of conformity (Annex V) as a signed W3C VC of type MolTrustConformityDeclaration. credentialSubject fields map 1:1 to Annex V(1)-(8).' operationId: compliance_declaration_compliance_declaration_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ComplianceDeclarationRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /compliance/report/{did}: get: tags: - Compliance summary: Compliance Report description: 'Compliance report (HTML v1): identity, latest risk assessment, obligations, gaps, conformity declarations, trust score, audit summary. `format=json` for machine use.' operationId: compliance_report_compliance_report__did__get parameters: - name: did in: path required: true schema: type: string title: Did - name: format in: query required: false schema: type: string pattern: ^(html|json)$ default: html title: Format - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /auth/github: get: summary: Github Auth Start description: Redirect to GitHub OAuth operationId: github_auth_start_auth_github_get responses: '200': description: Successful Response content: application/json: schema: {} /auth/github/callback: get: summary: Github Auth Callback operationId: github_auth_callback_auth_github_callback_get parameters: - name: code in: query required: true schema: type: string maxLength: 128 title: Code - name: state in: query required: false schema: type: string maxLength: 64 default: '' title: State responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /auth/signup: post: summary: Signup For Api Key operationId: signup_for_api_key_auth_signup_post requestBody: content: application/json: schema: $ref: '#/components/schemas/SignupRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /auth/signup-did: post: summary: Signup By Signature description: 'Mint an API key by proving key possession instead of owning a mailbox. An agent that registered through /identity/register-pop already holds an Ed25519 key the server knows. Requiring an email on top of that asks for a human and a mailbox to stand behind something that is not about either — and every mailbox-shaped identity is one more thing to Sybil. Same challenge, same proof-of-work, same signature check as keyless registration. The key is bound to the DID that owns the public key, so it cannot be minted for an agent the caller does not control.' operationId: signup_by_signature_auth_signup_did_post requestBody: content: application/json: schema: $ref: '#/components/schemas/DidSignupRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credits/pricing: get: summary: Credits Pricing operationId: credits_pricing_credits_pricing_get responses: '200': description: Successful Response content: application/json: schema: {} /credits/balance/{did}: get: summary: Credits Balance operationId: credits_balance_credits_balance__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credits/transfer: post: summary: Credits Transfer operationId: credits_transfer_credits_transfer_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/[REDACTED]' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credits/transactions/{did}: get: summary: Credits Transactions operationId: credits_transactions_credits_transactions__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did - name: limit in: query required: false schema: type: integer maximum: 200 minimum: 1 default: 50 title: Limit - name: offset in: query required: false schema: type: integer minimum: 0 default: 0 title: Offset - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credits/deposit: post: summary: Credits Deposit description: Claim credits by submitting a USDC transaction hash from Base. operationId: credits_deposit_credits_deposit_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DepositRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credits/deposits/{did}: get: summary: Credits Deposit History description: Get USDC deposit history for an agent. operationId: credits_deposit_history_credits_deposits__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credits/solvency/{did}: get: summary: Credits Solvency V0 description: 'Public, recomputable on-chain USDC solvency (solvency_usdc_v0). Read-only and UNAUTHENTICATED by design: a third party must be able to fetch the inputs and reproduce the value independently from a Base RPC. Spec: docs/solvency-usdc-v0.md (v0.1.0). Path (C) only — reads recorded on-chain USDC deposits; does NOT touch wallet_score / shadow_score.' operationId: credits_solvency_v0_credits_solvency__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credits/deposit-info: get: summary: Credits Deposit Info description: 'Public endpoint: how to deposit USDC for credits.' operationId: credits_deposit_info_credits_deposit_info_get responses: '200': description: Successful Response content: application/json: schema: {} /.well-known/agent.json: get: summary: Well Known Agent Json Alias description: 'Backward-compat alias for the legacy A2A discovery path. Current A2A serves the Agent Card at /.well-known/agent-card.json (nginx static). Pre-rename clients (e.g. @use-agently/sdk) still fetch /.well-known/agent.json and 404 — nginx has no location for it, so it falls through to the app. Serve the same public card here so those clients can still discover MolTrust.' operationId: well_known_agent_json_alias__well_known_agent_json_get responses: '200': description: Successful Response content: application/json: schema: {} /.well-known/x402: get: summary: Well Known X402 Alias description: 'Redirect the extension-less legacy path to the served x402 discovery document. Clients fetch /.well-known/x402 (no .json) and 404; the document is served at /.well-known/x402.json. nginx has no location for the bare path, so it falls through to the app.' operationId: well_known_x402_alias__well_known_x402_get responses: '200': description: Successful Response content: application/json: schema: {} /.well-known/mcp.json: get: summary: Well Known Mcp Json description: 'MCP server discovery document. Points MCP clients to the Streamable-HTTP endpoint at /mcp. Static, analogous to /.well-known/agent-card.json.' operationId: well_known_mcp_json__well_known_mcp_json_get responses: '200': description: Successful Response content: application/json: schema: {} /sitemap.xml: get: summary: Sitemap Redirect description: 'api.moltrust.ch serves no sitemap; crawlers probing it 404. Redirect them to the website sitemap on moltrust.ch.' operationId: sitemap_redirect_sitemap_xml_get responses: '200': description: Successful Response content: application/json: schema: {} /extendedAgentCard: get: summary: Extended Agent Card description: "A2A v1.0 ExtendedAgentCard.\n\nReturns the public agent card extended with:\n- The platform's own paid\ \ skills (endorsement)\n- MoltGuard sub-API discovery surface — skill + extensions built at request time\n from the\ \ live MoltGuard OpenAPI spec (cached 1h, see app/moltguard_discovery.py).\n Graceful-degrades to public-card-only\ \ if MoltGuard is unreachable AND cache empty." operationId: extended_agent_card_extendedAgentCard_get parameters: - name: X-API-Key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: X-MolTrust-DID in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Moltrust-Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /a2a/agent-card/{did}: get: summary: A2A Trust Card operationId: a2a_trust_card_a2a_agent_card__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /agents/recent: get: summary: Recent Agents operationId: recent_agents_agents_recent_get responses: '200': description: Successful Response content: application/json: schema: {} /stats: get: summary: Public Stats operationId: public_stats_stats_get responses: '200': description: Successful Response content: application/json: schema: {} /join: get: summary: Join Redirect operationId: join_redirect_join_get parameters: - name: ref in: query required: false schema: type: string maxLength: 100 title: Ref responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /agents/{did}/erc8004: get: summary: Erc8004 Registration File description: Serve ERC-8004 compatible registration file (Agent Card) for a MolTrust agent. operationId: erc8004_registration_file_agents__did__erc8004_get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /resolve/erc8004/{agent_id}: get: summary: Erc8004 Resolve description: Resolve an ERC-8004 agent ID on Base to its on-chain data + optional MolTrust cross-reference. operationId: erc8004_resolve_resolve_erc8004__agent_id__get parameters: - name: agent_id in: path required: true schema: type: integer minimum: 0 title: Agent Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /.well-known/agent-registration.json: get: summary: Well Known Agent Registration description: ERC-8004 domain verification endpoint. operationId: well_known_agent_registration__well_known_agent_registration_json_get responses: '200': description: Successful Response content: application/json: schema: {} /identity/erc8004/register: post: summary: Erc8004 Dual Register description: 'Dual registration: create MolTrust DID + register on ERC-8004 IdentityRegistry.' operationId: erc8004_dual_register_identity_erc8004_register_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ERC8004RegisterRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/erc8004/{address}: get: summary: Erc8004 Resolve By Address description: Resolve ERC-8004 identity by Base wallet address. operationId: erc8004_resolve_by_address_identity_erc8004__address__get parameters: - name: address in: path required: true schema: type: string maxLength: 42 title: Address responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/erc8004/validate: post: summary: Erc8004 Validate description: 'MolTrust as ERC-8004 validator: assess agent, issue VC, post on-chain feedback.' operationId: erc8004_validate_identity_erc8004_validate_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ERC8004ValidateRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/health: get: summary: Sports Health description: Sports module health check. operationId: sports_health_sports_health_get responses: '200': description: Successful Response content: application/json: schema: {} /sports/predictions/commit: post: summary: Sports Predict Commit description: Commit a prediction before an event starts. Returns commitment hash + on-chain anchor. operationId: sports_predict_commit_sports_predictions_commit_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PredictionCommitRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/predictions/verify/{commitment_hash}: get: summary: Sports Predict Verify description: Verify a prediction commitment exists and return details. operationId: sports_predict_verify_sports_predictions_verify__commitment_hash__get parameters: - name: commitment_hash in: path required: true schema: type: string maxLength: 64 title: Commitment Hash responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/predictions/history/{did}: get: summary: Sports Predict History description: Get prediction history and stats for an agent. operationId: sports_predict_history_sports_predictions_history__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 128 title: Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/predictions/settle/{commitment_hash}: patch: summary: Sports Predict Settle Admin description: 'Admin endpoint: manually settle a prediction (for polymarket or manual events).' operationId: sports_predict_settle_admin_sports_predictions_settle__commitment_hash__patch parameters: - name: commitment_hash in: path required: true schema: type: string maxLength: 64 title: Commitment Hash - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: content: application/json: schema: $ref: '#/components/schemas/ManualSettleRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/signals/register: post: summary: Signal Provider Register description: Register as a Verified Signal Provider. Returns credential with on-chain anchor. operationId: signal_provider_register_sports_signals_register_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SignalProviderRegisterRequest' responses: '201': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/signals/verify/{provider_id}: get: summary: Signal Provider Verify description: 'Public: verify a signal provider and see their track record.' operationId: signal_provider_verify_sports_signals_verify__provider_id__get parameters: - name: provider_id in: path required: true schema: type: string maxLength: 11 title: Provider Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/signals/leaderboard: get: summary: Signal Provider Leaderboard description: 'Public: top signal providers ranked by accuracy.' operationId: signal_provider_leaderboard_sports_signals_leaderboard_get responses: '200': description: Successful Response content: application/json: schema: {} /sports/signals/badge/{provider_id}.svg: get: summary: Signal Provider Badge description: 'Public: SVG badge for embedding in websites.' operationId: signal_provider_badge_sports_signals_badge__provider_id__svg_get parameters: - name: provider_id in: path required: true schema: type: string maxLength: 11 title: Provider Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/fantasy/lineups/commit: post: summary: Fantasy Lineup Commit description: Commit a fantasy lineup before contest start. Returns commitment hash + on-chain anchor. operationId: fantasy_lineup_commit_sports_fantasy_lineups_commit_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FantasyLineupCommitRequest' responses: '201': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/fantasy/lineups/verify/{commitment_hash}: get: summary: Fantasy Lineup Verify description: 'Public: verify a fantasy lineup commitment.' operationId: fantasy_lineup_verify_sports_fantasy_lineups_verify__commitment_hash__get parameters: - name: commitment_hash in: path required: true schema: type: string maxLength: 64 title: Commitment Hash responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/fantasy/lineups/settle/{commitment_hash}: patch: summary: Fantasy Lineup Settle description: 'Admin: settle a fantasy lineup with results.' operationId: fantasy_lineup_settle_sports_fantasy_lineups_settle__commitment_hash__patch parameters: - name: commitment_hash in: path required: true schema: type: string maxLength: 64 title: Commitment Hash - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: content: application/json: schema: $ref: '#[REDACTED]' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /sports/fantasy/history/{did}: get: summary: Fantasy History description: Get fantasy lineup history and ROI stats for an agent. operationId: fantasy_history_sports_fantasy_history__did__get parameters: - name: did in: path required: true schema: type: string maxLength: 64 title: Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /violation/record: post: summary: Create Violation Record description: Record a protocol violation. Requires X-Admin-Key header. Tech Spec 2.7. operationId: create_violation_record_violation_record_post requestBody: content: application/json: schema: $ref: '#/components/schemas/ViolationRecordRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /violation/{record_id}: get: summary: Get Violation Record description: Retrieve a ViolationRecord by ID. Public endpoint. operationId: get_violation_record_violation__record_id__get parameters: - name: record_id in: path required: true schema: type: string maxLength: 64 title: Record Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /violation/{record_id}/reverse: post: summary: Reverse Violation description: Reverse a violation record. Requires X-Admin-Key header. Tech Spec 2.7. operationId: reverse_violation_violation__record_id__reverse_post parameters: - name: record_id in: path required: true schema: type: string maxLength: 64 title: Record Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ViolationReversalRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /violation/agent/{did}: get: summary: Get Agent Violations description: List all violation records for a given agent DID. Public endpoint. operationId: get_agent_violations_violation_agent__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /aae/evaluations/{did}: get: summary: Get Agent Aae Evaluations description: 'Public read of an agent''s AAE-evaluator verdicts — for independent witness recomputation of the class=P constraint-breach penalty (TechSpec v0.10). Exposes only the fields the penalty depends on: per-constraint {type, verdict, reason, class} plus aae_ref / created_at / aggregate verdict. Deliberately omits action_context (may be sensitive) and nonce (replay token). With this, constraint_breach_penalty is fully recomputable from public inputs (this endpoint + /violation/agent/{did} + endorsements). Public read.' operationId: get_agent_aae_evaluations_aae_evaluations__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /credentials/verify-chain: post: summary: Verify Delegation Chain Endpoint description: Full delegation chain verification with per-agent AAE lookup. RSAC Gap 2. operationId: verify_delegation_chain_endpoint_credentials_verify_chain_post requestBody: content: application/json: schema: $ref: '#/components/schemas/DelegationChainRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/revoke/{did}: post: summary: Revoke Agent description: 'Revoke an agent. With cascade=true, all downstream delegated agents are also revoked (max 8 hops). Emits CAEP events.' operationId: revoke_agent_identity_revoke__did__post parameters: - name: did in: path required: true schema: type: string title: Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RevokeRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/unrevoke/{did}: post: summary: Unrevoke Agent description: Reinstate a revoked agent. Admin only. operationId: unrevoke_agent_identity_unrevoke__did__post parameters: - name: did in: path required: true schema: type: string title: Did - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/revocation-status/{did}: get: summary: Revocation Status description: Check revocation status and downstream impact. operationId: revocation_status_identity_revocation_status__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/delegations/{did}: get: summary: Get Delegations description: List all delegation relationships for an agent (parent and child). operationId: get_delegations_identity_delegations__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/spiffe/{spiffe_uri}: get: summary: Spiffe Lookup description: 'Resolve a SPIFFE URI to a MolTrust DID with trust score and classification. Lightweight bridge — full SVID/Workload API planned for Q3.' operationId: spiffe_lookup_identity_spiffe__spiffe_uri__get parameters: - name: spiffe_uri in: path required: true schema: type: string title: Spiffe Uri responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/spiffe/bind: post: summary: Spiffe Bind description: Bind a SPIFFE URI to an existing MolTrust DID. operationId: spiffe_bind_identity_spiffe_bind_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SpiffeBindRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/spiffe/bind/{spiffe_uri}: delete: summary: Spiffe Unbind description: Remove a SPIFFE binding. Admin only. operationId: spiffe_unbind_identity_spiffe_bind__spiffe_uri__delete parameters: - name: spiffe_uri in: path required: true schema: type: string title: Spiffe Uri - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /identity/spiffe: get: summary: Spiffe List description: List all SPIFFE bindings. Requires API key. operationId: spiffe_list_identity_spiffe_get parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /delegation/configure: post: summary: Configure Delegation description: Configure delegation permissions for an agent. Admin or agent owner. operationId: configure_delegation_delegation_configure_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /delegation/create: post: tags: - Delegation summary: Delegation Create description: 'Mint a UCAN 0.10.0 delegation JWT (capabilities, attenuation, proof chain). Bounded by the delegator''s agent_delegation_config.' operationId: delegation_create_delegation_create_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DelegationCreateRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /delegation/verify: post: tags: - Delegation summary: Delegation Verify description: 'Verify a UCAN JWT + embedded proof chain: signature, time bounds, iss/aud chain alignment, attenuation monotonicity, and revocation.' operationId: delegation_verify_delegation_verify_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DelegationVerifyRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /reputation/batch-sync: post: tags: - Reputation summary: Reputation Batch Sync description: Batch reputation scores + ratings for up to 500 DIDs in a single query. operationId: reputation_batch_sync_reputation_batch_sync_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReputationBatchRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /anchors/batch: post: tags: - Anchoring summary: Anchors Batch description: 'Merkle-batch a set of hashes: returns the root + per-leaf proof paths. Optional on-chain submission uses ONLY the existing anchoring key (BASE_KEY); the locked ERC-8004 wallet (0x9068…) is never used and no new wallet is configured.' operationId: anchors_batch_anchors_batch_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AnchorsBatchRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /compliance/incident: post: tags: - Compliance summary: Compliance Incident description: 'Record an Art 73 serious incident with the verified staggered deadline (2d critical-infra / 10d death / 15d general) and deadline status. Recording only — no automatic authority dispatch (the Art 73 duty rests with the provider).' operationId: compliance_incident_compliance_incident_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ComplianceIncidentRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /interaction/validate-signing: post: summary: Validate Signing Endpoint description: Validate interaction proof signing sequence. Tech Spec v0.2.2. operationId: validate_signing_endpoint_interaction_validate_signing_post responses: '200': description: Successful Response content: application/json: schema: {} /music/credential/issue: post: summary: Issue Music Credential description: Issue a VerifiedMusicCredential. Returns the credential with provenance. operationId: issue_music_credential_music_credential_issue_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MusicCredentialRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /music/credential/{credential_id}: get: summary: Get Music Credential description: Retrieve a VerifiedMusicCredential by ID. Public endpoint. operationId: get_music_credential_music_credential__credential_id__get parameters: - name: credential_id in: path required: true schema: type: string maxLength: 64 title: Credential Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /music/credential/agent/{did}: get: summary: Get Agent Music Credentials description: List all music credentials for a given agent DID. Public endpoint. operationId: get_agent_music_credentials_music_credential_agent__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /music/credential/{credential_id}/revoke: post: summary: Revoke Music Credential description: Revoke a music credential. Requires X-Admin-Key. operationId: revoke_music_credential_music_credential__credential_id__revoke_post parameters: - name: credential_id in: path required: true schema: type: string maxLength: 64 title: Credential Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MusicRevokeRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /music/verify/{credential_id}: get: summary: Verify Music Credential description: 'Public verification: returns validity + full credential + anchor status.' operationId: verify_music_credential_music_verify__credential_id__get parameters: - name: credential_id in: path required: true schema: type: string maxLength: 64 title: Credential Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/aae/challenge: post: tags: - AAE Enforcement summary: Aae Challenge description: 'Issue a subject-binding challenge for one AAE (§5 Step 4). Returns the members the subject agent signs back as a compact JWS: a fresh 128-bit nonce, the audience identifying this relying party, and the AAE id. The nonce carries its own HMAC origin proof, so nothing is stored until the response arrives and the nonce is spent. Body: {"aae_id": ""}.' operationId: aae_challenge_vc_aae_challenge_post parameters: - name: X-API-Key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: X-MolTrust-DID in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Moltrust-Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/aae/submit: post: tags: - AAE Enforcement summary: Aae Submit description: 'Submit an AAE as a compact JWS (D-1 Acceptance-Gate). Verifies the issuer signature + payload/schema (AAE §5 Step 1+2) and the subject-binding challenge-response (§5 Step 4), fail-closed, then persists. mandate/constraints/validity come from the VERIFIED payload, never from client claims. Body: {"aae_jws": "", "subject_challenge_jws": "", "ancestor_jws": ["", ...]}. The challenge nonce comes from POST /vc/aae/challenge and is single-use. `ancestor_jws` carries the parent AAEs of a delegated envelope inline; retrieval over delegator_aae_uri is deferred. 422 invalid/unverifiable, 409 single_use collision.' operationId: aae_submit_vc_aae_submit_post parameters: - name: X-API-Key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: X-MolTrust-DID in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Moltrust-Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/aae/evaluate: post: tags: - AAE Enforcement summary: Aae Evaluate description: 'Evaluate a geplante Aktion (action_context) gegen einen gespeicherten AAE-Envelope. Boundary-Validierung (Defense-in-Depth zum fail-closed Core): nonce-missing->422, Schema/Size/Format-Checks, agent_did==auth-principal, vc_id<->Envelope-Binding. Verdict (ALLOW/DENY) kommt signiert aus dem Evaluator-Core; das eval-row ist persistiert.' operationId: aae_evaluate_vc_aae_evaluate_post parameters: - name: X-API-Key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: X-MolTrust-DID in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Moltrust-Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /enforce/check: post: tags: - AAE Enforcement summary: Enforce Check Endpoint description: 'Laufzeit-Check fuer constraint_mode=enforce. Mandat und Transaktion kommen im Request. Der Kern (app/enforcement/enforce_check.py) liest keine Datenbank und haelt keinen Zustand: das Verdikt haengt ausschliesslich an mandate + transaction. Wer beide hat, rechnet den core_digest ohne diesen Server nach. Fail-closed: fehlt ein gueltiges Mandat, ist die Antwort DENY — nicht 4xx und nicht ein stiller Durchlauf. Der Aufrufer bekommt in beiden Faellen einen Record. Jeder Grant traegt `type_fields` (Pflicht, enthaelt "verb") und deklariert damit, woraus die Aktion besteht. `transaction.action` muss ein Objekt sein und genau diese Schluessel tragen; Empfaenger und Betrag bleiben Geschwister der Aktion und laufen ueber Constraints.' operationId: enforce_check_endpoint_enforce_check_post parameters: - name: X-API-Key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: X-MolTrust-DID in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Moltrust-Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /enforce/ratify: post: tags: - AAE Enforcement summary: Enforce Ratify Endpoint description: 'Ratifiziert einen DENY- oder PENDING-Record aus /enforce/check. Der Vorgaenger wird NICHT veraendert. Zurueck kommt ein zweiter, eigenstaendiger Record, der ihn per core_digest referenziert — Historie durch Anhaengen. Der Kern (app/enforcement/ratify.py) liest keine Datenbank und haelt keinen Zustand. Wo der Betreiber die Kette ablegt, ist seine Sache; MolTrust speichert sie nicht. Die ratifizierende Autoritaet muss aus dem Mandat des Vorgaengers ableitbar sein und ihre Signatur muss pruefbar sein. Ist sie das nicht, kommt ein Record mit status=REJECTED zurueck (HTTP 200) — der Vorgaenger behaelt seinen Status. Ein nicht ratifizierbarer Vorgaenger (etwa ein PERMIT) ist dagegen ein Aufrufer-Fehler: 422.' operationId: enforce_ratify_endpoint_enforce_ratify_post parameters: - name: X-API-Key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: X-MolTrust-DID in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Moltrust-Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/ipr/submit: post: tags: - Output Provenance summary: Ipr Submit description: Submit an Interaction Proof Record. operationId: ipr_submit_vc_ipr_submit_post parameters: - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/ipr/stats: get: tags: - Output Provenance summary: Ipr Stats Endpoint description: Get aggregate IPR statistics. operationId: ipr_stats_endpoint_vc_ipr_stats_get responses: '200': description: Successful Response content: application/json: schema: {} /vc/ipr/agent/{did}: get: tags: - Output Provenance summary: Ipr By Agent description: Get IPRs for an agent, newest first. operationId: ipr_by_agent_vc_ipr_agent__did__get parameters: - name: did in: path required: true schema: type: string title: Did - name: limit in: query required: false schema: type: integer maximum: 100 default: 20 title: Limit - name: offset in: query required: false schema: type: integer minimum: 0 default: 0 title: Offset responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/ipr/{ipr_id}: get: tags: - Output Provenance summary: Ipr Get description: Get a single IPR by ID. operationId: ipr_get_vc_ipr__ipr_id__get parameters: - name: ipr_id in: path required: true schema: type: string title: Ipr Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/ipr/{ipr_id}/status: get: tags: - Output Provenance summary: Ipr Status description: Check DB vs chain consistency for an IPR. operationId: ipr_status_vc_ipr__ipr_id__status_get parameters: - name: ipr_id in: path required: true schema: type: string title: Ipr Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/ipr/verify: post: tags: - Output Provenance summary: Ipr Verify description: 'Verify an IPR: check signature, anchor, and Merkle proof.' operationId: ipr_verify_vc_ipr_verify_post responses: '200': description: Successful Response content: application/json: schema: {} /vc/ipr/{ipr_id}/outcome: post: tags: - Output Provenance summary: Ipr Outcome description: Submit outcome feedback for confidence calibration. operationId: ipr_outcome_vc_ipr__ipr_id__outcome_post parameters: - name: ipr_id in: path required: true schema: type: string title: Ipr Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /vc/ipr/admin/anchor: post: tags: - Output Provenance Admin summary: Ipr Admin Anchor description: 'Admin: Trigger Merkle batch anchoring for all pending IPRs.' operationId: ipr_admin_anchor_vc_ipr_admin_anchor_post responses: '200': description: Successful Response content: application/json: schema: {} /vc/ipr/admin/retry: post: tags: - Output Provenance Admin summary: Ipr Admin Retry description: 'Admin: Reset failed IPRs back to pending.' operationId: ipr_admin_retry_vc_ipr_admin_retry_post responses: '200': description: Successful Response content: application/json: schema: {} /vc/ipr/admin/reconcile: post: tags: - Output Provenance Admin summary: Ipr Admin Reconcile description: 'Admin: Verify all anchored IPRs against chain and reset missing.' operationId: ipr_admin_reconcile_vc_ipr_admin_reconcile_post responses: '200': description: Successful Response content: application/json: schema: {} /vc/ipr/admin/reanchor: post: tags: - Output Provenance Admin summary: Ipr Admin Reanchor description: 'Admin: Force re-anchor a specific IPR.' operationId: ipr_admin_reanchor_vc_ipr_admin_reanchor_post responses: '200': description: Successful Response content: application/json: schema: {} /admin/login: post: summary: Admin Login operationId: admin_login_admin_login_post requestBody: content: application/json: schema: $ref: '#/components/schemas/AdminLoginRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/logout: post: summary: Admin Logout operationId: admin_logout_admin_logout_post responses: '200': description: Successful Response content: application/json: schema: {} /admin/me: get: summary: Admin Me operationId: admin_me_admin_me_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/overview: get: summary: Dashboard Overview operationId: dashboard_overview_admin_dashboard_overview_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/agents: get: summary: Dashboard Agents operationId: dashboard_agents_admin_dashboard_agents_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/activity: get: summary: Dashboard Activity operationId: dashboard_activity_admin_dashboard_activity_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/security: get: summary: Dashboard Security operationId: dashboard_security_admin_dashboard_security_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/usage: get: summary: Admin Usage description: "API usage over 7, 30 or 90 days, read from the daily rollups.\n\nReads usage_daily, usage_daily_keys and\ \ usage_daily_payments — never\nrequest_log, which keeps 30 days and would silently answer a 90-day\nquestion with\ \ a 30-day one.\n\nTwo counting rules this endpoint exists to get right:\n\n* ``usage_daily.distinct_dids`` is stored\ \ per\n (day, endpoint, status, source, class) group. Summing it counts an agent\n once per group it appears in.\ \ Distinct identities therefore come from\n usage_daily_keys, which is one row per (day, key) and can be counted\n\ \ across a range honestly.\n* A 200 cannot be traced back to the 402 that preceded it — the rollup has\n no per-request\ \ identity. So \"conversion\" is reported as challenges issued\n against payments actually settled (from payment_events),\ \ and the 200s\n are reported only for endpoints that also issued a 402, which is the\n closest honest proxy." operationId: admin_usage_admin_usage_get parameters: - name: days in: query required: false schema: type: integer default: 30 title: Days responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/funnel: get: summary: Admin Funnel description: "Acquisition funnel since the epoch: registrations, then what followed.\n\nRegistrations per day by platform\ \ bucket, and for each registered agent the\ntime to its first authenticated call, first credential and first x402\n\ payment. The window is fixed at ``FUNNEL_EPOCH`` rather than a rolling N\ndays: the question is how the listings are\ \ performing since they went out,\nand a rolling window would quietly drop the early cohort.\n\nThree measurement\ \ limits are reported in the response rather than hidden:\n\n* ``platform`` is free-form, so unmapped values land\ \ in ``other`` with the\n raw strings listed beside the bucket.\n* First call comes from a daily rollup, so it is\ \ a day count. An agent that\n registers and calls an hour later scores 0 days, not 0.04.\n* First credential excludes\ \ the AgentTrustCredential that registration\n issues automatically. Counting it would make the column a constant\ \ zero:\n 86 of 90 land within a minute of the agent's own created_at.\n* Payments carry a wallet. Rows are attributed\ \ by ``payment_events.did``\n when set, otherwise by ``agents.wallet_address``; ``payments.linkage``\n says how\ \ many rows either path could reach, so an empty payment column is\n readable as missing linkage rather than as missing\ \ revenue." operationId: admin_funnel_admin_funnel_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/x402: get: summary: Dashboard X402 operationId: dashboard_x402_admin_dashboard_x402_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/discovery: get: summary: Dashboard Discovery description: 'Discovery-Tracking dashboard — latest snapshot + 7-day history + baseline. Reads discovery_snapshots (populated by scripts/discovery_snapshot.py cron). Returns latest + previous-day + baseline rows; the frontend computes deltas. Admin-only endpoint — intentionally NOT in agent-card/OpenAPI/llms.txt (Discovery-Checklist Gate: internal-only).' operationId: dashboard_discovery_admin_dashboard_discovery_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/journal: get: summary: Dashboard Journal description: Return today's and recent journal entries. operationId: dashboard_journal_admin_dashboard_journal_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/journal/list: get: summary: Dashboard Journal List description: List ALL available journal entries with preview. Admin auth. operationId: dashboard_journal_list_admin_dashboard_journal_list_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/journal/search: get: summary: Dashboard Journal Search description: Full-text search across all journal entries. Admin auth. operationId: dashboard_journal_search_admin_dashboard_journal_search_get parameters: - name: q in: query required: false schema: type: string minLength: 2 maxLength: 100 default: '' title: Q responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/dashboard/journal/{date}: get: summary: Dashboard Journal Entry description: Return a specific journal entry by date (YYYY-MM-DD). operationId: dashboard_journal_entry_admin_dashboard_journal__date__get parameters: - name: date in: path required: true schema: type: string title: Date responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/journal/append: post: summary: Journal Append description: Append a note to today's (or specified date's) journal entry. operationId: journal_append_admin_journal_append_post requestBody: content: application/json: schema: $ref: '#[REDACTED]' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/search: get: summary: Site Search description: Public site-wide search over all HTML pages. operationId: site_search_api_search_get parameters: - name: q in: query required: false schema: type: string minLength: 2 maxLength: 80 default: '' title: Q responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/dashboard/callers: get: summary: Dashboard Callers description: Aggregated caller list from request_log. Admin auth. operationId: dashboard_callers_admin_dashboard_callers_get parameters: - name: limit in: query required: false schema: type: integer maximum: 500 minimum: 1 default: 50 title: Limit - name: offset in: query required: false schema: type: integer minimum: 0 default: 0 title: Offset - name: q in: query required: false schema: type: string minLength: 2 maxLength: 100 title: Q responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/dashboard/callers/{ip}: get: summary: Dashboard Caller Detail description: Detail view for a single IP. Admin auth. operationId: dashboard_caller_detail_admin_dashboard_callers__ip__get parameters: - name: ip in: path required: true schema: type: string title: Ip responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/dashboard/health: get: summary: Dashboard Health description: 'Discovery & error-health panel for the admin dashboard: high-error endpoints (24h), discovery failures (callers getting ONLY 404s over 7d), and /.well-known/* status (24h). Admin auth. Read-only.' operationId: dashboard_health_admin_dashboard_health_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/dashboard/traffic: get: summary: Dashboard Traffic operationId: dashboard_traffic_admin_dashboard_traffic_get parameters: - name: hours in: query required: false schema: type: integer maximum: 168 minimum: 1 default: 24 title: Hours - name: source in: query required: false schema: type: string maxLength: 20 title: Source responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/traffic/caller/{ip}: get: tags: - Admin summary: Caller Detail description: 'Admin: Get detailed traffic info for a specific IP.' operationId: caller_detail_admin_traffic_caller__ip__get parameters: - name: ip in: path required: true schema: type: string title: Ip responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/traffic/caller/{ip}/label: post: tags: - Admin summary: Set Caller Label description: 'Admin: Set or update label for a caller IP.' operationId: set_caller_label_admin_traffic_caller__ip__label_post parameters: - name: ip in: path required: true schema: type: string title: Ip responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /badge/{did}: get: summary: Get Trust Badge description: Live SVG badge showing trust score + grade. 1h cache. operationId: get_trust_badge_badge__did__get parameters: - name: did in: path required: true schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /wallet/{address}: get: summary: Wallet Shadow Score description: Public wallet trust profile with shadow score based on on-chain activity. operationId: wallet_shadow_score_wallet__address__get parameters: - name: address in: path required: true schema: type: string maxLength: 64 title: Address responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /billing/plans: get: tags: - billing summary: List Plans description: 'Public: return all available plans, free tier included. The free tier is described here but kept out of TIERS: everything in that dict resolves to a Stripe lookup_key, and a checkout for "free" has nothing to resolve. Listing it only on the pricing page while /plans showed three paid tiers left every machine reader believing there was no free tier.' operationId: list_plans_billing_plans_get responses: '200': description: Successful Response content: application/json: schema: {} /billing/checkout: post: tags: - billing summary: Create Checkout description: 'Create a Stripe Checkout Session. Returns {checkout_url} — redirect customer there.' operationId: create_checkout_billing_checkout_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CheckoutRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /billing/portal: post: tags: - billing summary: Customer Portal description: Create a Stripe Customer Portal session for self-service management. operationId: customer_portal_billing_portal_post requestBody: content: application/json: schema: $ref: '#/components/schemas/PortalRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /billing/subscription/{customer_id}: get: tags: - billing summary: Get Subscription description: Get current subscription status for a customer. operationId: get_subscription_billing_subscription__customer_id__get parameters: - name: customer_id in: path required: true schema: type: string title: Customer Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /billing/webhook: post: tags: - billing summary: Stripe Webhook description: 'Stripe sends signed events here. Verifies signature → updates billing tables via asyncpg pool.' operationId: stripe_webhook_billing_webhook_post parameters: - name: stripe-signature in: header required: false schema: type: string title: Stripe-Signature responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /aws/fulfillment: post: tags: - AWS Marketplace summary: Aws Fulfillment operationId: aws_fulfillment_aws_fulfillment_post requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Body_aws_fulfillment_aws_fulfillment_post' required: true responses: '200': description: Successful Response content: text/html: schema: type: string '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/billing/referrals: get: tags: - billing-admin summary: List Referrals description: 'Return subscription counts and MRR (CHF) grouped by referral_source. Requires x-admin-key header matching ADMIN_KEY env var.' operationId: list_referrals_admin_billing_referrals_get responses: '200': description: Successful Response content: application/json: schema: {} /reseller/login: post: tags: - reseller summary: Reseller Login operationId: reseller_login_reseller_login_post requestBody: content: application/json: schema: $ref: '#/components/schemas/LoginBody' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /reseller/me: get: tags: - reseller summary: Reseller Me operationId: reseller_me_reseller_me_get responses: '200': description: Successful Response content: application/json: schema: {} /reseller/logout: post: tags: - reseller summary: Reseller Logout operationId: reseller_logout_reseller_logout_post responses: '200': description: Successful Response content: application/json: schema: {} /reseller/agents: get: tags: - reseller summary: Reseller Agents operationId: reseller_agents_reseller_agents_get responses: '200': description: Successful Response content: application/json: schema: {} post: tags: - reseller summary: Reseller Onboard operationId: reseller_onboard_reseller_agents_post requestBody: content: application/json: schema: $ref: '#/components/schemas/OnboardBody' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /reseller/billing: get: tags: - reseller summary: Reseller Billing operationId: reseller_billing_reseller_billing_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/reseller/2fa/status: get: tags: - reseller-admin summary: Totp Status operationId: totp_status_admin_reseller_2fa_status_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/reseller/2fa/enroll: post: tags: - reseller-admin summary: Totp Enroll operationId: totp_enroll_admin_reseller_2fa_enroll_post responses: '200': description: Successful Response content: application/json: schema: {} /admin/reseller/2fa/confirm: post: tags: - reseller-admin summary: Totp Confirm operationId: totp_confirm_admin_reseller_2fa_confirm_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CodeBody' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/reseller/elevate: post: tags: - reseller-admin summary: Elevate operationId: elevate_admin_reseller_elevate_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CodeBody' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/reseller/list: get: tags: - reseller-admin summary: List Resellers operationId: list_resellers_admin_reseller_list_get responses: '200': description: Successful Response content: application/json: schema: {} /admin/reseller/tenant/{payer_ref}: get: tags: - reseller-admin summary: Reseller Detail operationId: reseller_detail_admin_reseller_tenant__payer_ref__get parameters: - name: payer_ref in: path required: true schema: type: string title: Payer Ref responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/reseller/create: post: tags: - reseller-admin summary: Admin Create Reseller operationId: admin_create_reseller_admin_reseller_create_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateBody' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/reseller/tenant/{payer_ref}/agents: post: tags: - reseller-admin summary: Admin Assign Agent operationId: admin_assign_agent_admin_reseller_tenant__payer_ref__agents_post parameters: - name: payer_ref in: path required: true schema: type: string title: Payer Ref requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssignBody' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /admin/reseller/tenant/{payer_ref}/invoice: post: tags: - reseller-admin summary: Admin Draft Invoice operationId: admin_draft_invoice_admin_reseller_tenant__payer_ref__invoice_post parameters: - name: payer_ref in: path required: true schema: type: string title: Payer Ref requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InvoiceBody' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /caep/pending/{did}: get: tags: - caep summary: Caep Pending description: Pending CAEP events for a DID. Free during Early Access. 120/h per DID. operationId: caep_pending_caep_pending__did__get parameters: - name: did in: path required: true schema: type: string title: Did - name: limit in: query required: false schema: type: integer maximum: 200 minimum: 1 default: 50 title: Limit - name: since in: query required: false schema: anyOf: - type: string - type: 'null' description: event_id cursor for pagination title: Since description: event_id cursor for pagination responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /caep/acknowledge/{event_id}: post: tags: - caep summary: Caep Acknowledge description: Mark a CAEP event as acknowledged. Only the DID the event was raised for. operationId: caep_acknowledge_caep_acknowledge__event_id__post parameters: - name: event_id in: path required: true schema: type: string title: Event Id - name: X-API-Key in: header required: true schema: type: string title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /.well-known/registry-key.json: get: tags: - caep summary: Well Known Registry Key description: Public Ed25519 registry key in JWK format. 1h cache. operationId: well_known_registry_key__well_known_registry_key_json_get responses: '200': description: Successful Response content: application/json: schema: {} /attestations/{attestation_id}: get: summary: Get Attestation description: 'Resolve a MolTrust behavioral_trust attestation by ID. Compatible with aeoess/agent-governance-vocabulary canonical signal format.' operationId: get_attestation_attestations__attestation_id__get parameters: - name: attestation_id in: path required: true schema: type: string title: Attestation Id - name: did in: query required: false schema: type: string title: Did responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /test-harness/endorse: post: tags: - Test Harness summary: Test Harness Endorse description: Record an endorsement via partner test harness. Requires partner-tier API key. operationId: test_harness_endorse_test_harness_endorse_post requestBody: content: application/json: schema: $ref: '#/components/schemas/TestHarnessEndorseRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /a2a: head: summary: A2A Discovery Hint operationId: a2a_discovery_hint_a2a_head responses: '200': description: Successful Response content: application/json: schema: {} get: summary: A2A Discovery Hint operationId: a2a_discovery_hint_a2a_head responses: '200': description: Successful Response content: application/json: schema: {} post: tags: - 'A2A: JSON-RPC' summary: A2A JSON-RPC endpoint description: 'A2A JSON-RPC 2.0 endpoint. The `method` field selects the operation; `params` must match that method''s schema (see the `oneOf` below). **Supported methods:** - `SendMessage` — Send a message to the agent (returns a Task or response Message). - `SendStreamingMessage` — Send a message and receive a Server-Sent Events stream. - `GetTask` — Fetch a task by ID. - `ListTasks` — List tasks with pagination and filtering. - `CancelTask` — Cancel an in-progress task. - `CreateTaskPushNotificationConfig` — Register a push-notification config on a task. - `GetTaskPushNotificationConfig` — Read a single push-notification config. - `ListTaskPushNotificationConfigs` — List all push-notification configs for a task. - `DeleteTaskPushNotificationConfig` — Delete a push-notification config. - `SubscribeToTask` — Subscribe to task events via Server-Sent Events. - `GetExtendedAgentCard` — Fetch the authenticated extended agent card. ' operationId: handle_requests_a2a_post responses: '200': description: Successful Response content: application/json: schema: {} requestBody: description: A2A JSON-RPC 2.0 request required: true content: application/json: schema: $ref: '#/components/schemas/A2ARequest' parameters: - in: header name: A2A-Version required: true schema: type: string enum: - '1.0' example: '1.0' /contact: post: summary: Contact Submit description: 'Accept one contact-form submission from moltrust.ch. Writes the row first, then tries to notify. A mail failure is recorded in `contact_inbox.mail_sent`, never allowed to discard the enquiry.' operationId: contact_submit_contact_post requestBody: content: application/json: schema: $ref: '#/components/schemas/ContactRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: AdminLoginRequest: properties: username: type: string maxLength: 32 title: Username password: type: string maxLength: 128 title: Password type: object required: - username - password title: AdminLoginRequest AgentClassRequest: properties: agent_class: type: string title: Agent Class description: 'One of: orchestrator, autonomous, human_initiated, copilot' agent_framework: anyOf: - type: string maxLength: 100 - type: 'null' title: Agent Framework description: e.g. langgraph, crewai, autogen agent_version: anyOf: - type: string maxLength: 50 - type: 'null' title: Agent Version publisher: anyOf: - type: string maxLength: 255 - type: 'null' title: Publisher type: object required: - agent_class title: AgentClassRequest AnchorsBatchRequest: properties: hashes: items: type: string type: array title: Hashes description: Hex sha256 leaf hashes (optionally 0x-prefixed) submit_onchain: type: boolean title: Submit Onchain description: Submit the Merkle root on-chain via the existing anchoring key default: false type: object required: - hashes title: AnchorsBatchRequest AssignBody: properties: did: type: string title: Did type: object required: - did title: AssignBody Body_aws_fulfillment_aws_fulfillment_post: properties: x-amzn-marketplace-token: type: string title: X-Amzn-Marketplace-Token type: object required: - x-amzn-marketplace-token title: Body_aws_fulfillment_aws_fulfillment_post BudgetCapRequest: properties: monthly_cap_chf: type: number minimum: 0.0 title: Monthly Cap Chf warning_threshold: type: number maximum: 1.0 minimum: 0.0 title: Warning Threshold default: 0.8 type: object required: - monthly_cap_chf title: BudgetCapRequest CheckoutRequest: properties: tier: type: string title: Tier currency: type: string title: Currency default: usd email: anyOf: - type: string format: email - type: 'null' title: Email agent_did: anyOf: - type: string - type: 'null' title: Agent Did payer_ref: anyOf: - type: string - type: 'null' title: Payer Ref ref: anyOf: - type: string - type: 'null' title: Ref description: Optional referral source tag (e.g. 'dsncon'). Stored on the subscription for attribution. success_url: type: string title: Success Url default: https://moltrust.ch/billing/success cancel_url: type: string title: Cancel Url default: https://moltrust.ch/billing/cancel type: object required: - tier title: CheckoutRequest ClaimOperatorRequest: properties: operator_did: type: string maxLength: 255 title: Operator Did type: object required: - operator_did title: ClaimOperatorRequest CodeBody: properties: code: type: string title: Code type: object required: - code title: CodeBody ComplianceAssessRequest: properties: did: anyOf: - type: string maxLength: 128 - type: 'null' title: Did description: Optional agent DID to attach the assessment to use_case: type: string maxLength: 2000 title: Use Case description: Description of the AI system's use case intended_purpose: type: string maxLength: 2000 title: Intended Purpose description: Intended purpose (Art 7(2)(a)) annex_iii_area: anyOf: - type: integer maximum: 8.0 minimum: 1.0 - type: 'null' title: Annex Iii Area description: Annex III area 1-8, if known is_annex_i_safety_component: type: boolean title: Is Annex I Safety Component default: false requires_third_party_conformity: type: boolean title: Requires Third Party Conformity default: false performs_profiling: type: boolean title: Performs Profiling default: false prohibited_flags: items: type: string type: array title: Prohibited Flags description: Self-declared Art 5(1) flags derogation_claim: anyOf: - type: string maxLength: 64 - type: 'null' title: Derogation Claim description: 'Art 6(3): narrow_procedural|improve_human_result|detect_patterns_no_replace|preparatory_task' interacts_with_humans: type: boolean title: Interacts With Humans default: false generates_synthetic_content: type: boolean title: Generates Synthetic Content default: false emotion_recognition: type: boolean title: Emotion Recognition default: false biometric_categorisation: type: boolean title: Biometric Categorisation default: false deep_fake: type: boolean title: Deep Fake default: false type: object required: - use_case - intended_purpose title: ComplianceAssessRequest ComplianceDeclarationRequest: properties: subject_did: type: string maxLength: 128 title: Subject Did description: DID of the AI system / agent ai_system_name: type: string maxLength: 255 title: Ai System Name ai_system_reference: type: string maxLength: 255 title: Ai System Reference provider_name: type: string maxLength: 255 title: Provider Name provider_address: type: string maxLength: 500 title: Provider Address conformity_with_other_union_law: anyOf: - type: string maxLength: 500 - type: 'null' title: Conformity With Other Union Law processes_personal_data: type: boolean title: Processes Personal Data default: false harmonised_standards: items: type: string type: array title: Harmonised Standards notified_body: anyOf: - $ref: '#/components/schemas/NotifiedBodyInput' - type: 'null' place_of_issue: type: string maxLength: 255 title: Place Of Issue signatory_name: type: string maxLength: 255 title: Signatory Name signatory_function: type: string maxLength: 255 title: Signatory Function on_behalf_of: type: string maxLength: 255 title: On Behalf Of anchor: type: boolean title: Anchor description: If true, return a content commitment (sha256) for later batch anchoring via /anchors/batch default: false type: object required: - subject_did - ai_system_name - ai_system_reference - provider_name - provider_address - place_of_issue - signatory_name - signatory_function - on_behalf_of title: ComplianceDeclarationRequest ComplianceIncidentRequest: properties: did: type: string maxLength: 128 title: Did category: type: string title: Category description: death|health_harm|critical_infrastructure|widespread_infringement|fundamental_rights|property_environment severity: type: string title: Severity default: high description: anyOf: - type: string maxLength: 4000 - type: 'null' title: Description awareness_date: anyOf: - type: string - type: 'null' title: Awareness Date description: ISO8601 UTC; defaults to now type: object required: - did - category title: ComplianceIncidentRequest ContactRequest: properties: name: type: string maxLength: 120 title: Name email: type: string maxLength: 254 title: Email topic: type: string maxLength: 64 title: Topic message: type: string maxLength: 5000 title: Message website: type: string maxLength: 256 title: Website default: '' type: object required: - name - email - topic - message title: ContactRequest description: 'A contact-form submission. ``website`` is the honeypot. It is named after a field a form-filling bot expects to find and will happily complete; the real form renders it hidden, empty and out of the tab order. It is never echoed back and never appears in an error message.' CreateBody: properties: login: type: string title: Login password: type: string title: Password wholesale_price_cents: type: integer title: Wholesale Price Cents display_name: anyOf: - type: string - type: 'null' title: Display Name email: anyOf: - type: string - type: 'null' title: Email vat_id: anyOf: - type: string - type: 'null' title: Vat Id type: object required: - login - password - wholesale_price_cents title: CreateBody CreditTransferRequest: properties: from_did: type: string maxLength: 128 title: From Did to_did: type: string maxLength: 128 title: To Did amount: type: integer minimum: 1.0 title: Amount reference: type: string maxLength: 256 title: Reference default: '' type: object required: - from_did - to_did - amount title: CreditTransferRequest DIDBridgeRequest: properties: external_did: type: string maxLength: 256 title: External Did moltrust_did: type: string maxLength: 128 title: Moltrust Did wallet_address: type: string maxLength: 64 title: Wallet Address chain: type: string maxLength: 20 title: Chain default: solana proof: type: string maxLength: 512 title: Proof nonce: type: string maxLength: 64 title: Nonce type: object required: - external_did - moltrust_did - wallet_address - proof - nonce title: DIDBridgeRequest DelegationChainRequest: properties: credential_chain: items: {} type: array title: Credential Chain type: object title: DelegationChainRequest DelegationCreateRequest: properties: delegator_did: type: string maxLength: 128 title: Delegator Did audience_did: type: string maxLength: 128 title: Audience Did capabilities: additionalProperties: true type: object title: Capabilities description: UCAN cap map {resource:{ability:[caveats]}} ttl_seconds: type: integer maximum: 31536000.0 minimum: 1.0 title: Ttl Seconds default: 3600 nonce: anyOf: - type: string maxLength: 128 - type: 'null' title: Nonce facts: anyOf: - additionalProperties: true type: object - type: 'null' title: Facts proofs: items: type: string type: array title: Proofs description: Embedded parent UCAN JWTs type: object required: - delegator_did - audience_did - capabilities title: DelegationCreateRequest DelegationVerifyRequest: properties: token: type: string maxLength: 100000 title: Token expected_audience: anyOf: - type: string maxLength: 128 - type: 'null' title: Expected Audience type: object required: - token title: DelegationVerifyRequest DepositRequest: properties: tx_hash: type: string maxLength: 70 minLength: 64 title: Tx Hash did: type: string maxLength: 128 title: Did type: object required: - tx_hash - did title: DepositRequest DidSignupRequest: properties: public_key: type: string maxLength: 128 title: Public Key challenge: type: string maxLength: 256 title: Challenge signature: type: string maxLength: 256 title: Signature pow_nonce: type: string maxLength: 64 title: Pow Nonce type: object required: - public_key - challenge - signature - pow_nonce title: DidSignupRequest ERC8004RegisterRequest: properties: name: type: string maxLength: 128 title: Name description: type: string maxLength: 1024 title: Description default: '' wallet_address: type: string maxLength: 64 title: Wallet Address platform: type: string maxLength: 64 title: Platform default: base type: object required: - name - wallet_address title: ERC8004RegisterRequest ERC8004ValidateRequest: properties: erc8004_agent_id: type: integer minimum: 0.0 title: Erc8004 Agent Id validation_type: type: string maxLength: 64 title: Validation Type default: trust_assessment type: object required: - erc8004_agent_id title: ERC8004ValidateRequest EndorseRequest: properties: api_key: type: string title: Api Key endorsed_did: type: string title: Endorsed Did skill: type: string title: Skill evidence_hash: type: string title: Evidence Hash evidence_timestamp: type: string title: Evidence Timestamp vertical: type: string title: Vertical type: object required: - api_key - endorsed_did - skill - evidence_hash - evidence_timestamp - vertical title: EndorseRequest FantasyLineupCommitRequest: properties: agent_did: type: string maxLength: 64 title: Agent Did contest_id: type: string maxLength: 256 title: Contest Id platform: type: string maxLength: 32 title: Platform sport: type: string maxLength: 32 title: Sport contest_type: anyOf: - type: string maxLength: 32 - type: 'null' title: Contest Type contest_start_iso: type: string maxLength: 30 title: Contest Start Iso entry_fee_usd: anyOf: - type: number minimum: 0.0 - type: 'null' title: Entry Fee Usd lineup: additionalProperties: true type: object title: Lineup projected_score: anyOf: - type: number - type: 'null' title: Projected Score confidence: anyOf: - type: number maximum: 1.0 minimum: 0.0 - type: 'null' title: Confidence type: object required: - agent_did - contest_id - platform - sport - contest_start_iso - lineup title: FantasyLineupCommitRequest FantasySettleRequest: properties: actual_score: type: number title: Actual Score rank: anyOf: - type: integer - type: 'null' title: Rank total_entries: anyOf: - type: integer - type: 'null' title: Total Entries prize_usd: anyOf: - type: number minimum: 0.0 - type: 'null' title: Prize Usd percentile: anyOf: - type: number maximum: 100.0 minimum: 0.0 - type: 'null' title: Percentile type: object required: - actual_score title: FantasySettleRequest HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError InteractionProofRequest: properties: api_key: type: string title: Api Key interaction_payload: additionalProperties: true type: object title: Interaction Payload type: object required: - api_key - interaction_payload title: InteractionProofRequest InvoiceBody: properties: finalize: type: boolean title: Finalize default: false type: object title: InvoiceBody IssueVCRequest: properties: subject_did: type: string maxLength: 128 title: Subject Did credential_type: type: string maxLength: 64 title: Credential Type default: AgentTrustCredential type: object required: - subject_did title: IssueVCRequest JournalAppendRequest: properties: text: type: string maxLength: 2000 title: Text date: type: string maxLength: 10 title: Date type: object required: - text title: JournalAppendRequest LightningInvoiceRequest: properties: amount_sats: type: integer maximum: 10000000.0 minimum: 1.0 title: Amount Sats description: type: string maxLength: 128 title: Description default: MolTrust type: object required: - amount_sats title: LightningInvoiceRequest LoginBody: properties: login: type: string title: Login password: type: string title: Password type: object required: - login - password title: LoginBody ManualSettleRequest: properties: result: type: string maxLength: 64 title: Result score: anyOf: - type: string maxLength: 32 - type: 'null' title: Score detail: anyOf: - additionalProperties: true type: object - type: 'null' title: Detail type: object required: - result title: ManualSettleRequest MoltbookAuthRequest: properties: token: type: string maxLength: 512 minLength: 10 title: Token type: object required: - token title: MoltbookAuthRequest MusicCredentialRequest: properties: agent_did: type: string maxLength: 128 title: Agent Did tool: type: string maxLength: 128 title: Tool human_oversight: type: string maxLength: 16 title: Human Oversight genre: type: string maxLength: 64 title: Genre rights: type: string maxLength: 64 title: Rights track_title: type: string maxLength: 256 title: Track Title track_description: type: string maxLength: 1024 title: Track Description human_name: type: string maxLength: 128 title: Human Name session: type: string maxLength: 128 title: Session isrc: type: string maxLength: 15 title: Isrc type: object required: - agent_did - tool - human_oversight - rights - track_title title: MusicCredentialRequest MusicRevokeRequest: properties: reason: type: string maxLength: 512 title: Reason type: object required: - reason title: MusicRevokeRequest NotifiedBodyInput: properties: name: type: string maxLength: 255 title: Name identification_number: type: string maxLength: 64 title: Identification Number procedure: type: string maxLength: 500 title: Procedure certificate: type: string maxLength: 255 title: Certificate type: object required: - name - identification_number - procedure - certificate title: NotifiedBodyInput OnboardBody: properties: did: type: string title: Did type: object required: - did title: OnboardBody PopRegisterRequest: properties: public_key: type: string maxLength: 64 minLength: 64 title: Public Key description: Ed25519 public key, 64 hex chars challenge: type: string maxLength: 256 title: Challenge description: Challenge from GET /identity/register-challenge signature: type: string maxLength: 256 title: Signature description: base64url Ed25519 signature over the challenge string pow_nonce: type: string maxLength: 64 title: Pow Nonce description: 'PoW nonce: sha256(pow_seed || nonce) must have >= difficulty_bits leading zero bits' display_name: type: string maxLength: 64 minLength: 1 title: Display Name default: anonymous platform: type: string maxLength: 32 title: Platform default: a2a type: object required: - public_key - challenge - signature - pow_nonce title: PopRegisterRequest PortalRequest: properties: customer_id: type: string title: Customer Id return_url: type: string title: Return Url default: https://moltrust.ch/dashboard type: object required: - customer_id title: PortalRequest PredictionCommitRequest: properties: agent_did: type: string maxLength: 128 title: Agent Did event_id: type: string maxLength: 256 title: Event Id prediction: additionalProperties: true type: object title: Prediction event_start: type: string maxLength: 30 title: Event Start type: object required: - agent_did - event_id - prediction - event_start title: PredictionCommitRequest RateRequest: properties: from_did: type: string maxLength: 128 title: From Did to_did: type: string maxLength: 128 title: To Did score: type: integer maximum: 5.0 minimum: 1.0 title: Score type: object required: - from_did - to_did - score title: RateRequest RegisterRequest: properties: display_name: type: string maxLength: 64 minLength: 1 title: Display Name default: anonymous platform: type: string maxLength: 32 title: Platform default: moltbook email: anyOf: - type: string maxLength: 256 - type: 'null' title: Email erc8004: type: boolean title: Erc8004 description: Also register on ERC-8004 IdentityRegistry on Base default: false type: object title: RegisterRequest ReputationBatchRequest: properties: dids: items: type: string type: array title: Dids description: DIDs to score (max 500) type: object required: - dids title: ReputationBatchRequest RevokeRequest: properties: reason: type: string maxLength: 100 title: Reason default: manual_revocation cascade: type: boolean title: Cascade description: Revoke all downstream delegated agents default: false type: object title: RevokeRequest ScoreImportRequest: properties: moltrust_did: type: string maxLength: 128 title: Moltrust Did external_did: type: string maxLength: 256 title: External Did external_score: type: number minimum: 0.0 title: External Score external_system: type: string maxLength: 32 title: External System proof: type: string maxLength: 512 title: Proof default: '' type: object required: - moltrust_did - external_did - external_score - external_system title: ScoreImportRequest SeedRequest: properties: did: type: string title: Did label: type: string title: Label base_score: type: number title: Base Score default: 80.0 type: object required: - did - label title: SeedRequest SignalProviderRegisterRequest: properties: agent_did: type: string maxLength: 128 title: Agent Did provider_name: type: string maxLength: 128 title: Provider Name provider_url: anyOf: - type: string maxLength: 512 - type: 'null' title: Provider Url sport_focus: items: type: string type: array title: Sport Focus description: anyOf: - type: string maxLength: 500 - type: 'null' title: Description type: object required: - agent_did - provider_name title: SignalProviderRegisterRequest SignupRequest: properties: email: type: string maxLength: 256 title: Email type: object required: - email title: SignupRequest SimpleBridgeRequest: properties: external_did: type: string maxLength: 256 title: External Did label: type: string maxLength: 128 title: Label default: '' platform: type: string maxLength: 32 title: Platform default: external type: object required: - external_did title: SimpleBridgeRequest SpiffeBindRequest: properties: spiffe_uri: type: string maxLength: 512 title: Spiffe Uri description: SPIFFE URI, e.g. spiffe://moltrust.ch/agent/scanner did: type: string maxLength: 128 title: Did description: MolTrust DID to bind to type: object required: - spiffe_uri - did title: SpiffeBindRequest TestHarnessEndorseRequest: properties: endorser_did: type: string maxLength: 256 title: Endorser Did target_did: type: string maxLength: 256 title: Target Did weight: type: number title: Weight default: 1.0 reason: anyOf: - type: string maxLength: 200 - type: 'null' title: Reason type: object required: - endorser_did - target_did title: TestHarnessEndorseRequest ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError VerifyVCRequest: properties: credential: additionalProperties: true type: object title: Credential type: object required: - credential title: VerifyVCRequest ViolationRecordRequest: properties: agent_did: type: string maxLength: 128 title: Agent Did principal_did: type: string maxLength: 128 title: Principal Did violation_type: type: string maxLength: 64 title: Violation Type interaction_proof_id: anyOf: - type: string maxLength: 128 - type: 'null' title: Interaction Proof Id description: anyOf: - type: string maxLength: 1024 - type: 'null' title: Description adjudicator_reference: anyOf: - type: string maxLength: 256 - type: 'null' title: Adjudicator Reference confirmed_at: type: string maxLength: 64 title: Confirmed At type: object required: - agent_did - principal_did - violation_type - confirmed_at title: ViolationRecordRequest ViolationReversalRequest: properties: adjudicator_reference: anyOf: - type: string maxLength: 256 - type: 'null' title: Adjudicator Reference reversal_date: anyOf: - type: string maxLength: 64 - type: 'null' title: Reversal Date type: object title: ViolationReversalRequest WalletBindRequest: properties: did: type: string maxLength: 128 title: Did wallet_address: type: string maxLength: 64 title: Wallet Address wallet_chain: type: string maxLength: 20 title: Wallet Chain default: base wallet_signature: type: string maxLength: 512 title: Wallet Signature nonce: type: string maxLength: 64 title: Nonce type: object required: - did - wallet_address - wallet_signature - nonce title: WalletBindRequest SendMessageRequest: type: object properties: tenant: type: string message: $ref: '#/components/schemas/Message' configuration: $ref: '#/components/schemas/SendMessageConfiguration' metadata: type: object Message: type: object properties: message_id: type: string context_id: type: string task_id: type: string role: type: string enum: - ROLE_UNSPECIFIED - ROLE_USER - ROLE_AGENT parts: type: array items: $ref: '#/components/schemas/Part' metadata: type: object extensions: type: array items: type: string reference_task_ids: type: array items: type: string Part: allOf: - type: object properties: metadata: type: object filename: type: string media_type: type: string - oneOf: - type: object properties: text: type: string required: - text - type: object properties: raw: type: string format: byte required: - raw - type: object properties: url: type: string required: - url - type: object properties: data: {} required: - data SendMessageConfiguration: type: object properties: accepted_output_modes: type: array items: type: string task_push_notification_config: $ref: '#/components/schemas/TaskPushNotificationConfig' history_length: type: integer format: int32 return_immediately: type: boolean TaskPushNotificationConfig: type: object properties: tenant: type: string id: type: string task_id: type: string url: type: string token: type: string authentication: $ref: '#/components/schemas/AuthenticationInfo' AuthenticationInfo: type: object properties: scheme: type: string credentials: type: string GetTaskRequest: type: object properties: tenant: type: string id: type: string history_length: type: integer format: int32 ListTasksRequest: type: object properties: tenant: type: string context_id: type: string status: type: string enum: - TASK_STATE_UNSPECIFIED - TASK_STATE_SUBMITTED - TASK_STATE_WORKING - TASK_STATE_COMPLETED - TASK_STATE_FAILED - TASK_STATE_CANCELED - TASK_STATE_INPUT_REQUIRED - TASK_STATE_REJECTED - TASK_STATE_AUTH_REQUIRED page_size: type: integer format: int32 page_token: type: string history_length: type: integer format: int32 status_timestamp_after: type: string format: date-time include_artifacts: type: boolean CancelTaskRequest: type: object properties: tenant: type: string id: type: string metadata: type: object GetTaskPushNotificationConfigRequest: type: object properties: tenant: type: string task_id: type: string id: type: string ListTaskPushNotificationConfigsRequest: type: object properties: tenant: type: string task_id: type: string page_size: type: integer format: int32 page_token: type: string DeleteTaskPushNotificationConfigRequest: type: object properties: tenant: type: string task_id: type: string id: type: string SubscribeToTaskRequest: type: object properties: tenant: type: string id: type: string GetExtendedAgentCardRequest: type: object properties: tenant: type: string A2ARequest: type: object required: - jsonrpc - method properties: jsonrpc: type: string enum: - '2.0' id: oneOf: - type: string - type: integer - type: 'null' method: type: string enum: - SendMessage - SendStreamingMessage - GetTask - ListTasks - CancelTask - CreateTaskPushNotificationConfig - GetTaskPushNotificationConfig - ListTaskPushNotificationConfigs - DeleteTaskPushNotificationConfig - SubscribeToTask - GetExtendedAgentCard params: oneOf: - $ref: '#/components/schemas/SendMessageRequest' - $ref: '#/components/schemas/GetTaskRequest' - $ref: '#/components/schemas/ListTasksRequest' - $ref: '#/components/schemas/CancelTaskRequest' - $ref: '#/components/schemas/TaskPushNotificationConfig' - $ref: '#/components/schemas/GetTaskPushNotificationConfigRequest' - $ref: '#/components/schemas/ListTaskPushNotificationConfigsRequest' - $ref: '#/components/schemas/DeleteTaskPushNotificationConfigRequest' - $ref: '#/components/schemas/SubscribeToTaskRequest' - $ref: '#/components/schemas/GetExtendedAgentCardRequest' x-api-evangelist: source: https://api.moltrust.ch/openapi.json fetched: '2026-09-19' http_status: 200 content_type: application/json bytes: 139638 original: openapi/_original/moltrust-ch-openapi.json changes: Serialised to YAML and a servers[] block added from the provider docs; nothing else altered. See overlays/moltrust-ch-openapi-overlay.yaml for the securitySchemes/tag enhancements applied as an OpenAPI Overlay rather than by mutation.