[{"data":1,"prerenderedAt":1388},["ShallowReactive",2],{"docs:\u002Fdocs\u002Fguides\u002Fagentic-models":3,"docs:navigation":1266,"docs:surround:\u002Fdocs\u002Fguides\u002Fagentic-models":1383},{"id":4,"title":5,"body":6,"description":1259,"extension":951,"meta":1260,"navigation":119,"navigationTitle":1261,"path":1262,"seo":1263,"stem":1264,"__hash__":1265},"docs\u002Fdocs\u002F3.guides\u002F4.agentic-models.md","Agentic Models",{"type":7,"value":8,"toc":1248},"minimark",[9,18,56,59,64,71,525,536,558,573,577,580,625,645,649,831,843,847,852,907,915,919,928,932,947,969,988,992,995,1103,1155,1159,1165,1215,1218,1222,1244],[10,11,12,13,17],"p",{},"Giving an agent access to your data usually means writing routes, tools, and permission checks\nfor every table, and keeping them in sync. An Agentic Model is a plain Drizzle table plus\n",[14,15,16],"code",{},"defineAgenticModel",". From that one definition you get:",[19,20,21,29,36,47,50,53],"ul",{},[22,23,24,25,28],"li",{},"REST routes under ",[14,26,27],{},"\u002Fapi\u002Fagentic\u002Fmodels\u002F\u003Cname>",", in the OpenAPI document.",[22,30,31,32,35],{},"Typed services: ",[14,33,34],{},"services.models.customer.list(...)"," in your server code.",[22,37,38,39,42,43,46],{},"Agent and MCP tools such as ",[14,40,41],{},"customer_list"," and ",[14,44,45],{},"customer_update",", with approval rules.",[22,48,49],{},"Prompt resources, so the dashboard prompt can find and propose changes to records.",[22,51,52],{},"Automation outcome targets: an agent can write a reviewed field back.",[22,54,55],{},"A dashboard data view with the columns you choose.",[10,57,58],{},"Access rules and workspace scope apply to every one of them.",[60,61,63],"h2",{"id":62},"defining-a-model","Defining a Model",[10,65,66,67,70],{},"The starter's ",[14,68,69],{},"customers"," model shows every part of a definition:",[72,73,79],"pre",{"className":74,"code":75,"filename":76,"language":77,"meta":78,"style":78},"language-ts shiki shiki-themes github-dark-default","import { integer, sqliteTable, text } from 'drizzle-orm\u002Fsqlite-core'\nimport { defineAgenticModel, timestamps, workspaceColumns } from '@nuxtagentic-pro\u002Fserver\u002Fmodels'\n\nexport const customers = sqliteTable('customers', {\n  id: integer().primaryKey({ autoIncrement: true }),\n  ...workspaceColumns(),\n  name: text().notNull(),\n  email: text().notNull(),\n  plan: text({ enum: ['free', 'pro'] })\n    .notNull()\n    .default('free'),\n  summary: text(),\n  ...timestamps(),\n})\n\nexport default defineAgenticModel(customers, {\n  name: 'customer',\n  description: 'Paying customers of our product',\n  scope: 'workspace',\n  fields: {\n    email: { description: 'Billing email', pii: true },\n    summary: { description: 'Agent-written account summary' },\n  },\n  access: { list: 'member', get: 'member', create: 'admin', update: 'admin', delete: false },\n  agent: { tools: ['list', 'get', 'update'], approval: { update: 'always' } },\n  outcomes: { writable: ['summary'] },\n  prompt: { label: 'name', searchable: ['name', 'email'] },\n  ui: { icon: 'i-lucide-users', columns: ['name', 'plan', 'updatedAt'] },\n})\n","server\u002Fmodels\u002Fcustomers.ts","ts","",[14,80,81,101,114,121,150,174,186,202,216,239,250,265,275,285,291,296,314,325,336,347,353,370,381,389,425,455,469,492,520],{"__ignoreMap":78},[82,83,86,90,94,97],"span",{"class":84,"line":85},"line",1,[82,87,89],{"class":88},"suJrU","import",[82,91,93],{"class":92},"sZEs4"," { integer, sqliteTable, text } ",[82,95,96],{"class":88},"from",[82,98,100],{"class":99},"s9uIt"," 'drizzle-orm\u002Fsqlite-core'\n",[82,102,104,106,109,111],{"class":84,"line":103},2,[82,105,89],{"class":88},[82,107,108],{"class":92}," { defineAgenticModel, timestamps, workspaceColumns } ",[82,110,96],{"class":88},[82,112,113],{"class":99}," '@nuxtagentic-pro\u002Fserver\u002Fmodels'\n",[82,115,117],{"class":84,"line":116},3,[82,118,120],{"emptyLinePlaceholder":119},true,"\n",[82,122,124,127,130,134,137,141,144,147],{"class":84,"line":123},4,[82,125,126],{"class":88},"export",[82,128,129],{"class":88}," const",[82,131,133],{"class":132},"sFSAA"," customers",[82,135,136],{"class":88}," =",[82,138,140],{"class":139},"sc3cj"," sqliteTable",[82,142,143],{"class":92},"(",[82,145,146],{"class":99},"'customers'",[82,148,149],{"class":92},", {\n",[82,151,153,156,159,162,165,168,171],{"class":84,"line":152},5,[82,154,155],{"class":92},"  id: ",[82,157,158],{"class":139},"integer",[82,160,161],{"class":92},"().",[82,163,164],{"class":139},"primaryKey",[82,166,167],{"class":92},"({ autoIncrement: ",[82,169,170],{"class":132},"true",[82,172,173],{"class":92}," }),\n",[82,175,177,180,183],{"class":84,"line":176},6,[82,178,179],{"class":88},"  ...",[82,181,182],{"class":139},"workspaceColumns",[82,184,185],{"class":92},"(),\n",[82,187,189,192,195,197,200],{"class":84,"line":188},7,[82,190,191],{"class":92},"  name: ",[82,193,194],{"class":139},"text",[82,196,161],{"class":92},[82,198,199],{"class":139},"notNull",[82,201,185],{"class":92},[82,203,205,208,210,212,214],{"class":84,"line":204},8,[82,206,207],{"class":92},"  email: ",[82,209,194],{"class":139},[82,211,161],{"class":92},[82,213,199],{"class":139},[82,215,185],{"class":92},[82,217,219,222,224,227,230,233,236],{"class":84,"line":218},9,[82,220,221],{"class":92},"  plan: ",[82,223,194],{"class":139},[82,225,226],{"class":92},"({ enum: [",[82,228,229],{"class":99},"'free'",[82,231,232],{"class":92},", ",[82,234,235],{"class":99},"'pro'",[82,237,238],{"class":92},"] })\n",[82,240,242,245,247],{"class":84,"line":241},10,[82,243,244],{"class":92},"    .",[82,246,199],{"class":139},[82,248,249],{"class":92},"()\n",[82,251,253,255,258,260,262],{"class":84,"line":252},11,[82,254,244],{"class":92},[82,256,257],{"class":139},"default",[82,259,143],{"class":92},[82,261,229],{"class":99},[82,263,264],{"class":92},"),\n",[82,266,268,271,273],{"class":84,"line":267},12,[82,269,270],{"class":92},"  summary: ",[82,272,194],{"class":139},[82,274,185],{"class":92},[82,276,278,280,283],{"class":84,"line":277},13,[82,279,179],{"class":88},[82,281,282],{"class":139},"timestamps",[82,284,185],{"class":92},[82,286,288],{"class":84,"line":287},14,[82,289,290],{"class":92},"})\n",[82,292,294],{"class":84,"line":293},15,[82,295,120],{"emptyLinePlaceholder":119},[82,297,299,301,304,307,310,312],{"class":84,"line":298},16,[82,300,126],{"class":88},[82,302,303],{"class":88}," default",[82,305,306],{"class":139}," defineAgenticModel",[82,308,143],{"class":309},"sQhOw",[82,311,69],{"class":92},[82,313,149],{"class":309},[82,315,317,319,322],{"class":84,"line":316},17,[82,318,191],{"class":92},[82,320,321],{"class":99},"'customer'",[82,323,324],{"class":309},",\n",[82,326,328,331,334],{"class":84,"line":327},18,[82,329,330],{"class":92},"  description: ",[82,332,333],{"class":99},"'Paying customers of our product'",[82,335,324],{"class":309},[82,337,339,342,345],{"class":84,"line":338},19,[82,340,341],{"class":92},"  scope: ",[82,343,344],{"class":99},"'workspace'",[82,346,324],{"class":309},[82,348,350],{"class":84,"line":349},20,[82,351,352],{"class":92},"  fields: {\n",[82,354,356,359,362,365,367],{"class":84,"line":355},21,[82,357,358],{"class":92},"    email: { description: ",[82,360,361],{"class":99},"'Billing email'",[82,363,364],{"class":92},", pii: ",[82,366,170],{"class":132},[82,368,369],{"class":92}," },\n",[82,371,373,376,379],{"class":84,"line":372},22,[82,374,375],{"class":92},"    summary: { description: ",[82,377,378],{"class":99},"'Agent-written account summary'",[82,380,369],{"class":92},[82,382,384,387],{"class":84,"line":383},23,[82,385,386],{"class":92},"  }",[82,388,324],{"class":309},[82,390,392,395,398,401,403,406,409,412,414,417,420,423],{"class":84,"line":391},24,[82,393,394],{"class":92},"  access: { list: ",[82,396,397],{"class":99},"'member'",[82,399,400],{"class":92},", get: ",[82,402,397],{"class":99},[82,404,405],{"class":92},", create: ",[82,407,408],{"class":99},"'admin'",[82,410,411],{"class":92},", update: ",[82,413,408],{"class":99},[82,415,416],{"class":92},", delete: ",[82,418,419],{"class":132},"false",[82,421,422],{"class":92}," }",[82,424,324],{"class":309},[82,426,428,431,434,436,439,441,444,447,450,453],{"class":84,"line":427},25,[82,429,430],{"class":92},"  agent: { tools: [",[82,432,433],{"class":99},"'list'",[82,435,232],{"class":92},[82,437,438],{"class":99},"'get'",[82,440,232],{"class":92},[82,442,443],{"class":99},"'update'",[82,445,446],{"class":92},"], approval: { update: ",[82,448,449],{"class":99},"'always'",[82,451,452],{"class":92}," } }",[82,454,324],{"class":309},[82,456,458,461,464,467],{"class":84,"line":457},26,[82,459,460],{"class":92},"  outcomes: { writable: [",[82,462,463],{"class":99},"'summary'",[82,465,466],{"class":92},"] }",[82,468,324],{"class":309},[82,470,472,475,478,481,483,485,488,490],{"class":84,"line":471},27,[82,473,474],{"class":92},"  prompt: { label: ",[82,476,477],{"class":99},"'name'",[82,479,480],{"class":92},", searchable: [",[82,482,477],{"class":99},[82,484,232],{"class":92},[82,486,487],{"class":99},"'email'",[82,489,466],{"class":92},[82,491,324],{"class":309},[82,493,495,498,501,504,506,508,511,513,516,518],{"class":84,"line":494},28,[82,496,497],{"class":92},"  ui: { icon: ",[82,499,500],{"class":99},"'i-lucide-users'",[82,502,503],{"class":92},", columns: [",[82,505,477],{"class":99},[82,507,232],{"class":92},[82,509,510],{"class":99},"'plan'",[82,512,232],{"class":92},[82,514,515],{"class":99},"'updatedAt'",[82,517,466],{"class":92},[82,519,324],{"class":309},[82,521,523],{"class":84,"line":522},29,[82,524,290],{"class":309},[10,526,527,528,531,532,535],{},"In Nuxt, files in ",[14,529,530],{},"server\u002Fmodels"," are discovered. In Void, pass the model to\n",[14,533,534],{},"defineVoidAgentic({ models: [customers] })",". Then add the table to your schema and migrate it:",[72,537,541],{"className":538,"code":539,"language":540,"meta":78,"style":78},"language-bash shiki shiki-themes github-dark-default","pnpm db:generate\npnpm db:migrate\n","bash",[14,542,543,551],{"__ignoreMap":78},[82,544,545,548],{"class":84,"line":85},[82,546,547],{"class":309},"pnpm",[82,549,550],{"class":99}," db:generate\n",[82,552,553,555],{"class":84,"line":103},[82,554,547],{"class":309},[82,556,557],{"class":99}," db:migrate\n",[10,559,560,561,564,565,568,569,572],{},"The Nuxt starter's ",[14,562,563],{},"drizzle.config.ts"," already includes ",[14,566,567],{},"server\u002Fmodels\u002F*.ts","; the Void starter\nre-exports models from ",[14,570,571],{},"db\u002Fschema.ts",".",[60,574,576],{"id":575},"adding-ownership-columns","Adding Ownership Columns",[10,578,579],{},"Scopes need to know who owns a row. Spread the column helpers into your table:",[19,581,582,601,614],{},[22,583,584,587,588,42,591,594,595,324,597,600],{},[14,585,586],{},"workspaceColumns()"," adds ",[14,589,590],{},"ownerId",[14,592,593],{},"workspace",". Use it for ",[14,596,593],{},[14,598,599],{},"workspace-owner",", and function scopes.",[22,602,603,606,607,609,610,613],{},[14,604,605],{},"ownerColumns()"," adds only ",[14,608,590],{},", for the ",[14,611,612],{},"owner"," scope.",[22,615,616,587,619,42,622,572],{},[14,617,618],{},"timestamps()",[14,620,621],{},"createdAt",[14,623,624],{},"updatedAt",[10,626,627,232,630,232,632,232,634,636,637,639,640,42,642,644],{},[14,628,629],{},"id",[14,631,590],{},[14,633,593],{},[14,635,621],{},", and ",[14,638,624],{}," are managed: clients and agents never\nset them, and ",[14,641,590],{},[14,643,593],{}," never appear in responses.",[60,646,648],{"id":647},"model-options","Model Options",[650,651,652,665],"table",{},[653,654,655],"thead",{},[656,657,658,662],"tr",{},[659,660,661],"th",{},"Option",[659,663,664],{},"Description",[666,667,668,679,689,699,709,736,757,782,799,815],"tbody",{},[656,669,670,676],{},[671,672,673],"td",{},[14,674,675],{},"name",[671,677,678],{},"Singular name used in routes, services, and tool names",[656,680,681,686],{},[671,682,683],{},[14,684,685],{},"label",[671,687,688],{},"Display name in the dashboard",[656,690,691,696],{},[671,692,693],{},[14,694,695],{},"description",[671,697,698],{},"Tells agents and the prompt what the records are",[656,700,701,706],{},[671,702,703],{},[14,704,705],{},"scope",[671,707,708],{},"Which rows an actor can see; see below",[656,710,711,716],{},[671,712,713],{},[14,714,715],{},"fields",[671,717,718,719,232,721,232,723,232,726,232,729,232,732,735],{},"Per column: ",[14,720,685],{},[14,722,695],{},[14,724,725],{},"hidden",[14,727,728],{},"readonly",[14,730,731],{},"pii",[14,733,734],{},"schema"," (a Zod type)",[656,737,738,743],{},[671,739,740],{},[14,741,742],{},"access",[671,744,745,746,232,749,232,752,754,755],{},"Per action, the minimum role: ",[14,747,748],{},"member",[14,750,751],{},"admin",[14,753,612],{},", or ",[14,756,419],{},[656,758,759,764],{},[671,760,761],{},[14,762,763],{},"agent",[671,765,766,769,770,773,774,777,778,781],{},[14,767,768],{},"tools",": the actions agents may call; ",[14,771,772],{},"approval",": ",[14,775,776],{},"always"," or ",[14,779,780],{},"never"," per action",[656,783,784,789],{},[671,785,786],{},[14,787,788],{},"outcomes",[671,790,791,794,795,798],{},[14,792,793],{},"writable",": fields an automation ",[14,796,797],{},"record"," outcome may write",[656,800,801,806],{},[671,802,803],{},[14,804,805],{},"prompt",[671,807,808,810,811,814],{},[14,809,685],{},": the column that names a record; ",[14,812,813],{},"searchable",": columns for search",[656,816,817,822],{},[671,818,819],{},[14,820,821],{},"ui",[671,823,824,42,827,830],{},[14,825,826],{},"icon",[14,828,829],{},"columns"," for the dashboard data view",[10,832,833,834,232,836,324,838,754,840,842],{},"Field names are checked against the table at compile time: a typo in ",[14,835,715],{},[14,837,788],{},[14,839,805],{},[14,841,821],{}," is a TypeScript error.",[60,844,846],{"id":845},"choosing-which-rows-an-actor-sees","Choosing Which Rows an Actor Sees",[10,848,849,851],{},[14,850,705],{}," decides which rows each signed-in user can read and change:",[650,853,854,864],{},[653,855,856],{},[656,857,858,861],{},[659,859,860],{},"Scope",[659,862,863],{},"Rows the actor sees",[666,865,866,879,888,897],{},[656,867,868,872],{},[671,869,870],{},[14,871,593],{},[671,873,874,875,878],{},"Every row in the current workspace (only their own in ",[14,876,877],{},"personal",")",[656,880,881,885],{},[671,882,883],{},[14,884,599],{},[671,886,887],{},"Their own rows in the current workspace",[656,889,890,894],{},[671,891,892],{},[14,893,612],{},[671,895,896],{},"Their own rows in any workspace",[656,898,899,904],{},[671,900,901],{},[14,902,903],{},"(actor) => filter",[671,905,906],{},"A portable filter you build from the actor",[10,908,909,910,42,912,914],{},"Creates set ",[14,911,590],{},[14,913,593],{}," from the actor. Updates and deletes check the scope in the\nsame SQL statement as the write, so a row cannot move out of scope between the check and the\nwrite.",[60,916,918],{"id":917},"limiting-actions-by-role","Limiting Actions by Role",[10,920,921,922,924,925,927],{},"Each action in ",[14,923,742],{}," needs the listed role or higher. A missing action, or ",[14,926,419],{},", means the\nroute, service method, and tool do not exist. The same rule applies to REST, services, agent\ntools, MCP, and the prompt.",[60,929,931],{"id":930},"giving-agents-model-tools","Giving Agents Model Tools",[10,933,934,937,938,232,940,943,944,946],{},[14,935,936],{},"agent.tools: ['list', 'get', 'update']"," registers ",[14,939,41],{},[14,941,942],{},"customer_get",", and\n",[14,945,45],{},". Enable them on an agent by name:",[72,948,952],{"className":949,"code":950,"language":951,"meta":78,"style":78},"language-md shiki shiki-themes github-dark-default","---\ntools: ['customer_list', 'customer_get', 'customer_update']\n---\n","md",[14,953,954,960,965],{"__ignoreMap":78},[82,955,956],{"class":84,"line":85},[82,957,959],{"class":958},"sp6Gy","---\n",[82,961,962],{"class":84,"line":103},[82,963,964],{"class":92},"tools: ['customer_list', 'customer_get', 'customer_update']\n",[82,966,967],{"class":84,"line":116},[82,968,959],{"class":958},[10,970,971,974,975,977,978,980,981,984,985,987],{},[14,972,973],{},"approval: { update: 'always' }"," holds every update for a person, showing the exact field\nchanges. ",[14,976,725],{}," fields never appear in responses or tool output; ",[14,979,731],{}," marks personal data in\nthe OpenAPI schema and data views. A model with ",[14,982,983],{},"outcomes.writable"," fields also registers\n",[14,986,45],{},", because automation outcomes write through it.",[60,989,991],{"id":990},"querying-from-server-code","Querying from Server Code",[10,993,994],{},"The services give your own routes the same typed, scoped access:",[72,996,998],{"className":74,"code":997,"language":77,"meta":78,"style":78},"const { models } = await useAgentic(event)\nconst page = await models.customer.list({ filter: { plan: 'pro' }, pageSize: 20 })\nconst customer = await models.customer.get(42)\nawait models.customer.update(42, { summary: 'Renewed for two years.' })\n",[14,999,1000,1026,1057,1081],{"__ignoreMap":78},[82,1001,1002,1005,1008,1011,1014,1017,1020,1023],{"class":84,"line":85},[82,1003,1004],{"class":88},"const",[82,1006,1007],{"class":92}," { ",[82,1009,1010],{"class":132},"models",[82,1012,1013],{"class":92}," } ",[82,1015,1016],{"class":88},"=",[82,1018,1019],{"class":88}," await",[82,1021,1022],{"class":139}," useAgentic",[82,1024,1025],{"class":92},"(event)\n",[82,1027,1028,1030,1033,1035,1037,1040,1043,1046,1048,1051,1054],{"class":84,"line":103},[82,1029,1004],{"class":88},[82,1031,1032],{"class":132}," page",[82,1034,136],{"class":88},[82,1036,1019],{"class":88},[82,1038,1039],{"class":92}," models.customer.",[82,1041,1042],{"class":139},"list",[82,1044,1045],{"class":92},"({ filter: { plan: ",[82,1047,235],{"class":99},[82,1049,1050],{"class":92}," }, pageSize: ",[82,1052,1053],{"class":132},"20",[82,1055,1056],{"class":92}," })\n",[82,1058,1059,1061,1064,1066,1068,1070,1073,1075,1078],{"class":84,"line":116},[82,1060,1004],{"class":88},[82,1062,1063],{"class":132}," customer",[82,1065,136],{"class":88},[82,1067,1019],{"class":88},[82,1069,1039],{"class":92},[82,1071,1072],{"class":139},"get",[82,1074,143],{"class":92},[82,1076,1077],{"class":132},"42",[82,1079,1080],{"class":92},")\n",[82,1082,1083,1086,1088,1091,1093,1095,1098,1101],{"class":84,"line":123},[82,1084,1085],{"class":88},"await",[82,1087,1039],{"class":92},[82,1089,1090],{"class":139},"update",[82,1092,143],{"class":92},[82,1094,1077],{"class":132},[82,1096,1097],{"class":92},", { summary: ",[82,1099,1100],{"class":99},"'Renewed for two years.'",[82,1102,1056],{"class":92},[10,1104,1105,1107,1108,232,1111,1114,1115,232,1118,232,1121,324,1124,232,1126,1129,1130,1133,1134,777,1137,1140,1141,1144,1145,1148,1149,1154],{},[14,1106,1042],{}," accepts ",[14,1109,1110],{},"page",[14,1112,1113],{},"pageSize"," (up to 100, default 50), ",[14,1116,1117],{},"search",[14,1119,1120],{},"sortBy",[14,1122,1123],{},"sortDir",[14,1125,829],{},[14,1127,1128],{},"filters"," with ",[14,1131,1132],{},"logic"," (",[14,1135,1136],{},"and",[14,1138,1139],{},"or","), and the equality shorthand ",[14,1142,1143],{},"filter",", where\n",[14,1146,1147],{},"null"," matches empty values. Results are typed from the table. The\n",[1150,1151,1153],"a",{"href":1152},"\u002Fdocs\u002Freference\u002Fservices","services reference"," lists every method.",[60,1156,1158],{"id":1157},"querying-from-the-browser","Querying from the Browser",[10,1160,1161,1164],{},[14,1162,1163],{},"useAgenticClient()"," calls the same REST routes from your pages:",[72,1166,1168],{"className":74,"code":1167,"language":77,"meta":78,"style":78},"const client = useAgenticClient()\nconst { data } = await client('\u002Fapi\u002Fagentic\u002Fmodels\u002Fcustomer', { query: { search: 'acme' } })\n",[14,1169,1170,1184],{"__ignoreMap":78},[82,1171,1172,1174,1177,1179,1182],{"class":84,"line":85},[82,1173,1004],{"class":88},[82,1175,1176],{"class":132}," client",[82,1178,136],{"class":88},[82,1180,1181],{"class":139}," useAgenticClient",[82,1183,249],{"class":92},[82,1185,1186,1188,1190,1193,1195,1197,1199,1201,1203,1206,1209,1212],{"class":84,"line":103},[82,1187,1004],{"class":88},[82,1189,1007],{"class":92},[82,1191,1192],{"class":132},"data",[82,1194,1013],{"class":92},[82,1196,1016],{"class":88},[82,1198,1019],{"class":88},[82,1200,1176],{"class":139},[82,1202,143],{"class":92},[82,1204,1205],{"class":99},"'\u002Fapi\u002Fagentic\u002Fmodels\u002Fcustomer'",[82,1207,1208],{"class":92},", { query: { search: ",[82,1210,1211],{"class":99},"'acme'",[82,1213,1214],{"class":92}," } })\n",[10,1216,1217],{},"The client sends the current workspace and forwards the session during SSR.",[60,1219,1221],{"id":1220},"writing-back-from-automations","Writing Back from Automations",[10,1223,1224,1225,1228,1229,1232,1233,1236,1237,1239,1240,572],{},"With ",[14,1226,1227],{},"outcomes: { writable: ['summary'] }",", an automation whose payload names a record\n(",[14,1230,1231],{},"{ \"record\": { \"model\": \"customer\", \"id\": 42 } }",") can write its result to ",[14,1234,1235],{},"summary"," with a\n",[14,1238,797],{}," outcome. See ",[1150,1241,1243],{"href":1242},"\u002Fdocs\u002Fguides\u002Foutcomes","Outcomes",[1245,1246,1247],"style",{},"html pre.shiki code .suJrU, html code.shiki .suJrU{--shiki-default:#FF7B72}html pre.shiki code .sZEs4, html code.shiki .sZEs4{--shiki-default:#E6EDF3}html pre.shiki code .s9uIt, html code.shiki .s9uIt{--shiki-default:#A5D6FF}html pre.shiki code .sFSAA, html code.shiki .sFSAA{--shiki-default:#79C0FF}html pre.shiki code .sc3cj, html code.shiki .sc3cj{--shiki-default:#D2A8FF}html pre.shiki code .sQhOw, html code.shiki .sQhOw{--shiki-default:#FFA657}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sp6Gy, html code.shiki .sp6Gy{--shiki-default:#79C0FF;--shiki-default-font-weight:bold}",{"title":78,"searchDepth":103,"depth":103,"links":1249},[1250,1251,1252,1253,1254,1255,1256,1257,1258],{"id":62,"depth":103,"text":63},{"id":575,"depth":103,"text":576},{"id":647,"depth":103,"text":648},{"id":845,"depth":103,"text":846},{"id":917,"depth":103,"text":918},{"id":930,"depth":103,"text":931},{"id":990,"depth":103,"text":991},{"id":1157,"depth":103,"text":1158},{"id":1220,"depth":103,"text":1221},"Your tables become safe agent tools in one definition. REST, services, tools, prompt and dashboard views from a Drizzle table.",{},null,"\u002Fdocs\u002Fguides\u002Fagentic-models",{"title":5,"description":1259},"docs\u002F3.guides\u002F4.agentic-models","CYK4BqOAuXEJ3fr3Q47JPK26kGf0Kh7UBGiLbTANJPY",[1267],{"title":1268,"path":1269,"stem":1270,"children":1271,"navigationTitle":1261},"Introduction","\u002Fdocs","docs\u002F0.index",[1272,1273,1291,1295,1343,1347,1351,1379],{"title":1268,"path":1269,"stem":1270,"navigationTitle":1261},{"title":1274,"path":1275,"stem":1276,"children":1277,"page":1290},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[1278,1282,1286],{"title":1279,"path":1280,"stem":1281,"navigationTitle":1261},"Free module","\u002Fdocs\u002Fgetting-started\u002Ffree","docs\u002F1.getting-started\u002F1.free",{"title":1283,"path":1284,"stem":1285,"navigationTitle":1261},"Pro on Nuxt","\u002Fdocs\u002Fgetting-started\u002Fnuxt","docs\u002F1.getting-started\u002F2.nuxt",{"title":1287,"path":1288,"stem":1289,"navigationTitle":1261},"Pro on Void","\u002Fdocs\u002Fgetting-started\u002Fvoid","docs\u002F1.getting-started\u002F3.void",false,{"title":1292,"path":1293,"stem":1294,"navigationTitle":1261},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F2.concepts",{"title":1296,"path":1297,"stem":1298,"children":1299,"page":1290},"Guides","\u002Fdocs\u002Fguides","docs\u002F3.guides",[1300,1304,1308,1312,1316,1320,1324,1325,1327,1331,1335,1339],{"title":1301,"path":1302,"stem":1303,"navigationTitle":1261},"Agents","\u002Fdocs\u002Fguides\u002Fagents","docs\u002F3.guides\u002F1.agents",{"title":1305,"path":1306,"stem":1307,"navigationTitle":1261},"Events","\u002Fdocs\u002Fguides\u002Fevents","docs\u002F3.guides\u002F10.events",{"title":1309,"path":1310,"stem":1311,"navigationTitle":1261},"Features","\u002Fdocs\u002Fguides\u002Ffeatures","docs\u002F3.guides\u002F11.features",{"title":1313,"path":1314,"stem":1315,"navigationTitle":1261},"Coding agents","\u002Fdocs\u002Fguides\u002Fcoding-agents","docs\u002F3.guides\u002F12.coding-agents",{"title":1317,"path":1318,"stem":1319,"navigationTitle":1261},"Tools","\u002Fdocs\u002Fguides\u002Ftools","docs\u002F3.guides\u002F2.tools",{"title":1321,"path":1322,"stem":1323,"navigationTitle":1261},"Automations","\u002Fdocs\u002Fguides\u002Fautomations","docs\u002F3.guides\u002F3.automations",{"title":5,"path":1262,"stem":1264,"navigationTitle":1261},{"title":1243,"path":1242,"stem":1326,"navigationTitle":1261},"docs\u002F3.guides\u002F5.outcomes",{"title":1328,"path":1329,"stem":1330,"navigationTitle":1261},"Integrations","\u002Fdocs\u002Fguides\u002Fintegrations","docs\u002F3.guides\u002F6.integrations",{"title":1332,"path":1333,"stem":1334,"navigationTitle":1261},"Prompt","\u002Fdocs\u002Fguides\u002Fprompt","docs\u002F3.guides\u002F7.prompt",{"title":1336,"path":1337,"stem":1338,"navigationTitle":1261},"Server logic","\u002Fdocs\u002Fguides\u002Fserver-logic","docs\u002F3.guides\u002F8.server-logic",{"title":1340,"path":1341,"stem":1342,"navigationTitle":1261},"Dashboard UI","\u002Fdocs\u002Fguides\u002Fui","docs\u002F3.guides\u002F9.ui",{"title":1344,"path":1345,"stem":1346,"navigationTitle":1261},"Deploy to Cloudflare","\u002Fdocs\u002Fdeploy","docs\u002F4.deploy",{"title":1348,"path":1349,"stem":1350,"navigationTitle":1261},"Upgrading","\u002Fdocs\u002Fupgrade","docs\u002F5.upgrade",{"title":1352,"path":1353,"stem":1354,"children":1355,"page":1290},"Reference","\u002Fdocs\u002Freference","docs\u002F6.reference",[1356,1360,1364,1368,1371,1375],{"title":1357,"path":1358,"stem":1359,"navigationTitle":1261},"Configuration","\u002Fdocs\u002Freference\u002Fconfiguration","docs\u002F6.reference\u002F1.configuration",{"title":1361,"path":1362,"stem":1363,"navigationTitle":1261},"Composables","\u002Fdocs\u002Freference\u002Fcomposables","docs\u002F6.reference\u002F2.composables",{"title":1365,"path":1366,"stem":1367,"navigationTitle":1261},"Server utilities","\u002Fdocs\u002Freference\u002Fserver-utils","docs\u002F6.reference\u002F3.server-utils",{"title":1369,"path":1152,"stem":1370,"navigationTitle":1261},"Services","docs\u002F6.reference\u002F4.services",{"title":1372,"path":1373,"stem":1374,"navigationTitle":1261},"REST API","\u002Fdocs\u002Freference\u002Frest-api","docs\u002F6.reference\u002F5.rest-api",{"title":1376,"path":1377,"stem":1378,"navigationTitle":1261},"CLI","\u002Fdocs\u002Freference\u002Fcli","docs\u002F6.reference\u002F6.cli",{"title":1380,"path":1381,"stem":1382,"navigationTitle":1261},"Licensing & FAQ","\u002Fdocs\u002Flicensing","docs\u002F8.licensing",[1384,1386],{"title":1321,"path":1322,"stem":1323,"description":1385,"children":-1},"Run agents on a schedule, from a webhook or on an event, with retries and outcomes.",{"title":1243,"path":1242,"stem":1326,"description":1387,"children":-1},"Let automations write their result back to a record, safely.",1792672479673]