{
  "openapi": "3.1.0",
  "info": {
    "title": "NeuraPay Public Advisor",
    "version": "2.0.0",
    "description": "Public, read-only product advice, pricing and aggregate demo availability. No authentication, customer data, bookings, emails, payments or account creation. Rate limited to 120 requests per client per hour; errors are not results."
  },
  "servers": [
    {
      "url": "https://www.neurapay.ai"
    }
  ],
  "security": [],
  "externalDocs": {
    "url": "https://www.neurapay.ai/agents/"
  },
  "paths": {
    "/api/advisor": {
      "post": {
        "operationId": "callPublicAdvisorTool",
        "summary": "Run one of the five read-only public advisor tools",
        "description": "Tool arguments use the schemas below. Unknown fields and tools are rejected. Maximum JSON body: 16384 bytes. Handoff URLs never submit anything; the visitor must review and confirm on the website.",
        "security": [],
        "x-readOnly": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "tool": {
                        "const": "get_product_info"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "topic": {
                            "type": "string",
                            "enum": [
                              "overview",
                              "integrations",
                              "onboarding",
                              "roles"
                            ]
                          },
                          "locale": {
                            "type": "string",
                            "enum": [
                              "de",
                              "en",
                              "fr",
                              "it",
                              "es"
                            ]
                          }
                        },
                        "required": [
                          "topic",
                          "locale"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "tool": {
                        "const": "get_pricing_catalog"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "locale": {
                            "type": "string",
                            "enum": [
                              "de",
                              "en",
                              "fr",
                              "it",
                              "es"
                            ]
                          }
                        },
                        "required": [
                          "locale"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "tool": {
                        "const": "recommend_plan"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cases": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 100000,
                            "description": "New debt-collection cases handed over per CONTRACT YEAR; not monthly cases, all invoices or ongoing case-months."
                          },
                          "volumePeriod": {
                            "anyOf": [
                              {
                                "type": "string",
                                "const": "year"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "users": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 1000
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "billing": {
                            "anyOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "monthly"
                                ]
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "capabilities": {
                            "anyOf": [
                              {
                                "maxItems": 5,
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "bexio",
                                    "abacus",
                                    "dynamics365",
                                    "rest_api",
                                    "white_label"
                                  ]
                                }
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "locale": {
                            "type": "string",
                            "enum": [
                              "de",
                              "en",
                              "fr",
                              "it",
                              "es"
                            ]
                          }
                        },
                        "required": [
                          "cases",
                          "locale"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "tool": {
                        "const": "get_demo_availability"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "dateFrom": {
                            "type": "string",
                            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                          },
                          "dateTo": {
                            "type": "string",
                            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                          },
                          "timeZone": {
                            "type": "string",
                            "maxLength": 80
                          },
                          "selection": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "plan": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "enum": [
                                          "starter",
                                          "professional",
                                          "business"
                                        ]
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "billing": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "enum": [
                                          "monthly"
                                        ]
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "cases": {
                                    "anyOf": [
                                      {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 100000,
                                        "description": "New debt-collection cases handed over per CONTRACT YEAR; not monthly cases, all invoices or ongoing case-months."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "volumePeriod": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "year"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "users": {
                                    "anyOf": [
                                      {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 1000
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "capabilities": {
                                    "anyOf": [
                                      {
                                        "maxItems": 5,
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "enum": [
                                            "bexio",
                                            "abacus",
                                            "dynamics365",
                                            "rest_api",
                                            "white_label"
                                          ]
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "locale": {
                            "type": "string",
                            "enum": [
                              "de",
                              "en",
                              "fr",
                              "it",
                              "es"
                            ]
                          }
                        },
                        "required": [
                          "dateFrom",
                          "dateTo",
                          "timeZone",
                          "selection",
                          "locale"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ]
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "tool": {
                        "const": "prepare_handoff"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "destination": {
                            "type": "string",
                            "enum": [
                              "start",
                              "sales",
                              "demo",
                              "plan"
                            ]
                          },
                          "selection": {
                            "type": "object",
                            "properties": {
                              "plan": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "enum": [
                                      "starter",
                                      "professional",
                                      "business"
                                    ]
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "billing": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "enum": [
                                      "monthly"
                                    ]
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "cases": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 100000,
                                    "description": "New debt-collection cases handed over per CONTRACT YEAR; not monthly cases, all invoices or ongoing case-months."
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "volumePeriod": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "year"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "users": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 1000
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "capabilities": {
                                "anyOf": [
                                  {
                                    "maxItems": 5,
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "enum": [
                                        "bexio",
                                        "abacus",
                                        "dynamics365",
                                        "rest_api",
                                        "white_label"
                                      ]
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "additionalProperties": false
                          },
                          "locale": {
                            "type": "string",
                            "enum": [
                              "de",
                              "en",
                              "fr",
                              "it",
                              "es"
                            ]
                          }
                        },
                        "required": [
                          "destination",
                          "selection",
                          "locale"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ]
                  }
                ]
              },
              "example": {
                "tool": "recommend_plan",
                "arguments": {
                  "cases": 6001,
                  "volumePeriod": "year",
                  "billing": "monthly",
                  "capabilities": [],
                  "locale": "en"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Validated public result. Prices are CHF estimates with separate terms and exclusions. Free slots are not reservations.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON, arguments, date range or unknown tool",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "actionTaken": {
                      "const": false
                    }
                  },
                  "required": [
                    "error",
                    "actionTaken"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "403": {
            "description": "Untrusted host or browser origin",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "actionTaken": {
                      "const": false
                    }
                  },
                  "required": [
                    "error",
                    "actionTaken"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "405": {
            "description": "Use POST",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "actionTaken": {
                      "const": false
                    }
                  },
                  "required": [
                    "error",
                    "actionTaken"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "413": {
            "description": "Request exceeds 16384 bytes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "actionTaken": {
                      "const": false
                    }
                  },
                  "required": [
                    "error",
                    "actionTaken"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "415": {
            "description": "Use application/json",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "actionTaken": {
                      "const": false
                    }
                  },
                  "required": [
                    "error",
                    "actionTaken"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "429": {
            "description": "Rate limited; respect Retry-After",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "actionTaken": {
                      "const": false
                    }
                  },
                  "required": [
                    "error",
                    "actionTaken"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer",
                  "example": 3600
                }
              }
            }
          },
          "503": {
            "description": "Provider or rate-limit service unavailable; do not invent a result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "actionTaken": {
                      "const": false
                    }
                  },
                  "required": [
                    "error",
                    "actionTaken"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    }
  }
}
