NAIF Gravity MCP Diagnostics
A community diagnostic tool for MCP servers that helps agents troubleshoot handshake failures, transport issues, and schema problems. It offers free scope guides and bounded paid diagnostics for API shape analysis and automation rescue, supporting developers in resolving integration errors without automatic external spending.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://naifgravity.com/mcpWhat its tools do
5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Diagnose MCP handshake and tools/list failures
- Analyze API response shape changes
- Repair webhook field mapping issues
- Validate JSON syntax and structure
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- naif-fixgraph 1.7.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
diagnose_issue — Diagnose Issue
Start here. Diagnose one sanitized MCP, API, webhook, agent or integration failure for free. Returns bounded evidence plus a suggested repair service, then use quote_repair only if a priced repair is wanted. It never creates a quote, checkout, payment or repair job. It may record bounded operational attribution/telemetry, so readOnlyHint is false; it does not modify the caller system or commercial state.
{
"type": "object",
"required": [
"problem"
],
"properties": {
"source": {
"type": "string",
"maxLength": 80,
"description": "Optional attribution label for the calling agent or integration; omit when no stable source label is available."
},
"problem": {
"type": "string",
"maxLength": 3000,
"minLength": 3,
"description": "One sanitized technical symptom. Include the affected component and observable error/status. Never include secrets, credentials, private keys or PII."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"free": {
"type": "boolean",
"description": "True for this free diagnostic step."
},
"error": {
"type": "string",
"description": "Present when a bounded diagnosis could not be produced."
},
"phase": {
"type": "string",
"description": "DIAGNOSE on a successful bounded diagnosis."
},
"nextTool": {
"type": "string",
"description": "quote_repair when the caller wants a priced bounded repair."
},
"automaticQuote": {
"type": "boolean",
"description": "False; diagnosis never creates a quote automatically."
},
"rawInputStored": {
"type": "boolean",
"description": "False when the raw diagnostic input is not retained as payload data."
},
"automaticPayment": {
"type": "boolean",
"description": "False; diagnosis never sends or charges payment."
},
"automaticCheckout": {
"type": "boolean",
"description": "False; diagnosis never creates checkout automatically."
},
"automaticExecution": {
"type": "boolean",
"description": "False; diagnosis never starts repair execution."
},
"suggestedProductId": {
"type": "string",
"description": "Public repair product suggested from the diagnosis when available."
}
},
"description": "Bounded diagnosis result. On success phase is DIAGNOSE and nextTool is quote_repair; an error field indicates diagnosis was unavailable.",
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}quote_repair — Quote Repair
Use only after diagnose_issue when the caller wants a priced bounded repair. Creates a new non-binding quote for the selected or automatically matched public service. Repeating the call may create a different quoteId, so it is intentionally non-idempotent. It does not accept the quote, create checkout, send payment or start execution. If the quote is accepted by the caller, pass its quoteId and one offered payment rail to prepare_repair.
{
"type": "object",
"required": [
"description"
],
"properties": {
"source": {
"type": "string",
"maxLength": 80,
"description": "Optional attribution label for the calling agent or integration."
},
"productId": {
"type": "string",
"maxLength": 100,
"minLength": 3,
"description": "Optional exact public productId suggested by diagnose_issue or chosen from the catalog. Omit to let NAIF match the closest service."
},
"description": {
"type": "string",
"maxLength": 2000,
"minLength": 8,
"description": "Sanitized bounded repair need derived from diagnose_issue; describe the failure and desired repair outcome without secrets or PII."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"eta": {
"description": "Estimated delivery time or service ETA when available."
},
"error": {
"type": "string",
"description": "Present when the requested service is unavailable or commerce could not create a quote."
},
"phase": {
"type": "string",
"description": "QUOTE on a successful quote."
},
"price": {
"description": "Commercial price returned by the quote service."
},
"state": {
"type": "string",
"description": "Current quote state returned by commerce."
},
"quoteId": {
"type": "string",
"description": "Unique non-binding quote identifier to pass to prepare_repair after explicit caller acceptance."
},
"currency": {
"type": "string",
"description": "Quote currency."
},
"nextTool": {
"type": "string",
"description": "prepare_repair after explicit caller acceptance."
},
"productId": {
"type": "string",
"description": "Matched public repair product identifier."
},
"exactAmount": {
"description": "Exact settlement amount when the selected payment design requires one; preserve it exactly as returned."
},
"productName": {
"type": "string",
"description": "Human-readable matched repair service name."
},
"automaticJob": {
"type": "boolean",
"description": "False; this tool never starts a repair job."
},
"paymentRails": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Rail identifier to pass as prepare_repair.rail."
}
},
"additionalProperties": true
},
"description": "Payment rail descriptors offered for this quote; pass one descriptor id to prepare_repair.rail."
},
"quoteAccepted": {
"type": "boolean",
"description": "False; creating a quote does not accept it."
},
"checkoutCreated": {
"type": "boolean",
"description": "False; creating a quote does not create checkout."
},
"commercialState": {
"type": "string",
"description": "Commercial lifecycle state when available."
},
"automaticPayment": {
"type": "boolean",
"description": "False; this tool never sends or charges payment."
},
"automaticExecution": {
"type": "boolean",
"description": "False; this tool never starts repair execution."
}
},
"description": "Non-binding repair quote. A successful result includes quoteId, price/currency, offered paymentRails and nextTool=prepare_repair. An error field indicates no quote was created.",
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}prepare_repair — Prepare Repair
Use ONLY for the normal repair flow after quote_repair has already returned a quoteId and the caller explicitly chooses that existing quote. This tool does not create a quote: with confirm=true it records acceptance of that quote and creates checkout instructions on exactly one rail offered by it. Do NOT use this tool for owner/platform-preauthorized autonomous purchasing where the agent is allowed to choose one of the four capped micro-services and create its own quote; use request_delegated_purchase for that separate flow. APPLE_PAY returns a human handoff URL for buyer authorization; BASE_USDC and TRON_USDT return payer transfer instructions. It never sends funds, charges the caller, verifies payment or directly starts repair execution. After the buyer completes the required payment action, use verify_repair with the returned checkoutId and the same rail.
{
"type": "object",
"required": [
"quoteId",
"confirm",
"rail"
],
"properties": {
"rail": {
"enum": [
"APPLE_PAY",
"BASE_USDC",
"TRON_USDT"
],
"type": "string",
"description": "Choose exactly one id from the descriptors in quote_repair.paymentRails. Saudi quotes normally offer APPLE_PAY only."
},
"source": {
"type": "string",
"maxLength": 80,
"description": "Optional attribution label for the calling agent or integration."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true to record explicit acceptance before checkout instructions are created."
},
"quoteId": {
"type": "string",
"maxLength": 128,
"minLength": 8,
"description": "Exact quoteId returned by quote_repair and explicitly accepted by the caller."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"rail": {
"type": "string",
"description": "Selected payment rail."
},
"error": {
"type": "string",
"description": "Present when quote acceptance or checkout preparation failed."
},
"phase": {
"type": "string",
"description": "PREPARE_REPAIR on success."
},
"quoteId": {
"type": "string",
"description": "Accepted quote identifier."
},
"checkout": {
"type": "object",
"description": "Checkout record/instructions returned for the selected rail; includes the checkout identifier used by verify_repair.",
"additionalProperties": true
},
"nextTool": {
"type": "string",
"description": "verify_repair after the buyer completes the payment action."
},
"fundsSent": {
"type": "boolean",
"description": "False; this tool does not send funds."
},
"nextAction": {
"type": "object",
"description": "For APPLE_PAY, human handoff information; for wallet rails, payer transfer instructions.",
"additionalProperties": true
},
"automaticJob": {
"type": "boolean",
"description": "False; this preparation step does not start a repair job."
},
"paymentVerified": {
"type": "boolean",
"description": "False until verify_repair confirms an existing payment."
},
"quoteAcceptance": {
"type": "object",
"description": "Commerce acknowledgement that the quote was accepted.",
"additionalProperties": true
},
"automaticPayment": {
"type": "boolean",
"description": "False; no automatic charge or transfer occurs."
},
"automaticExecution": {
"type": "boolean",
"description": "False; this preparation step does not directly execute repair."
}
},
"description": "Accepted quote plus checkout instructions. A successful result includes checkout information and nextTool=verify_repair; no funds are sent by this tool.",
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}request_delegated_purchase — Delegated Purchase (Capped)
Use ONLY for an owner/platform-preauthorized autonomous purchase of one of four supported micro-services under an explicit spending cap. Unlike prepare_repair, this tool does not consume an existing quoteId: it creates its own quote, accepts it, and creates checkout within the delegation. Repeating the call may create a new quote/checkout, so it is intentionally non-idempotent. Do NOT use it when quote_repair already produced a quoteId or for general repair services outside the four listed micro-services; use prepare_repair for an existing repair quote. Supports wallet rails and APPLE_PAY_AUTO. APPLE_PAY_AUTO requires one human Apple Pay approval first; when Tap returns an ACTIVE saved-card payment agreement, later purchases may be charged only within the stored cap. If provider support or authorization is missing, the flow fails closed.
{
"type": "object",
"required": [
"productId",
"description",
"authorizedMerchant",
"maxAmountUsd",
"authorizeCheckout"
],
"properties": {
"source": {
"type": "string",
"maxLength": 80,
"description": "Optional attribution label for the calling agent or integration."
},
"productId": {
"enum": [
"json-validity-check",
"api-response-shape-check",
"json-normalizer",
"csv-schema-audit"
],
"type": "string",
"description": "Exactly one of the four services allowed for delegated purchase. For any other repair service, use diagnose_issue → quote_repair → prepare_repair."
},
"description": {
"type": "string",
"maxLength": 2000,
"minLength": 8,
"description": "Sanitized bounded work description for the delegated micro-service; never include secrets, credentials or private keys."
},
"paymentRail": {
"enum": [
"AUTO",
"BASE_USDC",
"TRON_USDT",
"APPLE_PAY_AUTO"
],
"type": "string",
"description": "Delegated-purchase rail policy. AUTO chooses an eligible wallet rail; APPLE_PAY_AUTO uses or establishes the capped Tap authorization. This is not the manual rail selection for prepare_repair."
},
"maxAmountUsd": {
"type": "number",
"maximum": 5,
"description": "Owner/platform per-purchase spending cap in USD-equivalent. The quote must fit inside this cap and the service launch price.",
"exclusiveMinimum": 0
},
"dailyLimitUsd": {
"type": "number",
"maximum": 20,
"description": "Requested daily APPLE_PAY_AUTO cap used only during first-time authorization setup; maximum 20 USD.",
"exclusiveMinimum": 0
},
"authorizeCheckout": {
"type": "boolean",
"const": true,
"description": "Explicit permission for this tool to create its own quote, accept it, and create checkout within the supplied cap. If a quoteId already exists, use prepare_repair instead."
},
"authorizedMerchant": {
"type": "string",
"const": "naifgravity.com",
"description": "Merchant scope explicitly authorized by the owner/platform for this delegated purchase flow."
},
"applePayAuthorizationToken": {
"type": "string",
"maxLength": 240,
"minLength": 20,
"description": "Opaque token returned by the one-time APPLE_PAY_AUTO setup. Supply only a token from this delegated authorization flow; never provide card data or raw Apple Pay payloads."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"job": {
"description": "Repair/delivery job attached by the existing verified-payment workflow when available; may be null."
},
"error": {
"type": "string",
"description": "Fail-closed error code when delegation, price, provider authorization, quote, checkout, or payment requirements are not satisfied."
},
"state": {
"type": "string",
"description": "Provider/checkout state when returned."
},
"status": {
"type": "string",
"description": "Delegated-purchase state such as PAYMENT_REQUIRED, ONE_TIME_APPLE_PAY_AUTHORIZATION_REQUIRED, APPLE_PAY_AUTHORIZATION_NOT_ACTIVE, or a provider payment state."
},
"details": {
"description": "Bounded provider/commerce error details when available."
},
"quoteId": {
"type": "string",
"description": "Quote created by this delegated call. It was not supplied by the caller."
},
"nextTool": {
"type": "string",
"description": "For wallet rails, verify_checkout_payment after the payer submits the exact transfer."
},
"verified": {
"type": "boolean",
"description": "When returned by the provider flow, true only for a verified payment."
},
"paymentId": {
"type": "string",
"description": "Verified payment identifier when returned by the provider flow."
},
"productId": {
"type": "string",
"description": "One of the four delegated micro-service product identifiers."
},
"checkoutId": {
"type": "string",
"description": "Checkout created by this delegated call when quote creation/acceptance succeeded."
},
"payerAction": {
"type": "string",
"description": "Required human/payer action before payment can be considered complete."
},
"paymentRail": {
"enum": [
"BASE_USDC",
"TRON_USDT",
"APPLE_PAY_AUTO"
],
"type": "string",
"description": "Rail actually selected for this delegated purchase."
},
"automaticJob": {
"type": "boolean",
"description": "False when no verified-payment job has been attached yet."
},
"authorization": {
"type": "object",
"description": "APPLE_PAY_AUTO authorization setup/status information, potentially including the one-time human authorization URL/token. Never interpret this object alone as payment success.",
"additionalProperties": true
},
"automaticQuote": {
"type": "boolean",
"description": "True when this tool created the delegated quote itself."
},
"automaticPayment": {
"type": "boolean",
"description": "False for wallet flows and authorization setup; may only become provider-driven within a previously ACTIVE APPLE_PAY_AUTO agreement."
},
"automaticCheckout": {
"type": "boolean",
"description": "True when this tool created checkout under the delegation."
},
"nextToolArguments": {
"type": "object",
"description": "Suggested verification arguments for the wallet checkout; txHash remains caller-supplied after payment.",
"additionalProperties": true
},
"automaticExecution": {
"type": "boolean",
"description": "False until the existing post-payment workflow has verified payment; this tool does not execute unpaid work."
},
"automaticAcceptance": {
"type": "boolean",
"description": "True when the delegated quote was automatically accepted under explicit owner/platform authorization."
},
"paymentInstructions": {
"type": "object",
"description": "Wallet transfer instructions for an existing delegated checkout; the tool does not send the transfer.",
"additionalProperties": true
},
"delegatedAuthorization": {
"type": "object",
"description": "Echo of the enforced merchant/spending delegation, including cap and whether quote acceptance/checkout creation were authorized.",
"additionalProperties": true
}
},
"description": "Result of a capped delegated purchase attempt. For wallet rails, success creates and accepts a quote plus checkout and returns PAYMENT_REQUIRED with payer instructions; payment itself remains external. For APPLE_PAY_AUTO, first use may return ONE_TIME_APPLE_PAY_AUTHORIZATION_REQUIRED with human authorization data, while a later call with an ACTIVE authorization token may return provider payment-verification fields. Treat error or a non-confirmed status as not paid. This schema describes the delegated flow only; normal existing-quote repairs use prepare_repair.",
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}verify_repair — Verify Repair Payment
Use after the buyer completes the payment action for a checkout created by prepare_repair. APPLE_PAY verifies the existing Tap charge by checkoutId; BASE_USDC and TRON_USDT require the payer-provided txHash. A confirmed payment returns verified=true, while an already-confirmed Apple Pay checkout may return alreadyVerified=true; an unconfirmed or rejected payment returns error and/or reason without fabricating success. Verification may also return the job attached by the existing payment-completion workflow. This tool never creates or sends a transaction and never charges the buyer.
{
"type": "object",
"required": [
"checkoutId",
"rail"
],
"properties": {
"rail": {
"enum": [
"APPLE_PAY",
"BASE_USDC",
"TRON_USDT"
],
"type": "string",
"description": "Use the same payment rail selected in prepare_repair."
},
"txHash": {
"type": "string",
"pattern": "^(0x)?[0-9a-fA-F]{64}$",
"description": "Payer-provided transaction hash. Required for BASE_USDC and TRON_USDT after transfer submission; omit for APPLE_PAY."
},
"checkoutId": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]{8,128}$",
"description": "Exact checkout ID returned by prepare_repair."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"job": {
"description": "Existing repair job attached by the payment-completion workflow when available; may be null."
},
"rail": {
"type": "string",
"description": "Payment rail checked."
},
"error": {
"type": "string",
"description": "Present when payment is missing, unavailable, invalid or could not be verified."
},
"phase": {
"type": "string",
"description": "VERIFY when the verification route returned a structured result."
},
"state": {
"type": "string",
"description": "Payment/checkout state when returned; PAYMENT_VERIFIED denotes a confirmed payment."
},
"reason": {
"type": "string",
"description": "Verification evidence or rejection reason when returned by a wallet rail."
},
"verified": {
"type": "boolean",
"description": "True only when the provider/chain evidence confirms the expected payment for this checkout."
},
"paymentId": {
"type": "string",
"description": "Recorded verified payment identifier when available."
},
"checkoutId": {
"type": "string",
"description": "Checkout identifier that was verified."
},
"alreadyVerified": {
"type": "boolean",
"description": "True when an APPLE_PAY checkout had already been verified previously."
}
},
"description": "Verification status for an existing checkout payment. Treat verified=true or alreadyVerified=true as confirmed; otherwise inspect error/reason/state and do not assume payment success.",
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1520 ms
- 95th percentile latency
- 1520 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1520 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http naif-gravity-mcp-diagnostics https://naifgravity.com/mcpCodex
codex mcp add naif-gravity-mcp-diagnostics --url https://naifgravity.com/mcpCursor
{
"mcpServers": {
"naif-gravity-mcp-diagnostics": {
"url": "https://naifgravity.com/mcp"
}
}
}Cline
{
"mcpServers": {
"naif-gravity-mcp-diagnostics": {
"type": "streamableHttp",
"url": "https://naifgravity.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"naif-gravity-mcp-diagnostics": {
"type": "http",
"url": "https://naifgravity.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http naif-gravity-mcp-diagnostics https://naifgravity.com/mcpClaude Desktop
https://naifgravity.com/mcpWindsurf
{
"mcpServers": {
"naif-gravity-mcp-diagnostics": {
"serverUrl": "https://naifgravity.com/mcp"
}
}
}Let your agent find its tools
Find servers like NAIF Gravity MCP Diagnostics from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.