An agent that needs an order status must obtain it from the system holding the order. A tool definition describes the lookup it can request.

## Do the two names mean different things?

Some providers use the names interchangeably. The provider's tool definition determines the interface you implement.

[OpenAI's function-calling guide](https://developers.openai.com/api/docs/guides/function-calling) uses function calling and tool calling for the same process. Within its tool types, a function uses a JSON schema to describe its inputs. Its custom tools accept free-form text instead.

[Google's function-calling guide](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/tools/function-calling) also calls the process tool use. The model returns the requested function and its arguments for the application to execute.

## Who executes the requested action?

Your application executes an application-defined function after receiving the model's request.

In [OpenAI's tool-calling flow](https://developers.openai.com/api/docs/guides/function-calling), the application supplies tool definitions and receives a call. It runs the corresponding code and returns the result to the model. The model can then respond or request another tool.

A hypothetical order lookup follows this exchange:

```text
Model: request lookup_order with an order ID
  -> Application: authorize and run the lookup
  -> Order service: return the recorded status
  -> Application: supply the tool result to the model
  -> Model: answer using that result
```

[Google's guide](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/tools/function-calling) similarly describes the application mapping the returned function name to executable code. A model response containing arguments has not, by itself, performed the lookup.

## Where does MCP fit?

MCP gives a client a protocol for discovering and invoking tools exposed by a server.

The [MCP architecture guide](https://modelcontextprotocol.io/docs/2026-07-28/learn/architecture) separates that client-server exchange from the host application's model interaction. The host can make a discovered server tool available to the model, then route a requested call through its MCP client.

You can implement a model's function handler without MCP. You can also implement that handler by invoking an MCP server. These choices concern the connection behind the action.

## How do I check the result when sending with Bird?

You can use [Bird's MCP tools](/docs/ai/mcp-server) to send a message and retrieve its recorded status.

For email, `email_send` submits the send. Retain the returned message identifier and use `email_get` to inspect its aggregate delivery status. Recipient details carry the individual recipient outcomes.

A correctly formed tool request does not establish delivery. The [accepted-versus-delivered answer](/explained/platform/why-is-my-message-accepted-but-not-delivered) explains what the later status establishes.

## Related resources

- [Send your first email](/docs/get-started/send-your-first-email) (docs)
- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)

[Get an implementation brief](/learn/workspace?topic=api-basics)
