Back

How to Choose Which API Endpoints to Expose as MCP Tools

A practical framework for choosing API endpoints to expose as MCP tools, with guidance on workflow fit, tool clarity, access control, least privilege, risk, and avoiding tool overload.

Kelis Shekhaliya

Founder

TL;DR

Expose the smallest set of API endpoints that supports a clear user workflow, has understandable inputs and results, and can be protected with the right permissions. Prioritize useful reads and focused actions, write clear tool names and descriptions, exclude internal or high-risk routes by default, apply least privilege at the API layer, and expand the tool set only after testing shows a real need.

Which API endpoints should you expose as MCP tools?

Choose endpoints that an AI client can use to complete a specific user task with clear inputs, predictable results, and bounded permissions. Start with the workflow, not the API documentation: identify what the user wants to accomplish, find the smallest group of operations that supports it, and leave unrelated endpoints out.

An endpoint can be technically valid and still be a poor MCP tool. Generic names, unclear parameters, overlapping routes, broad search behavior, hidden side effects, and excessive permissions make an AI-facing interface harder to understand and safer to operate. The goal is a focused capability surface, not a mirror of every route in the API.


API endpoint vs. MCP tool: what is the difference?

An API endpoint is a route exposed by your application. An MCP tool is a named, described capability that an MCP client can discover and invoke with structured input. A common API-to-MCP mapping starts with one endpoint per tool, but the product meaning of the capability matters more than the HTTP method or URL.

For example:

API endpoint

Candidate MCP tool

User-facing capability

GET /tickets/{ticket_id}

get_ticket

Read one support ticket

GET /tickets?status=open

list_open_tickets

Find open tickets with a useful filter

POST /tickets

create_ticket

Open a new support ticket

DELETE /tickets/{ticket_id}

Usually exclude initially

Permanently remove a ticket

The last endpoint may be a valid API operation, but deletion is a high-impact action. It needs a clear product need, a narrowly scoped permission, and an appropriate confirmation or review path before it becomes an AI-facing tool.

The MCP tools guidance explains the tool primitive in the 0mcp documentation. The official MCP tools specification also defines tools through a unique name, human-readable description, and input schema. Those fields are part of the interface the AI client uses to decide what to call.


A decision framework for endpoint selection

Review each endpoint against six questions:

  1. Workflow fit: Does it support a real task a user would ask an AI assistant to complete?

  2. Tool clarity: Can the endpoint be described as one understandable action?

  3. Input quality: Are required fields, types, filters, and allowed values clear?

  4. Result quality: Does it return useful, predictable data that the client can interpret?

  5. Permission boundary: Can access be limited to the right user, tenant, role, and operation?

  6. Operational fit: Can the endpoint handle timeouts, pagination, rate limits, and errors in a way the workflow can explain?

Use this simple classification before deciding:

Endpoint type

Default decision

Why

Focused record lookup

Keep or test first

Usually easy to describe and useful in many workflows

Search or list with bounded filters

Keep if inputs are clear

Helps an AI client find the right record without arbitrary querying

Narrow create or update action

Review and test carefully

Useful, but it changes data and needs appropriate permissions

Multi-purpose administrative route

Exclude by default

The action and risk are usually too broad for a first tool set

Login, token, or credential route

Exclude

Authentication belongs in the runtime credential flow, not a model-selected tool

Debug, health-check, or internal route

Exclude

It rarely represents a customer workflow

Delete, bulk update, or irreversible action

Review separately

The impact requires stronger controls and often confirmation

This is a starting framework rather than a permanent rule. An endpoint that is not appropriate for the first MCP server may become useful after the product has a clear workflow, permission model, and test coverage for it.


1. Start with a user workflow, not a route list

Write down the task in the user's language:

  • “Find the unresolved tickets for this customer.”

  • “Show the latest invoice and explain its payment status.”

  • “Create a project from this approved request.”

  • “Update the delivery date after the customer confirms it.”

Then identify the minimum operations required. The first workflow might need one search tool and one record tool. A second workflow might add a create or update action. You do not need to expose the rest of the product API to validate the idea.

This approach also reveals missing capabilities. If a user must call five low-level endpoints to complete one simple task, the API surface may need a workflow-specific tool or a carefully designed sequence rather than five unrelated tools exposed at once.


