@@ -373,7 +373,7 @@ def quickstart():
373373 <meta name="viewport" content="width=device-width, initial-scale=1.0">
374374 <title>Quick Start | ContrastAPI</title>
375375 <link rel="icon" type="image/svg+xml" href="/static/favicon.svg">
376- <link rel="stylesheet" href="/static/style.css?v=8 ">
376+ <link rel="stylesheet" href="/static/style.css?v=9 ">
377377 <style>
378378 .page { max-inline-size: 52rem; margin-inline: auto; padding: 3rem 2rem; position: relative; z-index: 1; }
379379 .page h1 { font-size: 2.25rem; font-weight: 800; letter-spacing: -0.04em; margin-block-end: 0.5rem; }
@@ -403,7 +403,7 @@ def quickstart():
403403 <div class="nav-links">
404404 <a href="/quickstart">API Start</a>
405405 <a href="/mcp-setup">MCP Setup</a>
406- <a href="https://github.com/UPinar/contrastapi#endpoints">Docs </a>
406+ <a href="/playground">Playground </a>
407407 <a href="https://contrastcyber.com/pricing">Pricing</a>
408408 </div>
409409 </nav>
@@ -510,7 +510,7 @@ def mcp_setup():
510510 <meta name="viewport" content="width=device-width, initial-scale=1.0">
511511 <title>MCP Setup | ContrastAPI</title>
512512 <link rel="icon" type="image/svg+xml" href="/static/favicon.svg">
513- <link rel="stylesheet" href="/static/style.css?v=8 ">
513+ <link rel="stylesheet" href="/static/style.css?v=9 ">
514514 <style>
515515 .page { max-inline-size: 52rem; margin-inline: auto; padding: 3rem 2rem; position: relative; z-index: 1; }
516516 .page h1 { font-size: 2.25rem; font-weight: 800; letter-spacing: -0.04em; margin-block-end: 0.5rem; }
@@ -546,7 +546,7 @@ def mcp_setup():
546546 <div class="nav-links">
547547 <a href="/quickstart">API Start</a>
548548 <a href="/mcp-setup">MCP Setup</a>
549- <a href="https://github.com/UPinar/contrastapi#endpoints">Docs </a>
549+ <a href="/playground">Playground </a>
550550 <a href="https://contrastcyber.com/pricing">Pricing</a>
551551 </div>
552552 </nav>
@@ -628,7 +628,7 @@ def mcp_setup():
628628 <p><em>"Is user@example.com a disposable email?"</em></p>
629629 </div>
630630
631- <h2>24 Tools</h2>
631+ <h2>25 Tools</h2>
632632 <div class="tools-grid">
633633 <div class="tool"><span class="name">domain_report</span> <span class="desc">Full domain security audit</span></div>
634634 <div class="tool"><span class="name">dns_lookup</span> <span class="desc">DNS records</span></div>
@@ -651,6 +651,7 @@ def mcp_setup():
651651 <div class="tool"><span class="name">password_check</span> <span class="desc">Breach database check</span></div>
652652 <div class="tool"><span class="name">phishing_check</span> <span class="desc">URL phishing detection</span></div>
653653 <div class="tool"><span class="name">phone_lookup</span> <span class="desc">Phone number OSINT</span></div>
654+ <div class="tool"><span class="name">username_lookup</span> <span class="desc">Username OSINT across 16 platforms</span></div>
654655 <div class="tool"><span class="name">check_secrets</span> <span class="desc">Hardcoded secret scan</span></div>
655656 <div class="tool"><span class="name">check_injection</span> <span class="desc">SQL/command injection</span></div>
656657 <div class="tool"><span class="name">check_headers</span> <span class="desc">Header validation</span></div>
@@ -683,6 +684,11 @@ def mcp_setup():
683684 )
684685
685686
687+ @app .get ("/playground" , response_class = HTMLResponse , include_in_schema = False )
688+ def playground (request : Request ):
689+ return templates .TemplateResponse (request , "playground.html" )
690+
691+
686692@app .get ("/docs" , include_in_schema = False )
687693def custom_docs ():
688694 return JSONResponse (
0 commit comments