{
  "service": "ninox",
  "displayName": "Ninox",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Personal Access Token",
      "placeholder": "ninox_pat",
      "description": "Ninox Personal Access Token used with the Authorization Bearer header. View and manage it in Admin settings > Personal Access Tokens in the Ninox web app, as described in the official API introduction: https://forum.ninox.com/t/83yzlg7/introduction-to-ninox-api",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://ninox.com",
  "actions": [
    {
      "id": "ninox.delete_record",
      "service": "ninox",
      "name": "delete_record",
      "description": "Delete one Ninox record by record ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          },
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox table identifier.",
            "pattern": "\\S"
          },
          "recordId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Ninox record identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId",
          "tableId",
          "recordId"
        ],
        "description": "The input payload for deleting one Ninox record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean",
            "description": "Whether the target Ninox record was deleted."
          }
        },
        "additionalProperties": false,
        "required": [
          "deleted"
        ],
        "description": "The response returned when deleting one Ninox record."
      }
    },
    {
      "id": "ninox.delete_records",
      "service": "ninox",
      "name": "delete_records",
      "description": "Delete multiple Ninox records from the same table.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          },
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox table identifier.",
            "pattern": "\\S"
          },
          "recordIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "The Ninox record identifier."
            },
            "description": "The Ninox record IDs to delete.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId",
          "tableId",
          "recordIds"
        ],
        "description": "The input payload for deleting multiple Ninox records."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deletedCount": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of Ninox record IDs submitted for deletion."
          }
        },
        "additionalProperties": false,
        "required": [
          "deletedCount"
        ],
        "description": "The response returned when deleting multiple Ninox records."
      }
    },
    {
      "id": "ninox.get_database",
      "service": "ninox",
      "name": "get_database",
      "description": "Get Ninox schema metadata for one database.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId"
        ],
        "description": "Input parameters that identify one Ninox database."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "database": {
            "type": "object",
            "properties": {
              "settings": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "A loose object returned by Ninox."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "schema": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "A loose object returned by Ninox."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A loose object returned by Ninox."
              }
            },
            "additionalProperties": false,
            "required": [
              "settings",
              "schema",
              "raw"
            ],
            "description": "A Ninox database schema wrapper."
          }
        },
        "additionalProperties": false,
        "required": [
          "database"
        ],
        "description": "The response returned when reading one Ninox database schema."
      }
    },
    {
      "id": "ninox.get_record",
      "service": "ninox",
      "name": "get_record",
      "description": "Get one Ninox record by record ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          },
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox table identifier.",
            "pattern": "\\S"
          },
          "recordId": {
            "type": "integer",
            "minimum": 1,
            "description": "The Ninox record identifier."
          },
          "choiceStyle": {
            "type": "string",
            "enum": [
              "ids",
              "names"
            ],
            "description": "How Ninox should render choice or date values in the response."
          },
          "style": {
            "type": "string",
            "enum": [
              "ids",
              "names"
            ],
            "description": "How Ninox should render choice or date values in the response."
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId",
          "tableId",
          "recordId"
        ],
        "description": "The input payload for reading one Ninox record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "The Ninox record identifier."
              },
              "sequence": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The Ninox record sequence when Ninox returns one."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The record creation timestamp when Ninox returns one."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdBy": {
                "description": "The record creator identifier when Ninox returns one."
              },
              "modifiedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The record modification timestamp when Ninox returns one."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "modifiedBy": {
                "description": "The record modifier identifier when Ninox returns one."
              },
              "fields": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Record field values keyed by Ninox field name or field identifier."
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A loose object returned by Ninox."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "sequence",
              "createdAt",
              "createdBy",
              "modifiedAt",
              "modifiedBy",
              "fields",
              "raw"
            ],
            "description": "A normalized Ninox record."
          }
        },
        "additionalProperties": false,
        "required": [
          "record"
        ],
        "description": "The response returned when reading one Ninox record."
      }
    },
    {
      "id": "ninox.get_table",
      "service": "ninox",
      "name": "get_table",
      "description": "Get Ninox schema metadata for one table.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          },
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox table identifier.",
            "pattern": "\\S"
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId",
          "tableId"
        ],
        "description": "Input parameters that identify one Ninox table."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "table": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Ninox table identifier.",
                "pattern": "\\S"
              },
              "name": {
                "type": "string",
                "description": "The Ninox table name."
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The field identifier when Ninox returns one."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "name": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The field name when Ninox returns one."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "type": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "The field type when Ninox returns one."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "choices": {
                      "anyOf": [
                        {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "description": "The choice identifier when Ninox returns one."
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "caption": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "description": "The display caption of the choice when Ninox returns one."
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "captions": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {},
                                    "additionalProperties": true,
                                    "description": "A loose object returned by Ninox."
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "raw": {
                                "type": "object",
                                "properties": {},
                                "additionalProperties": true,
                                "description": "A loose object returned by Ninox."
                              }
                            },
                            "additionalProperties": false,
                            "required": [
                              "id",
                              "caption",
                              "captions",
                              "raw"
                            ],
                            "description": "A Ninox table field choice."
                          },
                          "description": "The field choices returned by Ninox."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "raw": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true,
                      "description": "A loose object returned by Ninox."
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "name",
                    "type",
                    "choices",
                    "raw"
                  ],
                  "description": "A Ninox table field summary."
                },
                "description": "The Ninox table fields."
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A loose object returned by Ninox."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "fields",
              "raw"
            ],
            "description": "A Ninox table schema summary."
          }
        },
        "additionalProperties": false,
        "required": [
          "table"
        ],
        "description": "The response returned when reading one Ninox table schema."
      }
    },
    {
      "id": "ninox.get_workspace",
      "service": "ninox",
      "name": "get_workspace",
      "description": "Get one Ninox workspace by workspace ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId"
        ],
        "description": "Input parameters that identify one Ninox workspace."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "workspace": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Ninox workspace identifier.",
                "pattern": "\\S"
              },
              "name": {
                "type": "string",
                "description": "The Ninox workspace name."
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A loose object returned by Ninox."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "raw"
            ],
            "description": "A Ninox workspace summary."
          }
        },
        "additionalProperties": false,
        "required": [
          "workspace"
        ],
        "description": "The response returned when reading one Ninox workspace."
      }
    },
    {
      "id": "ninox.list_databases",
      "service": "ninox",
      "name": "list_databases",
      "description": "List Ninox databases inside one workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId"
        ],
        "description": "Input parameters that identify one Ninox workspace."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "databases": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Ninox database identifier.",
                  "pattern": "\\S"
                },
                "name": {
                  "type": "string",
                  "description": "The Ninox database name."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A loose object returned by Ninox."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "raw"
              ],
              "description": "A Ninox database summary."
            },
            "description": "The databases returned by Ninox."
          }
        },
        "additionalProperties": false,
        "required": [
          "databases"
        ],
        "description": "The response returned when listing Ninox databases."
      }
    },
    {
      "id": "ninox.list_records",
      "service": "ninox",
      "name": "list_records",
      "description": "List records from one Ninox table.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          },
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox table identifier.",
            "pattern": "\\S"
          },
          "choiceStyle": {
            "type": "string",
            "enum": [
              "ids",
              "names"
            ],
            "description": "How Ninox should render choice or date values in the response."
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId",
          "tableId"
        ],
        "description": "The input payload for listing Ninox records."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "records": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Ninox record identifier."
                },
                "sequence": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The Ninox record sequence when Ninox returns one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The record creation timestamp when Ninox returns one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdBy": {
                  "description": "The record creator identifier when Ninox returns one."
                },
                "modifiedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The record modification timestamp when Ninox returns one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "modifiedBy": {
                  "description": "The record modifier identifier when Ninox returns one."
                },
                "fields": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Record field values keyed by Ninox field name or field identifier."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A loose object returned by Ninox."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "sequence",
                "createdAt",
                "createdBy",
                "modifiedAt",
                "modifiedBy",
                "fields",
                "raw"
              ],
              "description": "A normalized Ninox record."
            },
            "description": "The records returned by Ninox."
          }
        },
        "additionalProperties": false,
        "required": [
          "records"
        ],
        "description": "The response returned when listing Ninox records."
      }
    },
    {
      "id": "ninox.list_tables",
      "service": "ninox",
      "name": "list_tables",
      "description": "List Ninox tables for one database.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId"
        ],
        "description": "Input parameters that identify one Ninox database."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "tables": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Ninox table identifier.",
                  "pattern": "\\S"
                },
                "name": {
                  "type": "string",
                  "description": "The Ninox table name."
                },
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "anyOf": [
                          {
                            "type": "string",
                            "description": "The field identifier when Ninox returns one."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "name": {
                        "anyOf": [
                          {
                            "type": "string",
                            "description": "The field name when Ninox returns one."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "description": "The field type when Ninox returns one."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "choices": {
                        "anyOf": [
                          {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "The choice identifier when Ninox returns one."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "caption": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "The display caption of the choice when Ninox returns one."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "captions": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {},
                                      "additionalProperties": true,
                                      "description": "A loose object returned by Ninox."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "raw": {
                                  "type": "object",
                                  "properties": {},
                                  "additionalProperties": true,
                                  "description": "A loose object returned by Ninox."
                                }
                              },
                              "additionalProperties": false,
                              "required": [
                                "id",
                                "caption",
                                "captions",
                                "raw"
                              ],
                              "description": "A Ninox table field choice."
                            },
                            "description": "The field choices returned by Ninox."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "raw": {
                        "type": "object",
                        "properties": {},
                        "additionalProperties": true,
                        "description": "A loose object returned by Ninox."
                      }
                    },
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "name",
                      "type",
                      "choices",
                      "raw"
                    ],
                    "description": "A Ninox table field summary."
                  },
                  "description": "The Ninox table fields."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A loose object returned by Ninox."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "fields",
                "raw"
              ],
              "description": "A Ninox table schema summary."
            },
            "description": "The tables returned by Ninox."
          }
        },
        "additionalProperties": false,
        "required": [
          "tables"
        ],
        "description": "The response returned when listing Ninox tables."
      }
    },
    {
      "id": "ninox.list_workspaces",
      "service": "ninox",
      "name": "list_workspaces",
      "description": "List Ninox workspaces available to the authenticated Personal Access Token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for listing Ninox workspaces."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "workspaces": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Ninox workspace identifier.",
                  "pattern": "\\S"
                },
                "name": {
                  "type": "string",
                  "description": "The Ninox workspace name."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A loose object returned by Ninox."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "raw"
              ],
              "description": "A Ninox workspace summary."
            },
            "description": "The workspaces returned by Ninox."
          }
        },
        "additionalProperties": false,
        "required": [
          "workspaces"
        ],
        "description": "The response returned when listing Ninox workspaces."
      }
    },
    {
      "id": "ninox.save_records",
      "service": "ninox",
      "name": "save_records",
      "description": "Create new Ninox records or update existing ones in the same table using the native POST /records endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          },
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox table identifier.",
            "pattern": "\\S"
          },
          "records": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Ninox record identifier."
                },
                "fields": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Record field values keyed by Ninox field name or field identifier."
                }
              },
              "additionalProperties": false,
              "required": [
                "fields"
              ],
              "description": "One Ninox record write payload."
            },
            "description": "The records to create or update in Ninox.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId",
          "tableId",
          "records"
        ],
        "description": "The input payload for creating or updating Ninox records."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "records": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The Ninox record identifier."
                },
                "sequence": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The Ninox record sequence when Ninox returns one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The record creation timestamp when Ninox returns one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdBy": {
                  "description": "The record creator identifier when Ninox returns one."
                },
                "modifiedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The record modification timestamp when Ninox returns one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "modifiedBy": {
                  "description": "The record modifier identifier when Ninox returns one."
                },
                "fields": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Record field values keyed by Ninox field name or field identifier."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A loose object returned by Ninox."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "sequence",
                "createdAt",
                "createdBy",
                "modifiedAt",
                "modifiedBy",
                "fields",
                "raw"
              ],
              "description": "A normalized Ninox record."
            },
            "description": "The records returned by Ninox after saving."
          }
        },
        "additionalProperties": false,
        "required": [
          "records"
        ],
        "description": "The response returned when saving Ninox records."
      }
    },
    {
      "id": "ninox.search_record",
      "service": "ninox",
      "name": "search_record",
      "description": "Find a single Ninox record by filters in one table.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox workspace identifier.",
            "pattern": "\\S"
          },
          "databaseId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox database identifier.",
            "pattern": "\\S"
          },
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ninox table identifier.",
            "pattern": "\\S"
          },
          "filters": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Filters keyed by Ninox field identifier or field name for single-record lookup."
          },
          "style": {
            "type": "string",
            "enum": [
              "ids",
              "names"
            ],
            "description": "How Ninox should render choice or date values in the response."
          },
          "dateStyle": {
            "type": "string",
            "enum": [
              "ids",
              "names"
            ],
            "description": "How Ninox should render choice or date values in the response."
          },
          "choiceStyle": {
            "type": "string",
            "enum": [
              "ids",
              "names"
            ],
            "description": "How Ninox should render choice or date values in the response."
          }
        },
        "additionalProperties": false,
        "required": [
          "teamId",
          "databaseId",
          "tableId",
          "filters"
        ],
        "description": "The input payload for searching one Ninox record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The Ninox record identifier."
                  },
                  "sequence": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "description": "The Ninox record sequence when Ninox returns one."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "createdAt": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "The record creation timestamp when Ninox returns one."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "createdBy": {
                    "description": "The record creator identifier when Ninox returns one."
                  },
                  "modifiedAt": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "The record modification timestamp when Ninox returns one."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "modifiedBy": {
                    "description": "The record modifier identifier when Ninox returns one."
                  },
                  "fields": {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "Record field values keyed by Ninox field name or field identifier."
                  },
                  "raw": {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "A loose object returned by Ninox."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "id",
                  "sequence",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "fields",
                  "raw"
                ],
                "description": "A normalized Ninox record."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "record"
        ],
        "description": "The response returned when searching one Ninox record."
      }
    }
  ]
}
