{
  "tiers": {
    "read": "Answers from published content. Agents may call these freely.",
    "write": "Prepares something for a person and never completes it: the person reviews and confirms.",
    "transaction": "Moves money. start_checkout only creates a Stripe Checkout link; the person (or a payment method they delegated) authorizes the payment on Stripe. Ask before calling it."
  },
  "tools": [
    {
      "name": "get_business_overview",
      "title": "Business overview",
      "description": "Who Nubis Digital is, what it offers, where it works and how to reach it. Start here.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "search_site",
      "title": "Search the site",
      "description": "Keyword search across every page of nubisdigital.com. Returns matching sections with their URL so answers can cite the source.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "What to look for, e.g. \"Umbraco migration\" or \"precio\"."
          },
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          }
        },
        "required": [
          "query"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_services",
      "title": "List services",
      "description": "The services Nubis Digital offers, each with a plain-language description.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_pages",
      "title": "List pages",
      "description": "Every page on the site with its title, description, URL and Markdown version.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_page",
      "title": "Read a page",
      "description": "The full text of one page as Markdown: home (services, process, about), ai-visibility-check (the free check), umbraco (the platform Nubis builds on), work (case studies) or about.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "string",
            "enum": [
              "home",
              "ai-visibility-check",
              "umbraco",
              "work",
              "about"
            ]
          },
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        },
        "required": [
          "page"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_case_studies",
      "title": "List case studies",
      "description": "Websites Nubis Digital has built, with what was done and where to see them live.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_faqs",
      "title": "Frequently asked questions",
      "description": "Questions people ask about AI visibility and the free check, with Nubis Digital’s answers.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_ai_visibility_questions",
      "title": "AI visibility scorecard questions",
      "description": "The questions of the 60-second AI visibility scorecard, with their weights. Ask the person these, then call score_ai_visibility.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "score_ai_visibility",
      "title": "Score AI visibility",
      "description": "Scores a business 0–100 on how likely AI assistants are to find and recommend it, from yes/no/unsure answers, and lists the highest-value fixes first. Computes only; stores nothing.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "answers": {
            "type": "object",
            "description": "Question id → \"yes\" | \"no\" | \"unsure\".",
            "additionalProperties": {
              "type": "string",
              "enum": [
                "yes",
                "no",
                "unsure"
              ]
            }
          },
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        },
        "required": [
          "answers"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_contact_options",
      "title": "Contact options",
      "description": "How to reach Nubis Digital: the contact form and email.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_offers",
      "title": "List agent offers",
      "description": "Fixed-price services Nubis Digital sells to agents and the people they work for, with price, what is included, delivery time and a page to cite. Buy one with start_checkout.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_offer",
      "title": "Offer details",
      "description": "One offer in full: price, what is included, who it is for, delivery time and terms.",
      "tier": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "offer": {
            "type": "string",
            "enum": [
              "ai-visibility-snapshot",
              "agent-ready-audit",
              "ai-readable-kit"
            ]
          },
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        },
        "required": [
          "offer"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "start_checkout",
      "title": "Buy an offer",
      "description": "Starts a purchase of one offer and returns a Stripe Checkout link. Charges nothing by itself: the person you act for (or a payment method they authorized) completes the payment on Stripe. Only call this after the person has agreed to buy, and show them the price first.",
      "tier": "transaction",
      "inputSchema": {
        "type": "object",
        "properties": {
          "offer": {
            "type": "string",
            "enum": [
              "ai-visibility-snapshot",
              "agent-ready-audit",
              "ai-readable-kit"
            ]
          },
          "email": {
            "type": "string",
            "description": "The buyer’s email, to pre-fill checkout (optional)."
          },
          "website": {
            "type": "string",
            "description": "The buyer’s business website (optional)."
          },
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        },
        "required": [
          "offer"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "consequentialHint": true
      }
    },
    {
      "name": "prepare_inquiry",
      "title": "Prepare an inquiry",
      "description": "Prepares a message to Nubis Digital for the person you are helping. Does NOT send it: returns a link that opens the contact form pre-filled, and the person reviews it and presses send. Ask the person before calling this.",
      "tier": "write",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "email": {
            "type": "string",
            "maxLength": 254
          },
          "company": {
            "type": "string",
            "maxLength": 200
          },
          "message": {
            "type": "string",
            "maxLength": 5000,
            "description": "What the person needs help with."
          },
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "description": "Answer language: \"en\" (default) or \"es\"."
          }
        },
        "required": [
          "message"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "consequentialHint": false
      }
    }
  ],
  "interfaces": {
    "webmcp": "Registered in the browser on every page (document.modelContext), plus the contact form as the declarative tool request_consultation.",
    "mcp": "https://www.nubisdigital.com/api/mcp"
  }
}