Ninja MCP
Allows inspection of Apple Pay as a payment method for the Ninja/AnaNinja mobile API, including availability and details for pending checkouts.
Allows inspection of Google Pay as a payment method for the Ninja/AnaNinja mobile API, including availability and details for pending checkouts.
Allows inspection of Samsung Pay as a payment method for the Ninja/AnaNinja mobile API, including availability and details for pending checkouts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ninja MCPsearch for organic milk in Riyadh"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Unofficial Ninja MCP
MCP server for AI agents working with the Ninja/AnaNinja API.
This project exposes the Ninja/AnaNinja API as a small operational MCP:
auth with reusable local
deviceId/authKeysaved addresses
vertical/store discovery for retail, pharmacy, beauty, and restaurants
retail/pharmacy/beauty product search, detail lookup, and product image URLs
restaurant branch search, menu lookup, variant IDs, and topping metadata
draft order validation for product verticals and restaurants
guarded checkout creation
payment-method inspection plus saved-card, wallet, and STC Pay helpers
Live checkout/payment tools use explicit execution flags and keep state in local 0600 files.
Install
npm install
npm run buildRun locally:
npm startMCP client config example:
{
"mcpServers": {
"ninja": {
"command": "node",
"args": ["/absolute/path/to/ninja-mcp/dist/index.js"],
"env": {
"NINJA_MCP_STATE_FILE": "/Users/you/.ninja-mcp/state.json"
}
}
}
}Related MCP server: wolt-mcp
First Login
Call
ninja_auth_start_loginwith the account phone number. This registers a device session and sends an OTP.Call
ninja_auth_verify_otpwith the OTP.Future calls reuse the saved auth key. This MCP does not use an OAuth refresh-token flow.
The default state path is:
~/.ninja-mcp/state.jsonOverride with:
NINJA_MCP_STATE_FILE=/secure/path/state.jsonState files contain auth material.
Current Coverage
Implemented:
auth/device session reuse
saved address listing
vertical discovery for
RETAIL,PHARMACY,BEAUTY, andRESTAURANTproduct search and detail lookup for retail/pharmacy/beauty through the Fahras products endpoint
product image URL extraction from product and restaurant menu media
restaurant branch search and restaurant menu lookup through GraphQL
draft order validation for retail, pharmacy OTC, beauty, and restaurant carts
checkout creation for pending unpaid orders/payment requests
payment-method inspection for a pending checkout
account-level saved payment option inspection
payment helpers for saved card and wallet
STC Pay initiate + OTP helper flow
MCP request-shape support:
saved-card payment request shape:
savedCard.cardIdwith optionalsavedCard.cvvwallet payment request shape:
includeWallet: truerestaurant checkout request shape:
OrderRequest.restaurantwithbranchIdandmenuId, plus restaurant variant IDs inlineItems[].itemId
Not implemented by this MCP:
Tabby/Tamara and other redirect/token-based methods
Apple Pay, Samsung Pay, Google Pay, QPay, KNET, Benefit, Daftar
prescription/consultation pharmacy handling beyond
request.pharmacypassthrough
Agent Workflow
Read ninja://agent-guide or call ninja_agent_guide first.
Typical product-vertical call sequence:
ninja_saved_addressesninja_search_productswithvertical: "RETAIL","PHARMACY", or"BEAUTY"ninja_create_draft_orderReview the exact cart, total, delivery location, and payment method.
ninja_create_checkoutwithconfirmCreateOrder: trueninja_pending_payment_methodsChoose from the available payment methods.
Use a method-specific helper if this MCP implements that method.
Typical restaurant call sequence:
ninja_saved_addressesninja_search_restaurantsninja_restaurant_menuninja_create_draft_orderwithvertical: "RESTAURANT",restaurant.branchId,restaurant.menuId, and restaurant variant IDs inlineItems[].itemIdReview the draft, then continue through checkout/payment if the cart is correct.
Implemented method-specific helpers:
saved card: call
ninja_pending_payment_methods, choose acardIndex, then callninja_pay_saved_cardwallet: call
ninja_pay_walletif wallet is available for the pending checkoutSTC Pay: use
ninja_initiate_stc_pay, collect the fresh OTP, then callninja_submit_stc_otp
Card setup: card registration is outside this MCP. Add a saved card to the account, then refresh ninja_saved_payment_options or ninja_pending_payment_methods. Once the card appears as saved, use ninja_pay_saved_card.
API Notes
The bearer token is a short-lived HS256 JWT signed locally with
authKey.Saved addresses are backend GraphQL data, not only local client memory.
Product search uses vertical discovery to find the store/search context, then the Fahras products endpoint.
Product image URLs come from
medias; search/menu tools return them asimageUrls.Retail/pharmacy/beauty product search returns both
idandproductId. UseproductId, exposed asorderItemId, forlineItems[].itemId. Theidfield is store-scoped and should not be used as the cart item id.Restaurant carts use menu variant IDs. Use
variant.orderItemId/variantIdfromninja_restaurant_menuforlineItems[].itemId.Restaurant toppings use
toppingIdandtoppingOptionIdfrom the menu response.createDraftOrder.paymentMethodsis a direct list, not a{ data: [...] }wrapper.Always draft before checkout/payment.
createOrdercan recover the same pending payment request for the same cart.Payment methods are returned per payment request; availability can vary by account, cart, location, and time.
ninja_pending_payment_methodslabels each method withapiCapabilityandmcpCapability.Saved cards expose
requiresCvv; saved-card payment acceptscardIndexorcardId, plus optionalcvv.ninja_saved_payment_optionslists account-level saved cards and wallets; for an actual checkout, preferninja_pending_payment_methods.STC Pay initiate expects
mobileNumberin9665XXXXXXXXform; the MCP normalizes common Saudi formats.Payment calls can return
PENDING; pollpaymentStatusand then inspectshowOrder.Totals are read from known payment-summary keys. If the upstream shape changes, the MCP reports candidate keys instead of guessing from an arbitrary amount.
State And Side Effects
Tool outputs redact full auth/payment IDs.
Auth state and pending payment context are written with mode
0600.Live mutation tools use execution flags, such as
confirmCreateOrder,confirmSendOtp,confirmSubmitOtp, andconfirmSubmitPayment.Failed payment attempts keep pending context so callers can try another available method.
Successful payment clears pending checkout context.
Environment
NINJA_MCP_STATE_FILE=/secure/path/state.json
NINJA_FIREBASE_CHECK_TOKEN=optional_firebase_check_token
NINJA_CLIENT_VERSION=optional_api_client_version_override
NINJA_CLIENT_USER_AGENT=optional_api_user_agent_overrideAvailable Tools
19 toolsninja_agent_guideRead Ninja Agent GuideB
Return the condensed guide for agents using this MCP.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It only says 'Return the condensed guide' without disclosing any behavioral traits such as side effects (none expected), required authentication, rate limits, or output format. This is insufficient for safe agent invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately conveys the action. It is front-loaded and has no redundant words. Could include more context but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description provides the essential purpose. However, it lacks details on what the guide contains, how it helps the agent, or any usage hints. It is minimally complete but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100%. Per guidelines, 0 parameters gives a baseline of 4. The description adds no extra parameter info, which is acceptable as there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a condensed guide for agents using this MCP. It specifies the verb 'Return' and the resource 'guide', and it stands out from sibling tools which focus on auth, payments, and shopping actions. However, it could be more specific about the guide's content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when or when not to use this tool. It does not mention prerequisites, alternatives, or context. The agent gets no help deciding to invoke this over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_auth_start_loginStart Ninja OTP LoginA
Register a device session and start phone login. This sends an OTP.
| Name | Required | Description | Default |
|---|---|---|---|
| mobileNumber | Yes | Account phone number, preferably +9665XXXXXXXX. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that an OTP is sent and a device session is registered, which are key behavioral traits. However, it omits details like whether existing sessions are invalidated, rate limits, or auth requirements. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each adding value. It is front-loaded with the core action and includes the key consequence (sends OTP). No extra words; highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the essential purpose. It could mention the next expected step (verify_otp) or typical response, but it is largely complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the mobileNumber parameter includes a preferred format). The tool description adds no additional semantic value beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (register, start, send) and the resource (device session, phone login, OTP). It distinguishes from siblings like ninja_auth_verify_otp and ninja_auth_status, which handle subsequent steps or status checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as prerequisites (e.g., user must not already be logged in) or the typical flow (e.g., call this before verify_otp). The description lacks any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_auth_statusNinja Auth StatusA
Check whether local Ninja device auth state exists without exposing secrets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions 'without exposing secrets' indicating security behavior, but does not explicitly state read-only or side-effect-free nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no unnecessary words. Efficiently communicates core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers purpose and key constraint for a simple status check, but lacks explicit return type information (e.g., boolean).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. Description adds value by explaining tool's purpose, meeting baseline for 0 params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly specifies verb 'Check', resource 'local Ninja device auth state', and constraint 'without exposing secrets'. Distinguishes from auth flow siblings like ninja_auth_start_login.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for checking auth state before login, but does not explicitly state when to use vs. siblings or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_auth_verify_otpVerify Ninja Login OTPA
Verify the one-time Ninja login OTP. After this, the saved device auth key can be reused by this MCP.
| Name | Required | Description | Default |
|---|---|---|---|
| otp | Yes | Login OTP. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the behavioral side effect of enabling auth key reuse, but fails to mention success/failure behavior, rate limits, or security implications. The minimal disclosure is insufficient for a security-sensitive verification tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and followed by a consequential outcome. No unnecessary words or repetition. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description is adequate but lacks details such as prerequisites (e.g., call ninja_auth_start_login first), error handling, or output format. The absence of output schema and annotations further limits completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with a clear pattern and description for 'otp'. The description adds no new information beyond the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Verify' and the resource 'one-time Ninja login OTP'. It also explains the consequence (reuse of saved device auth key), distinguishing it from sibling tools like 'ninja_auth_start_login' (initiation) and 'ninja_auth_status' (status check).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a sequential usage ('After this, the saved device auth key can be reused'), giving context about when to call this tool. However, it does not explicitly state when not to use it or mention alternatives among the 18 sibling tools, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_create_checkoutCreate Payable CheckoutA
Create or recover a pending Ninja checkout/payment request. This creates an unpaid order/payment request; it does not pay.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| pharmacy | No | ||
| vertical | No | RETAIL | |
| addressId | Yes | ||
| lineItems | Yes | ||
| couponCode | No | ||
| restaurant | No | ||
| selectedAwardId | No | ||
| confirmCreateOrder | Yes | Set true to run the live createOrder mutation. | |
| expectedTotalCents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses that tool does not pay (key behavioral trait) but omits side effects, idempotency, or recovery specifics. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity (10 params, nested objects, no output schema, no annotations), description is too minimal. Missing return value, error conditions, recovery details, and parameter context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10%. Description does not explain any parameters beyond what the schema already provides. For 10 params including nested objects, more explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it creates or recovers a pending checkout/payment request and explicitly notes it does not pay. Title 'Create Payable Checkout' further clarifies. Distinguishes from payment and draft order sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Impiles use for creating/recovering unpaid checkouts but does not explicitly state when to use vs alternatives like ninja_create_draft_order or payment tools. No when-not or prerequisite conditions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_create_draft_orderCreate Draft OrderB
Validate a cart and pricing without creating a payable checkout. Supports retail, pharmacy OTC, beauty, and restaurant variant/topping line items.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| pharmacy | No | ||
| vertical | No | RETAIL | |
| addressId | Yes | ||
| lineItems | Yes | ||
| couponCode | No | ||
| restaurant | No | ||
| selectedAwardId | No | ||
| includeExactRequest | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states that the tool validates without creating a payable checkout, but it does not clarify whether a draft order is persisted, if the operation is idempotent, or what side effects (e.g., state changes) occur. The name suggests creation, but the description avoids confirming persistence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loading the core action. It is concise but under-specified given the tool's complexity (9 parameters, nested objects). The brevity leaves gaps, but it avoids unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, nested objects, no output schema, and no annotations, the description is too brief. It fails to explain what a draft order is, how validation works, what the response contains, or how to integrate with other Ninja tools (e.g., using it before ninja_create_checkout). The tool's complexity demands richer context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no parameter explanations beyond the schema's own descriptions. It does not elaborate on required fields like addressId or lineItems, nor does it clarify complex parameters like pharmacy, restaurant, or toppings. The schema provides some inline descriptions (e.g., for itemId), but the description fails to add semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Validate a cart and pricing without creating a payable checkout.' The verb 'validate' and the resource 'cart and pricing' are specific, and the exclusion of 'payable checkout' distinguishes it from related tools like ninja_create_checkout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions supported verticals (retail, pharmacy, beauty, restaurant) and line item types, providing context for when to use the tool. However, it does not explicitly state when not to use it or mention alternative tools like ninja_create_checkout, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_discover_retail_contextDiscover Retail Context (Alias)C
Compatibility alias for retail/grocery store/search context. Prefer ninja_discover_vertical_context for new agents.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | ||
| addressId | No | ||
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. However, it only identifies the tool as an alias and gives no information about side effects, return values, authentication requirements, or any other runtime behavior. This is a critical gap for an agent deciding whether to invoke the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short (two sentences) and avoids unnecessary verbosity. However, the first sentence is somewhat redundant by stating it is an alias without adding insight. The second sentence provides useful guidance but could be integrated more tightly. Overall, it is acceptable but not exemplary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, output schema, and parameter descriptions, the tool description is severely incomplete. It fails to define what 'discover retail context' means, how to use the parameters, what the expected output is, or any preconditions. The description is insufficient for an agent to safely and effectively use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has three parameters (latitude, addressId, longitude) with 0% description coverage in the schema. The description does not mention any parameters or explain their purpose, format, or relationships. With no compensating information, the meaning of these parameters is entirely opaque to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool is a 'compatibility alias for retail/grocery store/search context' but does not explicitly describe its function. The term 'alias' suggests it is a deprecated version, but the actual operation (e.g., discovering context) is not explained. Compared to the sibling tool ninja_discover_vertical_context, this description lacks clarity on what the tool accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs users to 'Prefer ninja_discover_vertical_context for new agents,' providing clear guidance on when to avoid this tool. This effectively differentiates the tool from its sibling and indicates it is for legacy compatibility only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_discover_vertical_contextDiscover Vertical ContextB
Resolve vertical availability for a saved address or coordinates. Product verticals include store/search context; restaurants use separate branch/menu tools.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | ||
| vertical | No | RETAIL | |
| addressId | No | ||
| longitude | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'resolve vertical availability' without explaining what that entails (e.g., returns boolean, requires auth, side effects). Lacks behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, no unnecessary words. Each sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 params (none required), no output schema, and no annotations, the description is insufficient. It does not explain what 'vertical availability' means, response format, or how parameters interact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not explain any parameter. It only hints that addressId or lat/long are used. No parameter meaning or usage guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves vertical availability for a saved address or coordinates, and distinguishes it from restaurant tools by mentioning separate branch/menu tools. The verb 'resolve' and resource 'vertical availability' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says restaurants should use separate tools, providing a when-not-to-use guideline. However, it does not explicitly state when to use this tool over alternatives like ninja_discover_retail_context, but implies it for product verticals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_initiate_stc_payInitiate STC PayB
Initiate STC Pay for the saved pending checkout. Sends a fresh STC Pay OTP.
| Name | Required | Description | Default |
|---|---|---|---|
| mobileNumber | Yes | Saudi mobile number. The MCP normalizes +9665..., 05..., or 5... to the required 9665... shape. | |
| confirmSendOtp | Yes | Set true to run the live STC initiate mutation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description lacks behavioral details beyond sending an OTP. No disclosure of side effects, state changes, or prerequisites. The confirmSendOtp guard is only in schema, not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with purpose. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Does not explain prerequisites (must have saved pending checkout), what response looks like, or integration with related tools. Incomplete for an agent unfamiliar with the flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with detailed parameter descriptions including mobile normalization. Description adds minimal value beyond schema context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'initiate', resource 'STC Pay', context 'saved pending checkout', and outcome 'sends a fresh STC Pay OTP'. Distinguishes from sibling tools like ninja_submit_stc_otp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for initiating STC Pay after checkout creation, but does not explicitly state prerequisites, when to use vs alternatives, or that it must be followed by submit_stc_otp.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_pay_saved_cardPay Saved CardA
Pay the saved pending checkout with a saved card. Use cardIndex from ninja_pending_payment_methods or provide a full cardId if known.
| Name | Required | Description | Default |
|---|---|---|---|
| cvv | No | ||
| cardId | No | ||
| cardIndex | No | ||
| pollCount | No | ||
| includeWallet | No | ||
| deviceSessionId | No | ||
| confirmSubmitPayment | Yes | Set true to run the live card payment submission. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It includes a safety note about confirmSubmitPayment being required for live execution, which adds transparency. However, it does not disclose side effects, auth requirements, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, front-loaded with the core action, and contains no unnecessary words. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters (one required) and no output schema, the description is insufficient. It omits details on return values, error handling, polling behavior (pollCount), wallet inclusion (includeWallet), and device session requirements, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% (only confirmSubmitPayment has a description). The description helps with cardIndex and cardId by referencing ninja_pending_payment_methods, but leaves cvv, pollCount, includeWallet, and deviceSessionId unexplained. It adds some value but does not compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Pay the saved pending checkout with a saved card.' It specifies using cardIndex from ninja_pending_payment_methods or providing cardId, which differentiates it from siblings like ninja_pay_wallet and ninja_initiate_stc_pay.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives guidance on how to identify the card (via cardIndex or cardId) but does not explicitly state when to use this tool versus other payment methods or when not to use it. The usage context is implied but not contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_pay_walletPay WalletC
Pay the saved pending checkout using wallet balance.
| Name | Required | Description | Default |
|---|---|---|---|
| pollCount | No | ||
| confirmSubmitPayment | Yes | Set true to run the live wallet payment submission. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'pay' which implies a destructive mutation, but does not disclose behavioral traits like idempotency, authentication requirements, or confirmation steps. The required confirmSubmitPayment parameter hints at a confirmation mechanism but is not explained in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant words. It is front-loaded with the action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having only 2 parameters and no output schema, the description is too brief. It fails to provide context about what 'pending checkout' is, how to obtain it, or what the pollCount parameter controls. A payment tool requires more behavioral detail to ensure safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: only confirmSubmitPayment has a description in the schema. The tool description does not explain either parameter (pollCount or confirmSubmitPayment). pollCount, a numeric parameter with constraints, is left undocumented, which is a significant omission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('pay') and the resource ('saved pending checkout using wallet balance'). It distinguishes from sibling tools like ninja_pay_saved_card which pays with a saved card, making the purpose specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as ninja_pay_saved_card or ninja_initiate_stc_pay. The description implies it's for a specific scenario but doesn't provide explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_pending_payment_methodsPending Checkout Payment MethodsA
Inspect methods for the saved pending checkout payment request before choosing any payment flow.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. While 'inspect' suggests a read-only operation, it does not explicitly state that it has no side effects, requires no special permissions, or what happens if no pending payment request exists. More detail would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 14 words, front-loading the verb and resource. Every word earns its place with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should detail what the tool returns. It says 'inspect methods' but does not specify the format, structure, or content of the output. For a simple inspection tool, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100% trivially. According to guidelines, the baseline is 4 for no parameters, and the description does not add parameter information (none needed).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'inspect' and resource 'methods for saved pending checkout payment request', clearly distinguishing it from sibling tools that perform payment actions (e.g., ninja_pay_saved_card, ninja_pay_wallet).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before choosing any payment flow' provides clear context on when to use this tool (prior to payment method selection). It implies a sequential order but does not explicitly state exclusions or alternatives, which is acceptable given the low complexity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_saved_addressesList Saved Ninja AddressesA
List saved addresses. Coordinates are approximate by default to avoid leaking exact home/work locations.
| Name | Required | Description | Default |
|---|---|---|---|
| includeExactCoordinates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that coordinates are approximate by default and why (privacy), and implicitly that the parameter toggles exact coordinates. This is good, though it doesn't mention any other behaviors like rate limits or data sources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, the second adds a key behavioral detail. No superfluous words, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description covers the main behavioral nuance (coordinate approximation). It could mention what fields are returned, but for a list operation the description is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is documented in the schema with type and default, but the description adds context by explaining the default approximation behavior, which indirectly explains the parameter's effect. However, it does not explicitly state that setting includeExactCoordinates to true returns exact coordinates, which would be clearer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists saved addresses, providing a specific verb and resource. While it doesn't differentiate from siblings, none of the sibling tools perform a similar function, so no confusion arises.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor does it specify whether it returns addresses for the current user or all users. An agent would have to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_saved_payment_optionsSaved Payment OptionsA
List account-level payment options, saved cards, and wallets for an optional amount. Use pending checkout methods for actual checkout availability.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Optional amount in SAR units. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description implies read-only operation via 'list' verb. It does not disclose potential limitations or side effects, but the context is sufficient for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, directly stating purpose and usage guidance. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one optional parameter and no output schema, the description fully covers what the tool does and when to use it, with no missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'amount' described in the schema. The description adds 'for an optional amount' which mirrors the schema, not adding significant new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists account-level payment options, saved cards, and wallets for an optional amount. This distinguishes it from sibling tools like ninja_pending_payment_methods which are for actual checkout availability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly guides to use pending checkout methods for actual checkout availability, providing clear when-to and when-not-to context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_search_productsSearch Ninja ProductsC
Search retail, pharmacy, or beauty products using Ninja's Fahras endpoint. Returns imageUrls and orderItemId/productId for cart line items.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| latitude | No | ||
| vertical | No | RETAIL | |
| addressId | No | ||
| brandCode | No | ||
| longitude | No | ||
| productIds | No | ||
| categoryIds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only says it searches and returns specific fields, but omits side effects, required permissions, pagination behavior, or error conditions. This is insufficient for a tool with 9 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy, but the first sentence could be more informative about parameter usage. It is acceptably concise but misses opportunities to add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no output schema, no annotations), the description is severely incomplete. It fails to explain how to construct a search, interpret results beyond two fields, or handle errors. A complete description would provide parameter semantics and usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 9 parameters with 0% description coverage, yet the description explains none of them. It does not elaborate on query, limit, latitude, longitude, addressId, brandCode, productIds, or categoryIds. The vertical parameter is implied but not explicitly linked to the three categories listed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches retail, pharmacy, or beauty products using a named endpoint, specifying returned fields imageUrls and orderItemId/productId. This is a specific verb-resource combination and distinguishes from sibling tools like ninja_discover_retail_context and ninja_search_restaurants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like ninja_discover_vertical_context or ninja_search_restaurants. No mention of prerequisites, limitations, or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_search_restaurantsSearch Ninja RestaurantsA
Search restaurant branches near a saved address or coordinates. Use branchId with ninja_restaurant_menu before drafting a restaurant order.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| itemId | No | ||
| latitude | No | ||
| topRated | No | ||
| addressId | No | ||
| longitude | No | ||
| cuisineIds | No | ||
| pageNumber | No | ||
| freeDelivery | No | ||
| hasActiveDiscount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses geospatial search behavior but does not mention pagination, rate limits, or authentication requirements. Adequate for a search tool but could be more specific.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the primary purpose and adding a workflow hint. Every word is earned, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 undocumented parameters, no output schema, and no annotations, the description fails to provide sufficient context for an agent to use all features correctly. Missing details on pagination, filtering, and response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description only vaguely references 'saved address or coordinates' without mapping to parameters like addressId, latitude, or longitude. No explanation of other parameters (query, limit, cuisineIds, etc.), leaving the agent to guess their roles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches restaurant branches near a saved address or coordinates. It distinguishes from siblings like ninja_search_products and provides a workflow hint to use branchId with ninja_restaurant_menu.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning a follow-up action (use branchId with ninja_restaurant_menu). It does not explicitly exclude alternatives or state when not to use, but the workflow guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_show_pending_orderShow Pending OrderA
Show redacted order/payment status for the saved pending checkout.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not mention whether the tool is read-only or has side effects. The term 'redacted' hints at output but does not clarify behavioral implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise and directly states the purpose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless tool, the description adequately conveys the output (redacted status). However, with no output schema, more detail about the format could be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description adds value by explaining what the tool shows, which compensates for the lack of parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Show' and resource 'redacted order/payment status' for the 'saved pending checkout'. This clearly distinguishes it from sibling tools that create or process payments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like ninja_pending_payment_methods or ninja_create_checkout. An agent would benefit from knowing this is for checking status before payment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ninja_submit_stc_otpSubmit STC Pay OTPC
Submit an STC Pay OTP. This can complete payment and place the order.
| Name | Required | Description | Default |
|---|---|---|---|
| otp | Yes | Fresh STC Pay OTP. | |
| pollCount | No | ||
| confirmSubmitOtp | Yes | Set true to run the live payment submission. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lacks annotations. Description only says 'submit' and 'complete payment' without disclosing side effects, idempotency, authorization needs, or error behavior. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, very concise with no fluff. However, it is under-specified and omits important context, making conciseness a trade-off with completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema. Description does not cover return values, error states, pollCount behavior, or what happens after successful submission. Incomplete for a payment confirmation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (no description for pollCount). Description adds no parameter details beyond what schema provides, failing to compensate for the missing pollCount description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (submit OTP) and outcome (complete payment and place order). It distinguishes from siblings like ninja_initiate_stc_pay by implying finalization, but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., must have initiated STC Pay first), and no context about ordering in a payment flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
19 tool updates
v0.1.0- First observed
ninja_agent_guide - First observed
ninja_auth_start_login - First observed
ninja_auth_status - First observed
ninja_auth_verify_otp - First observed
ninja_create_checkout - First observed
ninja_create_draft_order - First observed
ninja_discover_retail_context - First observed
ninja_discover_vertical_context - First observed
ninja_initiate_stc_pay - First observed
ninja_pay_saved_card - First observed
ninja_pay_wallet - First observed
ninja_pending_payment_methods - First observed
ninja_restaurant_menu - First observed
ninja_saved_addresses - First observed
ninja_saved_payment_options - First observed
ninja_search_products - First observed
ninja_search_restaurants - First observed
ninja_show_pending_order - First observed
ninja_submit_stc_otp
TDQS
Most tools have clear distinct purposes, but ninja_discover_retail_context is a deprecated alias for ninja_discover_vertical_context, causing slight overlap. Other tools like the two OTP verification ones are for different flows.
All tools follow a consistent verb_noun pattern with snake_case and the 'ninja_' prefix. No mixed conventions or unpredictable naming.
19 tools is slightly above the ideal 3-15 range, but still reasonable for a comprehensive ordering and payment system covering auth, checkout, payments, search, and more.
The set covers the main checkout and payment workflow, but lacks tools for updating or cancelling orders, viewing order history, or managing cart items. These gaps could cause agent failures.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that wraps Shopify, Amazon, and Google Maps intelligence tools. AI agents pay autonomously in USDC on Base via x402 — no API keys or accounts needed.62MIT
- AlicenseAqualityDmaintenanceA thin MCP server that exposes Wolt's public consumer endpoints to AI agents, enabling discovery of nearby venues and fetching their menus with live prices and deal signals.2MIT
- AlicenseAqualityDmaintenanceMCP server for Mindbody, enabling AI agents to fetch client info, query class schedules, book classes/appointments (env-gated), and process checkout (payment-gated).5MIT
- AlicenseAqualityCmaintenanceMCP server that connects AI agents to Codinfy platform APIs for validating licenses, creating checkouts, listing products, tracking analytics, managing OAuth identity, and handling ad placements.17MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Khaled-Harthi/Ninja-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server