MCP tool schema: what it is, how it works, and examples
.png)
Before your AI agents can invoke tools successfully, they need to understand the parameters, or arguments, that need to pass into the tools.
Otherwise, the tool will return an error.
For example, if you’re trying to call Asana’s <code class="blog_inline-code">get_user</code> tool and you don’t include a required argument like a user name, you can receive the following response:
To help you avoid this type of error, we’ll break down everything you need to know about MCP tool schema, from how you can construct calls with arguments to real-world examples.
What is MCP tool schema?
It’s a JSON object that outlines the required and optional arguments for a tool. This helps AI agents identify the appropriate ways to invoke tools.
Each tool schema includes the following fields:
- The tool's name. For example, <code class="blog_inline-code">get_user</code>
- A description in plain text that explains what the tool does
- InputSchema, which defines the structure and type of data the tool accepts, such as an object or a string
- Whether a given data type is required or not
Putting this all together, here’s how it can be structured:
Related: What is an MCP connector?
How to use MCP tool schema
Once you understand a tool’s MCP schema, your agent can structure your tool call via JSON.
For example, if you know a user ID is required and you want to retrieve a user’s full name and email address, your agent can use the following JSON as part of its request:
Note: MCP tool descriptions and names are the other core elements of an MCP tool. They can help your AI agents determine the best tool to invoke, so they’re used before the agent leverages a tool’s schema.
Examples of MCP tool schemas
Here are just a few MCP tool schemas from Merge Agent Handler’s MCP servers.
GitHub’s tool schema for fetching issues
The project management platform for developers can use the tool schema below for its <code class="blog_inline-code">get_issue</code> tool.
This schema confirms that the arguments need to use an input that’s an object.
You’ll need to nest the owner, repo, and issue number within the input. In addition, the owner and repo be provided via string format, while the issue number needs to be an integer.
Slack’s tool schema for creating a channel
The business communications platform can use the tool schema below for its <code class="blog_inline-code">create_channel</code> tool to help agents create a specific channel.
Like the previous example, this tool’s arguments need to be wrapped inside an input object. Within that object, you’ll need to confirm the team the channel should belong to (as a string), the channel name you want to use (as a string), and whether the channel should be private or public (as a boolean).
Greenhouse’s tool schema for moving applications to another stage
Greenhouse can help agents move candidates to different stages in the ATS platform by providing the following schema for its <code class="blog_inline-code">move_applications</code> tool.
The only required arguments are the application ID and an input argument that includes the parameter, “<code class="blog_inline-code">on_behalf_of</code>” (to clarify who’s asking the agent to move the application to a different stage). In addition, the former argument should be an integer while the latter should be a string.
{{this-blog-only-cta}}
.png)
.png)


