{"server":"io.github.agentstacktech/agentstack","count":23,"changes":[{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-18T15:24:30.870Z","fields":["description","inputSchema"],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Context.project_id on every batch. Detail: prompts/get agentstack_session_setup and agentstack_execute_budget.","description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. context.project_id on every batch. Prompts: agentstack_session_setup, agentstack_execute_budget.","description_similarity":0.958,"before_hash":"dbd430a8b031a5b70399418faff21b3f","after_hash":"a2ebe9c8bdd8cc2c472ddb7f0bc1816e"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-17T09:53:46.260Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"4396ce542ead1fa8b2423d5fc7fae9c2","after_hash":"dbd430a8b031a5b70399418faff21b3f"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-16T16:16:31.565Z","fields":["description","inputSchema","outputSchema"],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap batch: work_next, plan_get, plan_claim. One/sync: plan_propose, plan_apply_proposal, plan_recovery_scan, context.get. Skip catalog when packet.next_action is set. Session: auth.get_profile -> project -> context.project_id on every batch. Setup GET /mcp/prompts/get?name=agentstack_session_setup. Packs: GET /mcp/actions execute_budget.packs (session.v1, batch.v1). Sync mcp_batch 60000ms whole batch; one heavy step per execute (agents.run wait=true; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). LLM lane ai_stream 180000ms. async=true then discovery.job_status (GET /mcp/jobs/{job_id}). Single tool agentstack.execute; catalog_actions_public from /mcp/actions/summary. Prefer logic.* and integrations.*; not rules.*; not webhooks.*. Do not pick tools from catalog when packet.next_action is present.","description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Context.project_id on every batch. Detail: prompts/get agentstack_session_setup and agentstack_execute_budget.","description_similarity":0.49,"before_hash":"8f6a56bbce402f7e888af1cc2fc08863","after_hash":"4396ce542ead1fa8b2423d5fc7fae9c2"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-16T03:43:59.949Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"b12b943765da22fdfc17941a257f114a","after_hash":"8f6a56bbce402f7e888af1cc2fc08863"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-15T03:59:03.316Z","fields":["title","description","inputSchema","annotations"],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap and batchable on one sync execute: agents.work_next, agents.plan_get, agents.plan_claim. One per sync execute: agents.plan_propose, agents.plan_apply_proposal, agents.plan_recovery_scan, context.get. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Packs session.v1 and batch.v1: GET /mcp/actions field execute_budget.packs. Send context.project_id; other session fields default server-side. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate and other heavy actions per execute_budget; agents.run with wait=true; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). agents.work_next, agents.plan_get, and agents.plan_claim are cheap and may share that batch. LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{job_id}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap batch: work_next, plan_get, plan_claim. One/sync: plan_propose, plan_apply_proposal, plan_recovery_scan, context.get. Skip catalog when packet.next_action is set. Session: auth.get_profile -> project -> context.project_id on every batch. Setup GET /mcp/prompts/get?name=agentstack_session_setup. Packs: GET /mcp/actions execute_budget.packs (session.v1, batch.v1). Sync mcp_batch 60000ms whole batch; one heavy step per execute (agents.run wait=true; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). LLM lane ai_stream 180000ms. async=true then discovery.job_status (GET /mcp/jobs/{job_id}). Single tool agentstack.execute; catalog_actions_public from /mcp/actions/summary. Prefer logic.* and integrations.*; not rules.*; not webhooks.*. Do not pick tools from catalog when packet.next_action is present.","description_similarity":0.619,"before_hash":"12c24c90e06ba006d1e5f25ee10bf81a","after_hash":"b12b943765da22fdfc17941a257f114a"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-14T21:57:41.201Z","fields":["outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"1cb23b3ea93c866118c720a6826bf008","after_hash":"12c24c90e06ba006d1e5f25ee10bf81a"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-14T09:43:28.037Z","fields":["outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"49c27c59cd5ad834723b77609066d61d","after_hash":"1cb23b3ea93c866118c720a6826bf008"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-14T04:01:55.265Z","fields":["inputSchema","outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"d34c1c4c1d7f2570f638b0147790194f","after_hash":"49c27c59cd5ad834723b77609066d61d"},{"tool":"agentstack.execute","kind":"added","observed_at":"2026-10-13T21:56:39.997Z","fields":[],"description_before":null,"description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap and batchable on one sync execute: agents.work_next, agents.plan_get, agents.plan_claim. One per sync execute: agents.plan_propose, agents.plan_apply_proposal, agents.plan_recovery_scan, context.get. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Packs session.v1 and batch.v1: GET /mcp/actions field execute_budget.packs. Send context.project_id; other session fields default server-side. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate and other heavy actions per execute_budget; agents.run with wait=true; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). agents.work_next, agents.plan_get, and agents.plan_claim are cheap and may share that batch. LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{job_id}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_similarity":null,"before_hash":"747f80d2344c92db6e98d87b3843d875","after_hash":"d34c1c4c1d7f2570f638b0147790194f"},{"tool":"agentstack.execute","kind":"removed","observed_at":"2026-10-13T15:36:53.251Z","fields":[],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap and batchable on one sync execute: agents.work_next, agents.plan_get, agents.plan_claim. One per sync execute: agents.plan_propose, agents.plan_apply_proposal, agents.plan_recovery_scan, context.get. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Packs session.v1 and batch.v1: GET /mcp/actions field execute_budget.packs. Send context.project_id; other session fields default server-side. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate and other heavy actions per execute_budget; agents.run with wait=true; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). agents.work_next, agents.plan_get, and agents.plan_claim are cheap and may share that batch. LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{job_id}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":null,"description_similarity":null,"before_hash":"747f80d2344c92db6e98d87b3843d875","after_hash":null},{"tool":"agentstack.execute","kind":"added","observed_at":"2026-10-13T10:12:09.181Z","fields":[],"description_before":null,"description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap and batchable on one sync execute: agents.work_next, agents.plan_get, agents.plan_claim. One per sync execute: agents.plan_propose, agents.plan_apply_proposal, agents.plan_recovery_scan, context.get. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Packs session.v1 and batch.v1: GET /mcp/actions field execute_budget.packs. Send context.project_id; other session fields default server-side. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate and other heavy actions per execute_budget; agents.run with wait=true; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). agents.work_next, agents.plan_get, and agents.plan_claim are cheap and may share that batch. LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{job_id}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_similarity":null,"before_hash":"747f80d2344c92db6e98d87b3843d875","after_hash":"747f80d2344c92db6e98d87b3843d875"},{"tool":"agentstack.execute","kind":"removed","observed_at":"2026-10-12T23:02:22.373Z","fields":[],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap and batchable on one sync execute: agents.work_next, agents.plan_get, agents.plan_claim. One per sync execute: agents.plan_propose, agents.plan_apply_proposal, agents.plan_recovery_scan, context.get. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Packs session.v1 and batch.v1: GET /mcp/actions field execute_budget.packs. Send context.project_id; other session fields default server-side. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate and other heavy actions per execute_budget; agents.run with wait=true; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). agents.work_next, agents.plan_get, and agents.plan_claim are cheap and may share that batch. LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{job_id}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":null,"description_similarity":null,"before_hash":"747f80d2344c92db6e98d87b3843d875","after_hash":null},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-12T03:45:42.012Z","fields":["description","inputSchema","outputSchema"],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap and batchable on one sync execute: agents.work_next, agents.plan_get, agents.plan_claim. One per sync execute: agents.plan_propose, agents.plan_apply_proposal, agents.plan_recovery_scan, context.get. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate, commerce.ai.generate_products, commerce.ai.magic_fill, knowledge.playground; agents.run with wait=true; agents.plan_suggest_tree when use_llm; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). agents.work_next, agents.plan_get, and agents.plan_claim are cheap and may share that batch. LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{job_id}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap and batchable on one sync execute: agents.work_next, agents.plan_get, agents.plan_claim. One per sync execute: agents.plan_propose, agents.plan_apply_proposal, agents.plan_recovery_scan, context.get. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Packs session.v1 and batch.v1: GET /mcp/actions field execute_budget.packs. Send context.project_id; other session fields default server-side. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate and other heavy actions per execute_budget; agents.run with wait=true; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). agents.work_next, agents.plan_get, and agents.plan_claim are cheap and may share that batch. LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{job_id}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_similarity":0.876,"before_hash":"2a142367bbe8c4dd5d8b53da687c27f0","after_hash":"747f80d2344c92db6e98d87b3843d875"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-11T02:50:53.094Z","fields":["outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"91b75b44d8582ea26d3a8381d035f2d4","after_hash":"2a142367bbe8c4dd5d8b53da687c27f0"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-10T20:20:11.482Z","fields":["inputSchema","outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"5c75d1a68a4c7d0d99f93dac3db50266","after_hash":"91b75b44d8582ea26d3a8381d035f2d4"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-10T14:19:54.459Z","fields":["inputSchema","outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"d59d741887ce3dae20f236ec76ddab90","after_hash":"5c75d1a68a4c7d0d99f93dac3db50266"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-10T02:45:56.289Z","fields":["outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"734b54ee58f444226999ab38ae8fc28f","after_hash":"d59d741887ce3dae20f236ec76ddab90"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-09T20:37:28.572Z","fields":["inputSchema","outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"cbba6589c960549805659e3e1209c8bc","after_hash":"734b54ee58f444226999ab38ae8fc28f"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-08T14:51:03.761Z","fields":["title","description","outputSchema"],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate, knowledge.playground, agents.run with wait=true, agents.plan_*, context.get); LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{{{job_id}}}}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Cheap and batchable on one sync execute: agents.work_next, agents.plan_get, agents.plan_claim. One per sync execute: agents.plan_propose, agents.plan_apply_proposal, agents.plan_recovery_scan, context.get. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate, commerce.ai.generate_products, commerce.ai.magic_fill, knowledge.playground; agents.run with wait=true; agents.plan_suggest_tree when use_llm; agents.plan_apply_proposal, agents.plan_propose, agents.plan_recovery_scan, context.get). agents.work_next, agents.plan_get, and agents.plan_claim are cheap and may share that batch. LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{job_id}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_similarity":0.875,"before_hash":"0c5a6d7164185cdf00677364229243ed","after_hash":"cbba6589c960549805659e3e1209c8bc"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-08T02:42:43.585Z","fields":["description","inputSchema","outputSchema"],"description_before":"Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> domain work. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Execute AgentStack operations as steps: id, action, params. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. Heavy LLM actions (bots.simulate, knowledge.playground, agents.run with wait=true) : at most one per sync execute. A single heavy step is widened to ai_stream (180000 ms). Cheap discovery/list/get actions may batch (max 50 steps). Large suites: sequential executes, or options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{job_id}}). Catalog: GET /mcp/actions (see execute_budget). Cite one number: catalog_actions_public from GET /mcp/actions/summary. GET /mcp/health tools_count is the registry size, not the action catalog. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Domain count is whatever that catalog lists - do not reuse a stale public-domain number. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate, knowledge.playground, agents.run with wait=true, agents.plan_*, context.get); LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{{{job_id}}}}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_similarity":0.64,"before_hash":"eef70e8308d65e55ea6c52db3e330c61","after_hash":"0c5a6d7164185cdf00677364229243ed"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-07T20:22:01.427Z","fields":["description"],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate, knowledge.playground, agents.run with wait=true, agents.plan_*, context.get); LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{{{job_id}}}}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":"Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> domain work. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Execute AgentStack operations as steps: id, action, params. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. Heavy LLM actions (bots.simulate, knowledge.playground, agents.run with wait=true) : at most one per sync execute. A single heavy step is widened to ai_stream (180000 ms). Cheap discovery/list/get actions may batch (max 50 steps). Large suites: sequential executes, or options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{job_id}}). Catalog: GET /mcp/actions (see execute_budget). Cite one number: catalog_actions_public from GET /mcp/actions/summary. GET /mcp/health tools_count is the registry size, not the action catalog. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Domain count is whatever that catalog lists - do not reuse a stale public-domain number. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_similarity":0.64,"before_hash":"16d9b18a3c0f85e255cd946e9e5cf75d","after_hash":"eef70e8308d65e55ea6c52db3e330c61"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-07T14:48:14.535Z","fields":["description"],"description_before":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One heavy LLM step per sync execute (bots.simulate, knowledge.playground, agents.run with wait=true); that step widens to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{{{job_id}}}}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate, knowledge.playground, agents.run with wait=true, agents.plan_*, context.get); LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{{{job_id}}}}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_similarity":0.961,"before_hash":"38428944d4e41d5f2743af173123cc97","after_hash":"16d9b18a3c0f85e255cd946e9e5cf75d"},{"tool":"agentstack.execute","kind":"changed","observed_at":"2026-10-07T08:29:33.920Z","fields":["description"],"description_before":"Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> domain work. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Execute AgentStack operations as steps: id, action, params. Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. Heavy LLM actions (bots.simulate, knowledge.playground, agents.run with wait=true) : at most one per sync execute. A single heavy step is widened to ai_stream (180000 ms). Cheap discovery/list/get actions may batch (max 50 steps). Large suites: sequential executes, or options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{job_id}}). Catalog: GET /mcp/actions (see execute_budget). Cite one number: catalog_actions_public from GET /mcp/actions/summary. GET /mcp/health tools_count is the registry size, not the action catalog. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Domain count is whatever that catalog lists - do not reuse a stale public-domain number. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_after":"AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One heavy LLM step per sync execute (bots.simulate, knowledge.playground, agents.run with wait=true); that step widens to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{{{job_id}}}}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).","description_similarity":0.644,"before_hash":"eef70e8308d65e55ea6c52db3e330c61","after_hash":"38428944d4e41d5f2743af173123cc97"}],"next_before":null,"next_actions":[]}