Skip to main content
Glama

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/authKey

  • saved 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 build

Run locally:

npm start

MCP 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

  1. Call ninja_auth_start_login with the account phone number. This registers a device session and sends an OTP.

  2. Call ninja_auth_verify_otp with the OTP.

  3. 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.json

Override with:

NINJA_MCP_STATE_FILE=/secure/path/state.json

State files contain auth material.

Current Coverage

Implemented:

  • auth/device session reuse

  • saved address listing

  • vertical discovery for RETAIL, PHARMACY, BEAUTY, and RESTAURANT

  • product 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.cardId with optional savedCard.cvv

  • wallet payment request shape: includeWallet: true

  • restaurant checkout request shape: OrderRequest.restaurant with branchId and menuId, plus restaurant variant IDs in lineItems[].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.pharmacy passthrough

Agent Workflow

Read ninja://agent-guide or call ninja_agent_guide first.

Typical product-vertical call sequence:

  1. ninja_saved_addresses

  2. ninja_search_products with vertical: "RETAIL", "PHARMACY", or "BEAUTY"

  3. ninja_create_draft_order

  4. Review the exact cart, total, delivery location, and payment method.

  5. ninja_create_checkout with confirmCreateOrder: true

  6. ninja_pending_payment_methods

  7. Choose from the available payment methods.

  8. Use a method-specific helper if this MCP implements that method.

Typical restaurant call sequence:

  1. ninja_saved_addresses

  2. ninja_search_restaurants

  3. ninja_restaurant_menu

  4. ninja_create_draft_order with vertical: "RESTAURANT", restaurant.branchId, restaurant.menuId, and restaurant variant IDs in lineItems[].itemId

  5. Review the draft, then continue through checkout/payment if the cart is correct.

Implemented method-specific helpers:

  • saved card: call ninja_pending_payment_methods, choose a cardIndex, then call ninja_pay_saved_card

  • wallet: call ninja_pay_wallet if wallet is available for the pending checkout

  • STC Pay: use ninja_initiate_stc_pay, collect the fresh OTP, then call ninja_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 as imageUrls.

  • Retail/pharmacy/beauty product search returns both id and productId. Use productId, exposed as orderItemId, for lineItems[].itemId. The id field is store-scoped and should not be used as the cart item id.

  • Restaurant carts use menu variant IDs. Use variant.orderItemId / variantId from ninja_restaurant_menu for lineItems[].itemId.

  • Restaurant toppings use toppingId and toppingOptionId from the menu response.

  • createDraftOrder.paymentMethods is a direct list, not a { data: [...] } wrapper.

  • Always draft before checkout/payment.

  • createOrder can 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_methods labels each method with apiCapability and mcpCapability.

  • Saved cards expose requiresCvv; saved-card payment accepts cardIndex or cardId, plus optional cvv.

  • ninja_saved_payment_options lists account-level saved cards and wallets; for an actual checkout, prefer ninja_pending_payment_methods.

  • STC Pay initiate expects mobileNumber in 9665XXXXXXXX form; the MCP normalizes common Saudi formats.

  • Payment calls can return PENDING; poll paymentStatus and then inspect showOrder.

  • 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, and confirmSubmitPayment.

  • 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_override

Available Tools

19 tools
ninja_agent_guideRead Ninja Agent GuideB

Return the condensed guide for agents using this MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
mobileNumberYesAccount phone number, preferably +9665XXXXXXXX.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
otpYesLogin OTP.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
pharmacyNo
verticalNoRETAIL
addressIdYes
lineItemsYes
couponCodeNo
restaurantNo
selectedAwardIdNo
confirmCreateOrderYesSet true to run the live createOrder mutation.
expectedTotalCentsNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
pharmacyNo
verticalNoRETAIL
addressIdYes
lineItemsYes
couponCodeNo
restaurantNo
selectedAwardIdNo
includeExactRequestNo

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
addressIdNo
longitudeNo

TDQS

C2.1/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose2/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
verticalNoRETAIL
addressIdNo
longitudeNo

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
mobileNumberYesSaudi mobile number. The MCP normalizes +9665..., 05..., or 5... to the required 9665... shape.
confirmSendOtpYesSet true to run the live STC initiate mutation.

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cvvNo
cardIdNo
cardIndexNo
pollCountNo
includeWalletNo
deviceSessionIdNo
confirmSubmitPaymentYesSet true to run the live card payment submission.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pollCountNo
confirmSubmitPaymentYesSet true to run the live wallet payment submission.

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_restaurant_menuGet Restaurant MenuC

Fetch a restaurant branch menu. Menu output includes menuId, product imageUrls, variant orderItemId values, and topping/modifier ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchIdYes
maxProductsPerCategoryNo

TDQS

C2.8/5.0
Behavior2/5

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 discloses some output fields (menuId, imageUrls, etc.), but does not mention behavioral traits like read-only nature, authentication needs, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences. Every sentence adds value: one defines the action, the other hints at output fields. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters and no output schema, the description is incomplete. It does not clarify required input (branchId) or the optional parameter's default and constraints, which are crucial for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description does not explain any parameters. It omits what branchId and maxProductsPerCategory mean, leaving the agent to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch a restaurant branch menu', which is a specific verb+resource. It distinguishes from sibling tools like ninja_search_restaurants or ninja_search_products, as no other tool fetches a menu.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or compare with siblings like ninja_search_products.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeExactCoordinatesNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoOptional amount in SAR units.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
latitudeNo
verticalNoRETAIL
addressIdNo
brandCodeNo
longitudeNo
productIdsNo
categoryIdsNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
itemIdNo
latitudeNo
topRatedNo
addressIdNo
longitudeNo
cuisineIdsNo
pageNumberNo
freeDeliveryNo
hasActiveDiscountNo

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
otpYesFresh STC Pay OTP.
pollCountNo
confirmSubmitOtpYesSet true to run the live payment submission.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 19 tool updatesv0.1.0
    • First observedninja_agent_guide
    • First observedninja_auth_start_login
    • First observedninja_auth_status
    • First observedninja_auth_verify_otp
    • First observedninja_create_checkout
    • First observedninja_create_draft_order
    • First observedninja_discover_retail_context
    • First observedninja_discover_vertical_context
    • First observedninja_initiate_stc_pay
    • First observedninja_pay_saved_card
    • First observedninja_pay_wallet
    • First observedninja_pending_payment_methods
    • First observedninja_restaurant_menu
    • First observedninja_saved_addresses
    • First observedninja_saved_payment_options
    • First observedninja_search_products
    • First observedninja_search_restaurants
    • First observedninja_show_pending_order
    • First observedninja_submit_stc_otp

TDQS

B3.2/5.0
Disambiguation4/5

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.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case and the 'ninja_' prefix. No mixed conventions or unpredictable naming.

Tool Count4/5

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.

Completeness3/5

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

ActivitySlowing
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Mindbody, enabling AI agents to fetch client info, query class schedules, book classes/appointments (env-gated), and process checkout (payment-gated).
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP 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.
    17
    MIT

Latest Blog Posts

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