The short version
Function calling is a model-to-app contract. The app describes a function with a name, schema, and arguments. The model asks for the function, the app runs it, and the result returns to the model. It is excellent for stable first-party actions.
MCP, the Model Context Protocol, is a way to connect tools and context from external servers. Instead of hard-coding every integration into the app, an MCP server can expose files, databases, APIs, browser helpers, or domain tools through a common protocol.
When function calling is the right tool
Use function calling for the core actions the desktop app owns: read a file, list a folder, open a sidecar, run a bounded command, capture a screenshot, or ask for user confirmation. These tools should be small, predictable, and easy to audit.
In MultiAgentOS, core runtime tools are the stable surface that every model sees first. The goal is not to expose the whole machine. The goal is to give the model enough safe capability to understand the task and ask for the next useful surface.
When MCP is the right tool
Use MCP when a capability belongs outside the app or changes independently. Examples include a project-specific data source, a company API, a notes database, a design tool bridge, or a custom script collection. MCP lets those tools evolve without rebuilding the main desktop app.
The tradeoff is scope. An MCP server can be powerful, so the user should know which server is enabled, what tools it exposes, and why the current task needs it.
The desktop-agent safety rule
Do not expose every possible tool at once. A useful desktop agent starts narrow, then opens more capability as the task demands it. MultiAgentOS follows that shape with core prompt tools, sidecars, Windows on-demand packs, user-defined tools, and supervised subagents.
This matters for both quality and safety. Models behave better with fewer, clearer tools. Users behave better when the tool surface is visible and understandable. The app should make tool scope a product feature, not a hidden implementation detail.
Practical decision table
| Need | Use |
|---|---|
| Core file, shell, screenshot, or sidecar action | Function calling |
| External service or project-specific integration | MCP server |
| One-off local workflow | User-defined shell/script tool |
| Bounded delegated work | Supervised subagent with tool allow-list |