2. Prefer focused, composable capabilities

A strong MCP tool has one main job. It should not make the AI client guess which action to take based on a large list of flags or an arbitrary endpoint argument.

Prefer:

  • search_customers with documented filters;

  • get_customer for one known record;

  • create_ticket with a clear request body; and

  • update_ticket_status when the allowed state transitions are documented.

Be cautious with:

  • call_any_endpoint;

  • run_query with unrestricted query text;

  • manage_record with many unrelated actions; and

  • admin_operations that combine reads, writes, and deletion.

Focused tools make the available product surface easier to discover, test, authorize, and explain. They also make it easier to identify which tool caused a failed or unexpected request.


3. Design for tool clarity

Tool clarity is not a copywriting detail. It affects how an AI client selects a capability and how a user understands an action before it runs.

For each endpoint you keep, define:

  • a stable name that describes the action;

  • a short description explaining when to use it;

  • input descriptions for ambiguous fields;

  • required and optional fields;

  • enums, defaults, and formats;

  • a clear result shape; and

  • an explicit note about side effects when the tool changes data.

Compare these two options:

Weak tool

Clear tool

api_request_4

list_open_tickets

“Calls the API.”

“Find open support tickets for a customer, with optional pagination.”

data with unknown fields

customer_id, cursor, and limit with descriptions

No side-effect information

“Read-only; does not change ticket state.”

Do not hide a broad API behind a generic tool name. A model should not have to reconstruct the method, URL, parameters, and permission meaning from an opaque call_endpoint input.


4. Apply least privilege at the endpoint level

Least privilege means the MCP client and its runtime credentials should have only the access required for the selected workflow. The tool list is one layer of control; the API's authentication and authorization checks remain the enforcement boundary.

For every selected endpoint, document:

  • which identity is making the request;

  • which tenant or account the request can access;

  • which role or scope is required;

  • whether the endpoint reads or changes data;

  • which records or fields can be modified; and

  • what happens when permission is missing.

Use read-only credentials for read-only workflows where possible. Separate high-impact write operations from broad read access. Do not assume that hiding an endpoint from the tool list is enough if the upstream credential can still call it through another path.

The authorization documentation is a useful reference for separating authentication from the permission decisions that protect an API. The Trust page also explains the platform's runtime credential pass-through and data-minimization approach.


5. Treat write and destructive endpoints differently

Read operations and write operations should not receive the same review.

Lower-risk starting points

These are often good first candidates when the data is not highly sensitive:

  • get one record by an explicit identifier;

  • list records with bounded filters;

  • retrieve a report or status;

  • search within a defined product area; and

  • read a structured configuration.

Higher-risk operations

Review these separately:

  • create, update, or publish actions;

  • sending messages or notifications;

  • changing billing, permissions, or access settings;

  • bulk operations;

  • deletion or archival; and

  • operations that trigger external side effects.

For a write tool, the description should make the effect visible. Its schema should require the fields needed to make a deliberate request, not accept a broad free-form payload that hides the impact. Where the client supports confirmation, use it for actions that users would expect to review.


6. Avoid exposing too many tools

There is no universal number at which an MCP server becomes too large. The right limit depends on the product, the client, the workflow, and how clearly the tools are described. However, exposing an entire API creates predictable problems:

  • similar tools compete during selection;

  • the client has more descriptions and schemas to interpret;

  • duplicate routes create ambiguity;

  • high-risk capabilities expand the security surface;

  • testing becomes slower and less complete; and

  • API changes affect more AI-facing capabilities.

Group tools around a user workflow or product area instead of copying the navigation structure of the backend. If a server contains sales, billing, administration, and internal operations, consider whether those capabilities should be separate interfaces with different credentials and audiences.

Start with the smallest useful set, measure which tools are actually needed, and add capabilities deliberately. A short tool list with clear descriptions is usually more useful than a complete list of poorly bounded endpoints.


A practical endpoint scoring table

When several endpoints look similar, score them before selecting them. Use a simple scale such as high, medium, or low:

Endpoint

Workflow fit

Clarity

Permission boundary

Risk

First release?

Get one customer

High

High

Clear read scope

Low

Yes

Search customers

High

Medium

Read scope with filters

Medium

Test first

Update customer address

Medium

High

Field-level write scope

Medium

Maybe

