{"serverInfo":{"name":"ServiceContext","version":"0.1","description":"Context-aware semantic search and AI assistance platform","author":"Daniel Aagren Seehartrai Madsen","authorWebsite":"https://www.danielmadsen.dk","note":"Alpha version - semantic search across documentation, best practices, and expert knowledge. Planned beta release in Q1 2026."},"capabilities":{"tools":13,"prompts":10},"tools":[{"name":"scripting_search","description":"Search ServiceNow scripting API documentation using semantic similarity.\n\n**CRITICAL DECISION RULE — docs_search vs scripting_search**:\n- \"how do I\", \"best practice\", \"what is\", \"when should I use\" → docs_search FIRST\n- \"API signature\", \"method parameters\", \"what does X return\" → scripting_search\n- These tools cover complementary halves: docs_search answers procedural/conceptual\n  questions; scripting_search answers API-lookup questions.\n\n**When to use THIS tool (scripting_search)**:\n- Broad API exploration: \"Show me GlideRecord methods\" + api=\"GlideRecord\"\n- Cross-API discovery: \"What API handles email notifications?\"\n- Specific method lookup after identifying the right API from docs_search\n\n**When NOT to use this tool — use docs_search instead**:\n- \"How do I create a record?\", \"Best practice for querying large tables?\"\n- \"What is a Business Rule?\", \"When should I use GlideAggregate?\"\n\n**API Filtering**:\n- Use api=\"GlideRecord\" to filter results to only GlideRecord methods\n- Maintains semantic search benefits (relevance scoring, fuzzy matching)\n\n**Query Construction**:\n- Use 5-15 word descriptive sentences (recommended for exploration)\n- OR use specific keywords/technical terms (recommended for precision)\n- Both approaches work effectively: \"how to query records\" OR \"glidesystem getusername\"\n- Avoid keyword soup and short queries (< 3 chars invalid)\n- One topic per search","inputSchema":null},{"name":"scripting_get_document","description":"Retrieve a specific ServiceNow documentation entry by ID.\n\nUse after scripting_search() to get full content of a specific result.","inputSchema":null},{"name":"scripting_list_methods","description":"PRIMARY DISCOVERY TOOL - Retrieve all available methods for a ServiceNow API.\n\n**MUST call this FIRST** when user mentions a specific API name and wants method details.\nThis is the mandatory first step of the Discovery Track.\n\n**When to use**:\n- User asks: \"What methods does GlideRecord have?\"\n- User asks: \"How does GlideRecord.insert() work?\"\n- User wants examples/parameters/returns of a method\n\n**When NOT to use**:\n- Broad questions without specific API → Use scripting_search()\n- Cross-API exploration → Use scripting_search()\n\n**Workflow**:\n1. scripting_list_methods(api=\"GlideRecord\") ← MUST DO THIS FIRST\n2. Then use: scripting_get_examples(), scripting_get_parameters(), or scripting_get_returns()","inputSchema":null},{"name":"scripting_get_examples","description":"Retrieve code examples for a specific ServiceNow API and method.\n\n**MUST call scripting_list_methods FIRST** to verify API and method exist.\n\n**When to use**:\n- User asks: \"Show me an example of how to use GlideRecord.insert()\"\n- Need working code snippets for API usage\n\n**Workflow**:\n1. scripting_list_methods(api=\"GlideRecord\") ← MUST DO THIS FIRST\n2. scripting_get_examples(api=\"GlideRecord\", method_name=\"insert\")","inputSchema":null},{"name":"scripting_get_returns","description":"Retrieve return value documentation for a specific ServiceNow API and method.\n\n**MUST call scripting_list_methods FIRST** to verify API and method exist.\n\n**When to use**:\n- User asks: \"What does the query() method return?\"\n- Need return type documentation for a method\n\n**Workflow**:\n1. scripting_list_methods(api=\"GlideRecord\") ← MUST DO THIS FIRST\n2. scripting_get_returns(api=\"GlideRecord\", method_name=\"query\")","inputSchema":null},{"name":"scripting_get_parameters","description":"Retrieve parameter documentation for a specific ServiceNow API and method.\n\n**MUST call scripting_list_methods FIRST** to verify API and method exist.\n\n**When to use**:\n- User asks: \"What parameters does the query() method accept?\"\n- Need parameter documentation for a method\n\n**Workflow**:\n1. scripting_list_methods(api=\"GlideRecord\") ← MUST DO THIS FIRST\n2. scripting_get_parameters(api=\"GlideRecord\", method_name=\"query\")","inputSchema":null},{"name":"scripting_list_apis","description":"Enumerate indexed ServiceNow APIs without guessing search terms.","inputSchema":null},{"name":"docs_search_docs","description":"Hybrid semantic + keyword search across all ServiceNow documentation.\n\nCovers the full documentation library: scripting APIs, REST APIs, product guides\n(ITSM, platform admin, developer guides), release notes, glossary, and more.\nDefaults to the \"australia\" release (latest).\n\n**Tool routing — use this tool FIRST for intent-based questions:**\n- \"how do I ...\", \"best practice for ...\", \"what is ...\", \"when should I use ...\"\n- Step-by-step guides, conceptual overviews, product-specific procedures\n- Any question where the answer is prose/narrative, not a method signature\n\n**Fall back to scripting_search when you need API-specific details:**\n- \"what does X return\", \"parameters for GlideRecord.query()\", \"method signature\"\n- Specific scripting API usage after finding the right API via docs_search\n\nNo doc_type filter → searches everything in one pass.\nUse doc_type='scripting-api' or doc_type='rest-api' to narrow to API docs.\nUse doc_type='product-doc' for ITSM and platform content.\n\nCall docs_list_publications to discover valid publication names.","inputSchema":null},{"name":"docs_get_document","description":"Fetch all chunks of a ServiceNow documentation page in reading order.\n\nCall docs_get_document_outline first to preview headings and decide\nwhether loading the full body is worthwhile.\nObtain source_path from docs_search_docs results.","inputSchema":null},{"name":"docs_get_document_outline","description":"Fetch section headings and 200-char previews — no full body loaded.\n\nUse this before docs_get_document to inspect structure and decide\nwhether to load the complete content.\nObtain source_path from docs_search_docs results.\n\nIf the document has no subsections (single overview chunk), the full\ndocument content is returned automatically with a note explaining why.","inputSchema":null},{"name":"docs_list_publications","description":"Browse available ServiceNow product areas and documentation publications.\n\nUse this to discover valid publication names for docs_search_docs filtering,\nor to see what documentation coverage exists for a given release.","inputSchema":null},{"name":"docs_list_api_methods","description":"List all methods or REST endpoints for a named ServiceNow API object.\n\nSearches the full servicenow_docs table, so it covers REST endpoints,\nSDK methods, and any API object documented across the complete library —\nbroader than scripting_list_methods, which targets scripting APIs only.","inputSchema":null},{"name":"docs_lookup_glossary_term","description":"Partial-match lookup for ServiceNow glossary definitions.\n\nUseful for finding the official definition of a ServiceNow-specific term\nor acronym (e.g. \"CMDB\", \"CI\", \"assignment group\").","inputSchema":null}],"prompts":[{"name":"servicenow-developer","description":"General ServiceNow development assistant","arguments":[{"name":"focus","description":null,"required":true}]},{"name":"servicenow-script-include-builder","description":"Script Include development assistant","arguments":[]},{"name":"servicenow-business-rule-creator","description":"Business Rule development assistant","arguments":[]},{"name":"servicenow-client-script-writer","description":"Client-side scripting assistant","arguments":[]},{"name":"servicenow-code-reviewer","description":"Code review assistant","arguments":[{"name":"code","description":"Provide as a JSON string matching the following schema: {\"anyOf\":[{\"type\":\"string\"},{\"type\":\"null\"}]}","required":true}]},{"name":"servicenow-incident-management","description":"Incident management and automation specialist","arguments":[]},{"name":"servicenow-change-management","description":"Change management and CAB automation specialist","arguments":[]},{"name":"servicenow-cmdb-expert","description":"Configuration Management Database specialist","arguments":[]},{"name":"servicenow-debugging-assistant","description":"Debugging and troubleshooting specialist for ServiceNow","arguments":[]},{"name":"servicenow-performance-optimizer","description":"Performance optimization specialist for ServiceNow","arguments":[]}],"authentication":{"type":"API Key","required":"All requests require authentication","header_format":"Authorization: Bearer sc_your_api_key","key_format":"Keys start with 'sc_' prefix","storage":"Database-backed (PostgreSQL)","note":"API keys are validated against the api_keys table using SHA-256 hashing"},"endpoints":{"mcp_protocol":"/mcp","documentation":"/","health":"/health"},"usage":{"mcp_protocol_endpoint":"/mcp","transport":"Streamable HTTP","discovery":"MCP clients can discover and call tools via the MCP protocol","prompts":"Use prompts/list and prompts/get to access coding assistant prompts","note":"This endpoint (/) provides human-readable documentation. MCP clients should use /mcp"}}