@norbix.ai/mcp 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -6
- package/dist/manifest/dtos.api.json +254 -2
- package/dist/manifest/dtos.hub.json +259 -2
- package/dist/manifest/endpoints.json +25 -0
- package/dist/server.js +68 -2
- package/package.json +3 -3
- package/dist/manifest/manifest/dtos.api.json +0 -4624
- package/dist/manifest/manifest/dtos.hub.json +0 -28142
- package/dist/manifest/manifest/endpoints.json +0 -7783
package/README.md
CHANGED
|
@@ -165,8 +165,8 @@ NORBIX_HUB_URL=https://hub.norbix.ai norbix-mcp --http --port 3010
|
|
|
165
165
|
`norbix_get_integrations`, `norbix_get_integration`, `norbix_save_integration`,
|
|
166
166
|
`norbix_test_integration`, `norbix_get_marketplace_integrations`,
|
|
167
167
|
`norbix_save_marketplace_integration`, `norbix_get_database_schemas`,
|
|
168
|
-
`norbix_find_documents`, `
|
|
169
|
-
`norbix_get_taxonomy_terms`, `norbix_get_roles`, `norbix_get_policies`,
|
|
168
|
+
`norbix_find_documents`, `norbix_find_one_document`, `norbix_insert_document`,
|
|
169
|
+
`norbix_update_document`, `norbix_get_taxonomy_terms`, `norbix_get_roles`, `norbix_get_policies`,
|
|
170
170
|
`norbix_get_logs`, `norbix_list_service_api_keys`.
|
|
171
171
|
|
|
172
172
|
Typical flow the model follows for anything not curated:
|
|
@@ -192,7 +192,7 @@ The scheduler module switch (`enableScheduler` / `disableScheduler`) is `PUT`.
|
|
|
192
192
|
|
|
193
193
|
## Database tools
|
|
194
194
|
|
|
195
|
-
|
|
195
|
+
Six shortcuts cover the everyday database work. Everything else in the
|
|
196
196
|
Database module (95 endpoints: schemas and drafts, records, taxonomies and
|
|
197
197
|
terms, triggers, aggregates, database integrations) is reached with the
|
|
198
198
|
generic trio.
|
|
@@ -200,13 +200,14 @@ generic trio.
|
|
|
200
200
|
| Tool | SDK method | Route | Input |
|
|
201
201
|
| --- | --- | --- | --- |
|
|
202
202
|
| `norbix_get_database_schemas` | `hub.database.getDatabaseSchemas` | `GET /{version}/database/schemas` | `body` (paging) |
|
|
203
|
-
| `norbix_find_documents` | `api.database.find` | `GET /{version}/database/collections/{collectionName}` | `
|
|
203
|
+
| `norbix_find_documents` | `api.database.find` | `GET /{version}/database/collections/{collectionName}` | `collectionName`, `filter?`, `sortBy?`, `sortOrder?`, `pageSize?`, `startingAfter?`, `endingBefore?`, `expandReferences?`, `databaseIntegrationId?`, `body?` (any other `FindRequest` field) |
|
|
204
|
+
| `norbix_find_one_document` | `api.database.findOne` | `GET /{version}/database/collections/{collectionName}/{id}` | `collectionName`, `id`, `expandReferences?`, `databaseIntegrationId?` |
|
|
204
205
|
| `norbix_insert_document` | `api.database.insertOne` | `POST /{version}/database/collections/{collectionName}` | `collectionName`, `document`, `databaseIntegrationId?` |
|
|
205
|
-
| `norbix_update_document` | `api.database.updateOne` | `PUT /{version}/database/collections/{collectionName}/{id}` | `collectionName`, `id`, `update`, `databaseIntegrationId?` |
|
|
206
|
+
| `norbix_update_document` | `api.database.updateOne` | `PUT /{version}/database/collections/{collectionName}/{id}` | `collectionName`, `id`, `update`, `arrayFilters?`, `databaseIntegrationId?` |
|
|
206
207
|
| `norbix_get_taxonomy_terms` | `api.database.findTerms` | `GET /{version}/database/taxonomies/{taxonomyName}/terms` | `taxonomyName`, `filter?`, `pageSize?`, `sortDescending?`, `databaseIntegrationId?` |
|
|
207
208
|
|
|
208
209
|
The Api record endpoints expect the document, the update and the filter as a
|
|
209
|
-
JSON **string**. The
|
|
210
|
+
JSON **string**. The typed shortcuts accept an object or a string and
|
|
210
211
|
send the string, so this works in one call:
|
|
211
212
|
|
|
212
213
|
```json
|
|
@@ -225,6 +226,31 @@ A `$` operator in it (`$set`, `$inc`, …) is refused with
|
|
|
225
226
|
filter `{}` is refused (`CM-ERRORS-DATABASE-037`) unless the body also has
|
|
226
227
|
`allRecords: true`.
|
|
227
228
|
|
|
229
|
+
**References.** A `user`, `role`, `taxonomy` (term), `collection` or `file`
|
|
230
|
+
field stores ids. Pass `expandReferences: true` to `norbix_find_documents` or
|
|
231
|
+
`norbix_find_one_document` and each such field comes back as
|
|
232
|
+
`{ "id": "…", "display": … }` (an array of them when the field is multiple):
|
|
233
|
+
|
|
234
|
+
```json
|
|
235
|
+
{ "name": "norbix_find_one_document", "arguments": {
|
|
236
|
+
"collectionName": "posts", "id": "…", "expandReferences": true } }
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
```json
|
|
240
|
+
{ "author": { "id": "usr_…", "display": "Jane Doe" },
|
|
241
|
+
"tags": [ { "id": "6650…", "display": { "title": { "en": "News" }, "slug": "news" } },
|
|
242
|
+
{ "id": "6651…", "display": null } ] }
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
`display` is the target's `displayField` (a user property, a role name, a
|
|
246
|
+
term's title and slug, a record's chosen field). It is `null` when the target
|
|
247
|
+
is gone **or** when your API key may not read the target — the two cases look
|
|
248
|
+
the same on purpose. Default is off: the stored ids only.
|
|
249
|
+
|
|
250
|
+
**Arrays inside a document.** `norbix_update_document` takes `arrayFilters`
|
|
251
|
+
for positional paths: `update: { "items.$[i].qty": 2 }` with
|
|
252
|
+
`arrayFilters: [ { "i.sku": "A1" } ]`.
|
|
253
|
+
|
|
228
254
|
For anything else, search the `database` group:
|
|
229
255
|
|
|
230
256
|
- `norbix_search_endpoints({ query: "taxonomy term", group: "database" })`
|
|
@@ -275,6 +301,12 @@ is written as `feat(...)` with a `Breaking: <what>` line in the body (a
|
|
|
275
301
|
is the source of truth for the version; release notes are on the GitHub
|
|
276
302
|
Releases page.
|
|
277
303
|
|
|
304
|
+
The commit analyzer reads only the **start** of each subject, so a step
|
|
305
|
+
number goes at the end (`feat(database): expand references — step 2`),
|
|
306
|
+
never in front of the type: `[2] feat(database): …` is read as "no
|
|
307
|
+
release". Pull request 10 (the schema-content contract) shipped that way
|
|
308
|
+
and needed this follow-up commit to publish 0.3.0.
|
|
309
|
+
|
|
278
310
|
## Security notes
|
|
279
311
|
|
|
280
312
|
- The server can do exactly what the API key can do — nothing more. Scope the
|
|
@@ -1183,6 +1183,11 @@
|
|
|
1183
1183
|
"type": "{ [index: string]: string }",
|
|
1184
1184
|
"optional": true
|
|
1185
1185
|
},
|
|
1186
|
+
{
|
|
1187
|
+
"name": "slug",
|
|
1188
|
+
"type": "string",
|
|
1189
|
+
"optional": true
|
|
1190
|
+
},
|
|
1186
1191
|
{
|
|
1187
1192
|
"name": "description",
|
|
1188
1193
|
"type": "string",
|
|
@@ -1283,6 +1288,11 @@
|
|
|
1283
1288
|
"type": "{ [index: string]: string }",
|
|
1284
1289
|
"optional": true
|
|
1285
1290
|
},
|
|
1291
|
+
{
|
|
1292
|
+
"name": "slug",
|
|
1293
|
+
"type": "string",
|
|
1294
|
+
"optional": true
|
|
1295
|
+
},
|
|
1286
1296
|
{
|
|
1287
1297
|
"name": "description",
|
|
1288
1298
|
"type": "string",
|
|
@@ -1791,6 +1801,16 @@
|
|
|
1791
1801
|
"name": "translateOptions",
|
|
1792
1802
|
"type": "IReadOnlyDictionary<string, string>",
|
|
1793
1803
|
"optional": true
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
"name": "default",
|
|
1807
|
+
"type": "string",
|
|
1808
|
+
"optional": true
|
|
1809
|
+
},
|
|
1810
|
+
{
|
|
1811
|
+
"name": "unique",
|
|
1812
|
+
"type": "boolean",
|
|
1813
|
+
"optional": true
|
|
1794
1814
|
}
|
|
1795
1815
|
]
|
|
1796
1816
|
},
|
|
@@ -1811,6 +1831,31 @@
|
|
|
1811
1831
|
"name": "multipleOf",
|
|
1812
1832
|
"type": "number",
|
|
1813
1833
|
"optional": true
|
|
1834
|
+
},
|
|
1835
|
+
{
|
|
1836
|
+
"name": "default",
|
|
1837
|
+
"type": "number",
|
|
1838
|
+
"optional": true
|
|
1839
|
+
},
|
|
1840
|
+
{
|
|
1841
|
+
"name": "unique",
|
|
1842
|
+
"type": "boolean",
|
|
1843
|
+
"optional": true
|
|
1844
|
+
}
|
|
1845
|
+
]
|
|
1846
|
+
},
|
|
1847
|
+
"CurrencyDefaultDto": {
|
|
1848
|
+
"base": null,
|
|
1849
|
+
"fields": [
|
|
1850
|
+
{
|
|
1851
|
+
"name": "value",
|
|
1852
|
+
"type": "number",
|
|
1853
|
+
"optional": false
|
|
1854
|
+
},
|
|
1855
|
+
{
|
|
1856
|
+
"name": "currency",
|
|
1857
|
+
"type": "string",
|
|
1858
|
+
"optional": false
|
|
1814
1859
|
}
|
|
1815
1860
|
]
|
|
1816
1861
|
},
|
|
@@ -1821,12 +1866,38 @@
|
|
|
1821
1866
|
"name": "allowedCurrencies",
|
|
1822
1867
|
"type": "IReadOnlyList<string>",
|
|
1823
1868
|
"optional": true
|
|
1869
|
+
},
|
|
1870
|
+
{
|
|
1871
|
+
"name": "multipleOf",
|
|
1872
|
+
"type": "number",
|
|
1873
|
+
"optional": true
|
|
1874
|
+
},
|
|
1875
|
+
{
|
|
1876
|
+
"name": "minimum",
|
|
1877
|
+
"type": "number",
|
|
1878
|
+
"optional": true
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
"name": "maximum",
|
|
1882
|
+
"type": "number",
|
|
1883
|
+
"optional": true
|
|
1884
|
+
},
|
|
1885
|
+
{
|
|
1886
|
+
"name": "default",
|
|
1887
|
+
"type": "CurrencyDefaultDto",
|
|
1888
|
+
"optional": true
|
|
1824
1889
|
}
|
|
1825
1890
|
]
|
|
1826
1891
|
},
|
|
1827
1892
|
"BooleanFieldDto": {
|
|
1828
1893
|
"base": "JsonSchemaFieldDto",
|
|
1829
|
-
"fields": [
|
|
1894
|
+
"fields": [
|
|
1895
|
+
{
|
|
1896
|
+
"name": "default",
|
|
1897
|
+
"type": "boolean",
|
|
1898
|
+
"optional": true
|
|
1899
|
+
}
|
|
1900
|
+
]
|
|
1830
1901
|
},
|
|
1831
1902
|
"DateFieldDto": {
|
|
1832
1903
|
"base": "JsonSchemaFieldDto",
|
|
@@ -1840,6 +1911,11 @@
|
|
|
1840
1911
|
"name": "maximum",
|
|
1841
1912
|
"type": "number",
|
|
1842
1913
|
"optional": true
|
|
1914
|
+
},
|
|
1915
|
+
{
|
|
1916
|
+
"name": "default",
|
|
1917
|
+
"type": "number",
|
|
1918
|
+
"optional": true
|
|
1843
1919
|
}
|
|
1844
1920
|
]
|
|
1845
1921
|
},
|
|
@@ -1855,6 +1931,16 @@
|
|
|
1855
1931
|
"name": "maximum",
|
|
1856
1932
|
"type": "number",
|
|
1857
1933
|
"optional": true
|
|
1934
|
+
},
|
|
1935
|
+
{
|
|
1936
|
+
"name": "default",
|
|
1937
|
+
"type": "number",
|
|
1938
|
+
"optional": true
|
|
1939
|
+
},
|
|
1940
|
+
{
|
|
1941
|
+
"name": "unique",
|
|
1942
|
+
"type": "boolean",
|
|
1943
|
+
"optional": true
|
|
1858
1944
|
}
|
|
1859
1945
|
]
|
|
1860
1946
|
},
|
|
@@ -1870,7 +1956,23 @@
|
|
|
1870
1956
|
},
|
|
1871
1957
|
"TagsFieldDto": {
|
|
1872
1958
|
"base": "JsonSchemaFieldDto",
|
|
1873
|
-
"fields": [
|
|
1959
|
+
"fields": [
|
|
1960
|
+
{
|
|
1961
|
+
"name": "minItems",
|
|
1962
|
+
"type": "number",
|
|
1963
|
+
"optional": true
|
|
1964
|
+
},
|
|
1965
|
+
{
|
|
1966
|
+
"name": "maxItems",
|
|
1967
|
+
"type": "number",
|
|
1968
|
+
"optional": true
|
|
1969
|
+
},
|
|
1970
|
+
{
|
|
1971
|
+
"name": "default",
|
|
1972
|
+
"type": "IReadOnlyList<string>",
|
|
1973
|
+
"optional": true
|
|
1974
|
+
}
|
|
1975
|
+
]
|
|
1874
1976
|
},
|
|
1875
1977
|
"FileFieldDto": {
|
|
1876
1978
|
"base": "JsonSchemaFieldDto",
|
|
@@ -1879,6 +1981,26 @@
|
|
|
1879
1981
|
"name": "storages",
|
|
1880
1982
|
"type": "IReadOnlyList<string>",
|
|
1881
1983
|
"optional": true
|
|
1984
|
+
},
|
|
1985
|
+
{
|
|
1986
|
+
"name": "minItems",
|
|
1987
|
+
"type": "number",
|
|
1988
|
+
"optional": true
|
|
1989
|
+
},
|
|
1990
|
+
{
|
|
1991
|
+
"name": "maxItems",
|
|
1992
|
+
"type": "number",
|
|
1993
|
+
"optional": true
|
|
1994
|
+
},
|
|
1995
|
+
{
|
|
1996
|
+
"name": "allowedFileType",
|
|
1997
|
+
"type": "string",
|
|
1998
|
+
"optional": true
|
|
1999
|
+
},
|
|
2000
|
+
{
|
|
2001
|
+
"name": "maxSizeMb",
|
|
2002
|
+
"type": "number",
|
|
2003
|
+
"optional": true
|
|
1882
2004
|
}
|
|
1883
2005
|
]
|
|
1884
2006
|
},
|
|
@@ -1894,6 +2016,11 @@
|
|
|
1894
2016
|
"name": "multiple",
|
|
1895
2017
|
"type": "boolean",
|
|
1896
2018
|
"optional": false
|
|
2019
|
+
},
|
|
2020
|
+
{
|
|
2021
|
+
"name": "displayField",
|
|
2022
|
+
"type": "string",
|
|
2023
|
+
"optional": true
|
|
1897
2024
|
}
|
|
1898
2025
|
]
|
|
1899
2026
|
},
|
|
@@ -1924,6 +2051,11 @@
|
|
|
1924
2051
|
"name": "multiple",
|
|
1925
2052
|
"type": "boolean",
|
|
1926
2053
|
"optional": false
|
|
2054
|
+
},
|
|
2055
|
+
{
|
|
2056
|
+
"name": "displayField",
|
|
2057
|
+
"type": "string",
|
|
2058
|
+
"optional": true
|
|
1927
2059
|
}
|
|
1928
2060
|
]
|
|
1929
2061
|
},
|
|
@@ -1934,6 +2066,11 @@
|
|
|
1934
2066
|
"name": "multiple",
|
|
1935
2067
|
"type": "boolean",
|
|
1936
2068
|
"optional": false
|
|
2069
|
+
},
|
|
2070
|
+
{
|
|
2071
|
+
"name": "displayField",
|
|
2072
|
+
"type": "string",
|
|
2073
|
+
"optional": true
|
|
1937
2074
|
}
|
|
1938
2075
|
]
|
|
1939
2076
|
},
|
|
@@ -1949,6 +2086,61 @@
|
|
|
1949
2086
|
"name": "multiple",
|
|
1950
2087
|
"type": "boolean",
|
|
1951
2088
|
"optional": false
|
|
2089
|
+
},
|
|
2090
|
+
{
|
|
2091
|
+
"name": "default",
|
|
2092
|
+
"type": "IReadOnlyList<string>",
|
|
2093
|
+
"optional": true
|
|
2094
|
+
}
|
|
2095
|
+
]
|
|
2096
|
+
},
|
|
2097
|
+
"ObjectFieldDto": {
|
|
2098
|
+
"base": "JsonSchemaFieldDto",
|
|
2099
|
+
"fields": [
|
|
2100
|
+
{
|
|
2101
|
+
"name": "properties",
|
|
2102
|
+
"type": "IReadOnlyList<JsonSchemaFieldDto>",
|
|
2103
|
+
"optional": false
|
|
2104
|
+
},
|
|
2105
|
+
{
|
|
2106
|
+
"name": "required",
|
|
2107
|
+
"type": "IReadOnlyList<string>",
|
|
2108
|
+
"optional": true
|
|
2109
|
+
}
|
|
2110
|
+
]
|
|
2111
|
+
},
|
|
2112
|
+
"ArrayFieldDto": {
|
|
2113
|
+
"base": "JsonSchemaFieldDto",
|
|
2114
|
+
"fields": [
|
|
2115
|
+
{
|
|
2116
|
+
"name": "items",
|
|
2117
|
+
"type": "JsonSchemaFieldDto",
|
|
2118
|
+
"optional": false
|
|
2119
|
+
},
|
|
2120
|
+
{
|
|
2121
|
+
"name": "minItems",
|
|
2122
|
+
"type": "number",
|
|
2123
|
+
"optional": true
|
|
2124
|
+
},
|
|
2125
|
+
{
|
|
2126
|
+
"name": "maxItems",
|
|
2127
|
+
"type": "number",
|
|
2128
|
+
"optional": true
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"name": "uniqueItems",
|
|
2132
|
+
"type": "boolean",
|
|
2133
|
+
"optional": true
|
|
2134
|
+
}
|
|
2135
|
+
]
|
|
2136
|
+
},
|
|
2137
|
+
"JsonFieldDto": {
|
|
2138
|
+
"base": "JsonSchemaFieldDto",
|
|
2139
|
+
"fields": [
|
|
2140
|
+
{
|
|
2141
|
+
"name": "maxBytes",
|
|
2142
|
+
"type": "number",
|
|
2143
|
+
"optional": true
|
|
1952
2144
|
}
|
|
1953
2145
|
]
|
|
1954
2146
|
},
|
|
@@ -2535,6 +2727,26 @@
|
|
|
2535
2727
|
}
|
|
2536
2728
|
]
|
|
2537
2729
|
},
|
|
2730
|
+
"GetFileByIdResponse": {
|
|
2731
|
+
"base": "ResponseBase",
|
|
2732
|
+
"fields": [
|
|
2733
|
+
{
|
|
2734
|
+
"name": "file",
|
|
2735
|
+
"type": "FileResourceRefDto",
|
|
2736
|
+
"optional": true
|
|
2737
|
+
},
|
|
2738
|
+
{
|
|
2739
|
+
"name": "isPublic",
|
|
2740
|
+
"type": "boolean",
|
|
2741
|
+
"optional": true
|
|
2742
|
+
},
|
|
2743
|
+
{
|
|
2744
|
+
"name": "publicUrl",
|
|
2745
|
+
"type": "string",
|
|
2746
|
+
"optional": true
|
|
2747
|
+
}
|
|
2748
|
+
]
|
|
2749
|
+
},
|
|
2538
2750
|
"GetFileInfoResponse": {
|
|
2539
2751
|
"base": "ResponseBase",
|
|
2540
2752
|
"fields": [
|
|
@@ -3986,6 +4198,11 @@
|
|
|
3986
4198
|
"name": "sortOrder",
|
|
3987
4199
|
"type": "number",
|
|
3988
4200
|
"optional": true
|
|
4201
|
+
},
|
|
4202
|
+
{
|
|
4203
|
+
"name": "expandReferences",
|
|
4204
|
+
"type": "boolean",
|
|
4205
|
+
"optional": false
|
|
3989
4206
|
}
|
|
3990
4207
|
]
|
|
3991
4208
|
},
|
|
@@ -4006,6 +4223,11 @@
|
|
|
4006
4223
|
"name": "databaseIntegrationId",
|
|
4007
4224
|
"type": "string",
|
|
4008
4225
|
"optional": true
|
|
4226
|
+
},
|
|
4227
|
+
{
|
|
4228
|
+
"name": "expandReferences",
|
|
4229
|
+
"type": "boolean",
|
|
4230
|
+
"optional": false
|
|
4009
4231
|
}
|
|
4010
4232
|
]
|
|
4011
4233
|
},
|
|
@@ -4036,6 +4258,11 @@
|
|
|
4036
4258
|
"name": "pagingArgs",
|
|
4037
4259
|
"type": "PagingArgs",
|
|
4038
4260
|
"optional": true
|
|
4261
|
+
},
|
|
4262
|
+
{
|
|
4263
|
+
"name": "expandReferences",
|
|
4264
|
+
"type": "boolean",
|
|
4265
|
+
"optional": false
|
|
4039
4266
|
}
|
|
4040
4267
|
]
|
|
4041
4268
|
},
|
|
@@ -4131,6 +4358,11 @@
|
|
|
4131
4358
|
"name": "update",
|
|
4132
4359
|
"type": "string",
|
|
4133
4360
|
"optional": false
|
|
4361
|
+
},
|
|
4362
|
+
{
|
|
4363
|
+
"name": "arrayFilters",
|
|
4364
|
+
"type": "string",
|
|
4365
|
+
"optional": true
|
|
4134
4366
|
}
|
|
4135
4367
|
]
|
|
4136
4368
|
},
|
|
@@ -4156,6 +4388,11 @@
|
|
|
4156
4388
|
"name": "update",
|
|
4157
4389
|
"type": "string",
|
|
4158
4390
|
"optional": false
|
|
4391
|
+
},
|
|
4392
|
+
{
|
|
4393
|
+
"name": "arrayFilters",
|
|
4394
|
+
"type": "string",
|
|
4395
|
+
"optional": true
|
|
4159
4396
|
}
|
|
4160
4397
|
]
|
|
4161
4398
|
},
|
|
@@ -4274,6 +4511,21 @@
|
|
|
4274
4511
|
}
|
|
4275
4512
|
]
|
|
4276
4513
|
},
|
|
4514
|
+
"GetFileByIdRequest": {
|
|
4515
|
+
"base": "CodeMashRequestBase",
|
|
4516
|
+
"fields": [
|
|
4517
|
+
{
|
|
4518
|
+
"name": "filesIntegrationId",
|
|
4519
|
+
"type": "string",
|
|
4520
|
+
"optional": false
|
|
4521
|
+
},
|
|
4522
|
+
{
|
|
4523
|
+
"name": "id",
|
|
4524
|
+
"type": "string",
|
|
4525
|
+
"optional": false
|
|
4526
|
+
}
|
|
4527
|
+
]
|
|
4528
|
+
},
|
|
4277
4529
|
"GetFileInfoRequest": {
|
|
4278
4530
|
"base": "CodeMashRequestBase",
|
|
4279
4531
|
"fields": [
|