Bulk customer export

Medium

Medium

Sensitive broad read

High

Usually no

Delete customer

Low or specific

High

Destructive scope

High

No by default

The table does not replace security review. It makes the trade-offs visible and helps a product or engineering team explain why an endpoint was included or excluded.


How the selection works in a hosted API-to-MCP workflow

For teams that want to choose operations without building the entire MCP management layer, 0mcp can import a supported OpenAPI, Swagger, or Postman definition, detect available operations, and let the team select which API functions to expose. Names and descriptions can be refined, and teams can create or update tools, resources, and prompts as the interface becomes more deliberate.

The selection decision still belongs to the API owner. A hosted workflow can make the candidates easier to review and the server easier to test, but it cannot decide what is safe for every product, tenant, role, or business process. Keep the API as the source of truth and use the dashboard selection as an explicit allowlist.


Test the selected endpoint set

Test the capability surface as a group, not only one endpoint at a time.

Discovery and clarity tests

Ask someone who did not design the API to inspect the tools and answer:

  • Which tool would they use for the target workflow?

  • Can they tell the difference between similar tools?

  • Do the descriptions explain read versus write behavior?

  • Are required inputs obvious?

  • Is any important side effect hidden?

If the answer is unclear, improve the tool names and descriptions before adding more endpoints.

Permission tests

Use credentials with different scopes or roles and verify that:

  • read tools cannot unexpectedly perform writes;

  • one tenant cannot access another tenant's records;

  • write tools reject insufficient permissions;

  • sensitive fields are returned only to authorized callers; and

  • removing an operation from the allowlist does not create a false sense of security if the API credential remains broad.

Behavior tests

For each selected tool, test:

  • a valid request;

  • missing required input;

  • invalid type or enum;

  • an empty result;

  • a missing record;

  • an authentication failure;

  • a permission failure;

  • a timeout or rate limit; and

  • a realistic write request when applicable.

The Playground guide describes the hosted testing path for inspecting capabilities, calling tools, verifying authentication, and reviewing usage logs.


Endpoint selection checklist

Before exposing an API operation as an MCP tool, confirm that:

  • It supports a clearly defined user workflow.

  • It has one primary action or lookup purpose.

  • The name is stable, unique, and understandable.

  • The description explains when to use it and what it changes.

  • Required inputs, types, enums, and defaults are accurate.

  • The response is useful and understandable as structured data.

  • Pagination, rate limits, and errors are understood.

  • The endpoint's identity, tenant, role, and scope requirements are documented.

  • The operation does not expose credentials or arbitrary endpoint construction.

  • Read, write, bulk, and destructive actions have different review levels.

  • The endpoint is part of a focused tool set rather than an unfiltered API mirror.

  • Valid, invalid, unauthorized, and side-effect cases have been tested.

If the endpoint fails several checks, do not expose it yet. Improve the API contract, narrow the operation, add a workflow-specific capability, or leave it out of the first MCP release.


FAQ

01Which API endpoints should become MCP tools first?+

Start with focused read operations and narrowly defined actions that support a real user workflow. Choose endpoints with clear inputs, predictable JSON results, bounded permissions, and descriptions an AI client can understand. Add higher-risk writes only after their authorization and testing are ready.

02Should every API endpoint be exposed as an MCP tool?+

No. An MCP server should expose a deliberate allowlist, not a copy of the entire API. Exclude login, token, debug, internal-admin, duplicate, arbitrary-query, and destructive routes unless there is a clear need and a suitable control model.

03How many MCP tools are too many?+

There is no universal tool-count limit. A tool set is too large when similar capabilities become difficult to distinguish, the client has trouble selecting the right action, security review becomes unclear, or testing no longer covers the exposed surface. Start small and expand based on actual workflow needs.

04How does least privilege apply to MCP tools?+

Expose only the operations and data needed for the workflow, use the narrowest API credentials and scopes available, and keep authorization enforced by the upstream API. The tool allowlist reduces exposure, but it does not replace tenant, role, record, and action checks in the API.

05Can 0mcp help me select which endpoints to expose?+

Yes. 0mcp can import a supported API definition or Postman collection, detect operations, and let you select the functions to expose. You remain responsible for deciding which capabilities are appropriate; the platform helps configure, test, host, and manage the selected MCP interface.