Documentation Index Fetch the complete documentation index at: https://ulpi.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Your AI Will Know Your Entire Codebase in 5 Minutes
Right now: Your AI hallucinates patterns. You copy-paste docs every session. New developers ask the same questions for weeks.
5 minutes from now: Your AI assistant has instant access to every README, wiki page, and architecture doc across all your repositories.
This guide gets you there—fast.
What You’ll Accomplish
Connect GitHub 2 minutes OAuth connection → automatic repository discovery
Index Documentation 1-3 minutes (automatic) AI processes all your docs in the background
Configure AI Tool 2 minutes Add ULPI MCP server to Claude Code, Cursor, or 40+ other tools
Ask First Question Instant answers “How do we deploy?” → Your AI knows immediately
Total time: 5-7 minutes. Most of it is waiting for automatic indexing.
Prerequisites
You’ll need:
GitHub Account Sign up free at github.com Works with personal or organization accounts
AI Coding Assistant Any MCP-compatible tool:
Claude Desktop (recommended)
Cursor
Windsurf
VSCode with Continue/Cline
See all 40+ tools
Repository requirements:
Public or private repositories (both supported)
GitHub, GitLab, Bitbucket, or Gitea
Documentation in Markdown, README files, wikis, or code comments
For best experience:
Node.js 18+ (if using NPX-based MCP servers)
Admin access to organization repos (for team-wide deployment)
Existing documentation (but we’ll index whatever you have)
5-10 minutes to review this guide completely
Don’t have docs yet? ULPI will at minimum index your README files and code comments—still incredibly useful for AI assistants!
Step 1: Create Your ULPI Account
Stop wasting time searching. Let’s fix this now.
Visit app.ulpi.io
Go to app.ulpi.io and click Sign Up No credit card required for signup. Choose your plan after you see the value.
Authenticate with GitHub
Click Continue with GitHub to authenticate via OAuth What we request:
✅ Read-only access to repositories
✅ Webhook access (for auto-sync)
❌ We never write to your code
❌ We never modify repositories
Using GitLab, Bitbucket, or Gitea? Select “Other Git Provider” and follow the connection wizard.
Choose Your Plan
Select a plan based on your team size: Starter ($29/mo)
Professional ($99/mo)
Enterprise ($299/mo)
Perfect for solo developers or small teams:
5 repositories
100,000 tokens/month (~15-20 searches/day)
Semantic search across all docs
Auto-sync on every push
MCP integration (40+ AI tools)
Email support
Best for: 1-3 developersBest for growing teams:
25 repositories
500,000 tokens/month (~75-100 searches/day)
Everything in Starter, plus:
Advanced search filters
Team collaboration features
Priority support
Usage analytics dashboard
Best for: 5-15 developersFor large organizations:
Unlimited repositories
2,000,000 tokens/month (~300+ searches/day)
Everything in Professional, plus:
Custom integrations
SSO / SAML authentication
SLA guarantees (99.9% uptime)
Dedicated support engineer
On-premise deployment options
Best for: 20+ developersCompare all plans in detail → Not sure? Start with Starter. Upgrade anytime. We’ll prorate the difference.Bundle discount: Save 15-20% by combining Documentation with Skills, Memory, Coordination, or Hooks.
Complete Billing
Enter payment details via Stripe (secure, PCI-compliant) Guarantees:
🔒 Bank-level security (PCI-DSS Level 1)
💳 30-day money-back - cancel anytime, full refund
🔄 Flexible billing - change plans monthly
📊 Transparent usage - see token consumption in real-time
Your account is live immediately after payment confirmation.
Estimated time: 2 minutes
Step 2: Connect Your Repositories
Make your documentation searchable by AI.
Navigate to Repositories
In the ULPI dashboard:
Click Repositories in the left sidebar
You’ll see the repository connection screen
If you just signed up, you’ll be automatically directed here.
Select Repositories to Connect
Choose which repositories to make searchable: Select Individual Repos
Connect All Repositories
Filtered by Team/Org
Best for testing or specific projects:
Browse your repositories in the list
Check the boxes next to repositories with documentation
Click Connect Selected (green button)
Recommended for first-time setup: Start with 2-3 repos to see ULPI in action, then add more.Best for organization-wide deployment:
Click Select All Repositories toggle
Click Connect All (purple button)
All current + future repos automatically connected
Perfect for: Teams that want comprehensive documentation search across entire organization.Large organizations (100+ repos): Initial indexing may take 15-30 minutes. Consider starting with critical repos first.
Best for multi-organization setups:
Use Organization filter dropdown
Select specific GitHub organization
Choose repos from that org only
Click Connect Selected
Use case: You’re part of multiple orgs but only want to index documentation from your company.
Grant Permissions
ULPI requests authorization to:
✅ Read Repository Contents
What we read:
Documentation files (.md, .mdx, README.*)
Wiki pages (optional, you can disable)
Code comments (optional, disabled by default)
What we don’t read:
Source code (unless you enable comment indexing)
Secrets, .env files
Build artifacts, node_modules/
Binary files
✅ Receive Webhook Notifications
Why we need this:
Automatic re-indexing on git push
Keep documentation always up-to-date
No manual “sync” button needed
Triggered on:
Push to main/master branch
Pull request merges
Wiki updates
Manual trigger from dashboard
❌ We Never Write to Your Code
Security guarantee:
❌ Cannot modify files
❌ Cannot create commits
❌ Cannot push changes
❌ Cannot delete repositories
Read-only access only. Revoke anytime from GitHub settings.Click Authorize ULPI to proceed.
Wait for Initial Indexing
ULPI automatically discovers and indexes your documentation: Automatically included:
✅ README.md, README.txt (all directories)
✅ docs/ and documentation/ directories
✅ All .md and .mdx files
✅ CONTRIBUTING.md, CHANGELOG.md
✅ Architecture Decision Records (ADRs)
✅ .github/ documentation
Optionally included (configure in settings):
🔧 Wiki pages (disabled by default, can enable)
🔧 Code comments and docstrings (disabled by default)
🔧 Jupyter notebooks (.ipynb)
🔧 .txt files in doc directories
Automatically excluded:
❌ node_modules/, vendor/, packages/
❌ Build directories (dist/, build/, out/)
❌ .git/ directory
❌ Binary files (images, PDFs, etc.)
❌ Large files (>1MB)
Custom exclusions: Create a .ulpiignore file (works like .gitignore)How long will this take?
Repository Size Files Indexing Time
Small (starter project) Less than 100 30 seconds Medium (typical app) 100-1,000 2-5 minutes Large (monorepo) 1,000-10,000 5-15 minutes Huge (enterprise) 10,000+ 15-30 minutes
Real-time progress:
Watch indexing status in dashboard
See which files are being processed
Get notified when complete
You can configure AI integration while indexing happens in the background. Jump to Step 3 now!
Behind the scenes (fully automatic):
Repository cloning (temporary, in-memory)
File discovery (find all documentation)
Content extraction (parse Markdown, extract structure)
Semantic chunking (break into logical sections)
Vector embedding (create searchable AI representations)
Index storage (save to Typesense vector database)
Cleanup (remove temporary files)
Status updates in dashboard: ✅ user-service: Indexed (234 files, 2,456 chunks)
✅ backend-api: Indexed (567 files, 5,123 chunks)
⏳ infrastructure: Indexing... 45% (1,234 files processed)
⏸️ mobile-app: Queued
Estimated time: 2 minutes to connect, 1-15 minutes for automatic indexing
Troubleshooting: Repository not appearing in list
If you don’t see your repository:
Check GitHub OAuth permissions:
Organization settings:
Org admin must approve third-party apps
Ask your GitHub org admin to approve ULPI
Guide for admins →
Repository visibility:
Private repos require explicit OAuth permission
Re-authenticate and grant access to private repositories
Still not working?
Contact support: support@ulpi.io
Include: repository URL, GitHub username, error messages
Step 3: Create an API Key
API keys connect your AI assistant to ULPI’s documentation search.
Navigate to API Keys
In the ULPI dashboard:
Click Settings in sidebar
Select API Keys tab
You’ll see the API key management screen
Click Create API Key
Click the Create API Key button (green button, top right)
Configure Key Settings
Fill in API key details: Basic Settings
Security Settings
Advanced Settings
Name: Documentation MCP Server(For identification—name it after where you’ll use it) Examples:
“Claude Desktop - MacBook Pro”
“Cursor - Work Laptop”
“Team Shared Key”
Environment: live (production) or test (development)
live: Use in real AI assistants (recommended)
test: Use for testing, development, experiments
Start with live environment unless you’re developing integrations.
Key Type: restricted (recommended) or unrestricted Restricted (Recommended)
Unrestricted
Scoped to specific repositories:
Select which repos this key can access
Prevents unauthorized documentation access
Best for team members who only need specific projects
Example:
Frontend team key: Access web-app, mobile-app only
Backend team key: Access api, services, infrastructure
Contractor key: Access only project-x repository
Access to all repositories:
No repository limitations
Full search across all connected repos
Best for team leads, architects, full-stack developers
Security note: Only give unrestricted keys to trusted team members who need org-wide documentation access.
Scopes: Leave default (tenant-scoped)This means the key only works within your ULPI account—can’t access other customers’ documentation. Rate limiting: Default (1,000 requests/hour)(Adjust if you have high-volume use cases) Token quotas: Inherit from plan(Or set per-key limits for team members) Expiration: No expiration (recommended) or custom(Set expiration for contractor keys or temporary access) IP restrictions: None (default) or whitelist(Enterprise only—restrict key usage to specific IPs)
Copy Your API Key
⚠️ CRITICAL: This is shown ONLY ONCE!
Copy the API key immediately
Store it securely:
Password manager (1Password, LastPass, Bitwarden)
Environment variable in your shell config
Secure note in your IDE
API key format: ulpi_live_sk_1234abcd...Never commit API keys to version control! Add to .gitignore: # ULPI API Keys
.env
.env.local
** /mcp_config.json
claude_desktop_config.json
Lost your key? You can’t recover it, but you can:
Revoke the old key
Create a new one
Update your AI tool config with the new key
Estimated time: 1 minute
Connect ULPI to your favorite AI coding tool.
Choose your AI assistant below and follow the setup:
Anthropic’s official AI assistant with best ULPI integration
Locate Config File
Find your Claude Desktop config file: ~ /Library/Application Support/Claude/claude_desktop_config.json
Open in terminal: open ~/Library/Application \ Support/Claude/
% APPDATA % \Claude\claude_desktop_config.json
Open in File Explorer: explorer % APPDATA % \Claude
~ /.config/Claude/claude_desktop_config.json
Open in terminal:
Add ULPI MCP Server
Edit claude_desktop_config.json: {
"mcpServers" : {
"ulpi-docs" : {
"command" : "npx" ,
"args" : [ "-y" , "@ulpi/mcp-server-documentation" ],
"env" : {
"ULPI_API_KEY" : "ulpi_live_YOUR_KEY_HERE"
}
}
}
}
Replace ulpi_live_YOUR_KEY_HERE with your actual API key from Step 3.
Already have other MCP servers?
Add ULPI to existing config: {
"mcpServers" : {
"filesystem" : {
"command" : "npx" ,
"args" : [ "-y" , "@modelcontextprotocol/server-filesystem" ]
},
"ulpi-docs" : {
"command" : "npx" ,
"args" : [ "-y" , "@ulpi/mcp-server-documentation" ],
"env" : {
"ULPI_API_KEY" : "ulpi_live_sk_abc123..."
}
},
"github" : {
"command" : "npx" ,
"args" : [ "-y" , "@modelcontextprotocol/server-github" ]
}
}
}
Just add the ulpi-docs block to your existing mcpServers object.
Restart Claude Desktop
Quit Claude Desktop completely (Cmd+Q on Mac, Alt+F4 on Windows)
Reopen Claude Desktop
Look for 🔌 MCP icon in bottom toolbar (indicates servers loaded)
Success indicator: You’ll see “MCP: 1 server connected” or “ulpi-docs” in the MCP status panel.
Total time: 2 minutesDetailed Claude Desktop guide → AI-first code editor with excellent MCP support
Locate Cursor Config
Config file location: ~ /.cursor/mcp_config.json
% USERPROFILE % \.cursor\mcp_config.json
Create file if it doesn’t exist: mkdir -p ~/.cursor
touch ~/.cursor/mcp_config.json
Add ULPI Configuration
Edit mcp_config.json: {
"mcpServers" : {
"ulpi-docs" : {
"command" : "npx" ,
"args" : [ "-y" , "@ulpi/mcp-server-documentation" ],
"env" : {
"ULPI_API_KEY" : "ulpi_live_YOUR_KEY_HERE"
}
}
}
}
Restart Cursor
Close all Cursor windows
Quit application completely
Reopen Cursor
Check MCP Servers in settings to verify connection
Detailed Cursor guide → Collaborative AI coding with flow state
Open Windsurf Settings
Open Windsurf
Go to Settings → Extensions → MCP Servers
Add ULPI Server
Click Add MCP Server and configure: {
"name" : "ulpi-docs" ,
"command" : "npx" ,
"args" : [ "-y" , "@ulpi/mcp-server-documentation" ],
"env" : {
"ULPI_API_KEY" : "ulpi_live_YOUR_KEY_HERE"
}
}
Activate Server
Save settings
Reload Windsurf window
Verify “ulpi-docs” appears in MCP status
Detailed Windsurf guide → Visual Studio Code with Continue or Cline extensions Continue Extension
Cline Extension
Open Continue Config
Config file: ~/.continue/config.jsonOr open via Continue extension: Settings → Edit config.json
Add to mcpServers Array
{
"mcpServers" : [
{
"name" : "ulpi-docs" ,
"command" : "npx" ,
"args" : [ "-y" , "@ulpi/mcp-server-documentation" ],
"env" : {
"ULPI_API_KEY" : "ulpi_live_YOUR_KEY_HERE"
}
}
]
}
Reload VSCode
Cmd+Shift+P → Developer: Reload Window
Continue setup guide →
Open Cline Settings
Click Cline icon in sidebar → Settings (gear icon)
Add MCP Server
In MCP Servers section, add: {
"ulpi-docs" : {
"command" : "npx" ,
"args" : [ "-y" , "@ulpi/mcp-server-documentation" ],
"env" : {
"ULPI_API_KEY" : "ulpi_live_YOUR_KEY_HERE"
}
}
}
Restart Extension
Disable and re-enable Cline extension, or reload VSCode window
Cline setup guide → Terminal-based AI coding by Anthropic
Locate Config File
Config location: ~ /.config/claude-code/mcp_config.json
% APPDATA % \claude - code\mcp_config.json
Add ULPI Server
{
"mcpServers" : {
"ulpi-docs" : {
"command" : "npx" ,
"args" : [ "-y" , "@ulpi/mcp-server-documentation" ],
"env" : {
"ULPI_API_KEY" : "ulpi_live_YOUR_KEY_HERE"
}
}
}
}
Verify Connection
Should show: ✅ ulpi-docs: Connected Claude Code setup guide → See complete setup guides for 40+ AI assistants: Desktop AI Apps: Code Editors: Terminal Tools: VS Code Extensions: See all MCP integrations →
Estimated time: 2 minutes
Step 5: Test Your First Search
Verify everything works!
Open Your AI Assistant
Launch the AI tool you configured in Step 4:
Claude Desktop
Cursor
VSCode with Continue/Cline
etc.
Ask a Documentation Question
Try these example queries: Environment Setup
Authentication
Testing
Configuration
Deployment
Architecture
"How do I set up the local development environment?"
Ask in plain English! ULPI understands natural language—no need for exact keywords.
Verify Results
Your AI assistant should: ✅ Search ULPI automatically (you won’t see this, it happens behind the scenes) ✅ Return relevant documentation excerpts from your repositories ✅ Include source file links like: Based on docs/setup.md:15-45:
To set up your development environment...
✅ Provide context-aware answers using YOUR project’s patterns ✅ Cite multiple sources if the answer spans multiple docs Success looks like: AI responds with specific details from your actual documentation, not generic advice.
Monitor in Dashboard
See searches in real-time:
Go to ULPI dashboard → Activity tab
You’ll see:
Recent searches
Which repositories were queried
Token usage
Response times
Example activity log: 10:34 AM - Search: "How do we deploy?"
→ Found in: infrastructure/deployment.md
→ Tokens used: 2,340
→ Response time: 45ms
10:31 AM - Search: "API authentication methods"
→ Found in: backend-api/README.md, docs/auth.md
→ Tokens used: 1,890
→ Response time: 38ms
Estimated time: 1 minute
Troubleshooting
🚨 AI Assistant Doesn't Search ULPI
Symptom: AI gives generic answers instead of searching your docs.Fixes:
Check MCP server connection:
Claude Desktop: Look for 🔌 icon in bottom toolbar
Cursor: Check Settings → MCP Servers shows “Connected”
VSCode: Continue/Cline should show “ulpi-docs” in status
Verify API key format:
{
"env" : {
"ULPI_API_KEY" : "ulpi_live_sk_abc123..." // ✅ Correct
}
}
Common errors:
"ULPI_API_KEY" : " ulpi_live_sk_abc123" // ❌ Leading space
"ULPI_API_KEY" : "ulpi_test_sk_abc123" // ❌ Wrong environment
"ULPI_API_KEY" : "'ulpi_live_sk_abc123'" // ❌ Extra quotes
Check MCP server logs:
macOS: ~/Library/Logs/Claude/mcp.log
Windows: %APPDATA%\Claude\Logs\mcp.log
Linux: ~/.config/Claude/logs/mcp.log
Look for errors like:
ERROR: Authentication failed - invalid API key
ERROR: ULPI_API_KEY environment variable not set
ERROR: Network error connecting to ULPI API
Restart AI assistant:
Fully quit (don’t just close window)
Reopen and try again
Config changes only load on full restart
⏱️ Indexing Taking Too Long
Symptom: Repository stuck at “Indexing…” for >30 minutes.Normal indexing times:
Less than 100 files: 30 seconds - 2 minutes
100-1,000 files: 2-5 minutes
1,000-10,000 files: 5-15 minutes
10,000+ files: 15-30 minutes
If it’s taking longer:
Check repository size:
Dashboard → Repositories → Click repo name
See “Files discovered” count
Large repos (10,000+ files) can take 30-45 minutes
Check for errors:
Look for ⚠️ warning icon next to repository
Click for error details
Common issues:
Binary files causing slowdown (auto-excluded, but takes time to detect)
Network issues accessing GitHub
Very large markdown files (>5MB)
Force re-index:
Dashboard → Repositories → Click ⟳ Re-index button
This restarts the indexing process
Sometimes resolves stuck states
Contact support:
If stuck >1 hour: support@ulpi.io
Include: repository name, size, approximate file count
🔍 Search Returns No Results
Symptom: AI says “I couldn’t find documentation about that” or returns empty results.Possible causes:
Indexing not complete:
Dashboard → Repositories → Check status
Wait for ”✅ Indexed” status
Usually takes 2-5 minutes
Documentation doesn’t exist:
Verify your repos actually have docs about that topic
Check if docs use different terminology
Example: You ask about “authentication” but docs say “auth” or “login”
Wrong repository scope:
API key might be scoped to specific repos
Dashboard → Settings → API Keys → Check scopes
Expand scope or use different key
Query too vague:
❌ “How does it work?”
✅ “How does authentication work?”
✅ “Explain our Redis caching strategy”
Be specific!
Files excluded by default:
Check .ulpiignore file in repository
Dashboard → Repositories → Click repo → See “Excluded patterns”
Adjust exclusions if needed
Symptom: “Invalid API key” or authentication errors.Fixes:
Verify key format:
ulpi_live_sk_1234567890abcdef... // ✅ Correct (live)
ulpi_test_sk_1234567890abcdef... // ✅ Correct (test)
ulpi_sk_1234567890abcdef... // ❌ Missing environment
sk_1234567890abcdef... // ❌ Missing ulpi_ prefix
Check environment match:
API key environment (live vs test)
MCP server environment
Dashboard shows environment per key
Verify key not revoked:
Dashboard → Settings → API Keys
Check key status is “Active” (not “Revoked”)
If revoked, create a new key
Test API key directly:
curl -H "Authorization: Bearer ulpi_live_sk_YOUR_KEY" \
https://api.ulpi.io/v1/search?q=test
Expected response:
{
"success" : true ,
"results" : [ ... ]
}
Error response:
{
"error" : "Invalid API key"
}
Symptom: “You’ve exceeded your monthly token limit” error.Solutions:
Check current usage:
Dashboard → Usage & Billing
See tokens used vs. plan limit
View usage by day/week/month
Upgrade plan:
Starter (100k) → Professional (500k)
Professional → Enterprise (2M)
Settings → Billing → Change Plan
Buy token overage:
$20 per 100,000 additional tokens
No service interruption
Automatically billed at end of month
Dashboard → Usage → “Buy More Tokens”
Set usage alerts:
Dashboard → Settings → Usage Alerts
Get notified at 50%, 75%, 90% of limit
Prevents surprises
Optimize searches:
Be more specific in queries (returns less data)
Scope searches to specific repositories
Avoid overly broad questions
🔒 Repository Access Denied
Symptom: “Access denied” when trying to search private repositories.Fixes:
Re-authenticate with GitHub:
Dashboard → Settings → Integrations
Click “Reconnect GitHub”
Grant access to private repositories
Check organization approval:
GitHub org admin must approve ULPI app
Ask admin to:
Go to github.com/organizations/YOUR_ORG/settings/oauth_application_policy
Find “ULPI Documentation”
Click “Grant access”
Verify API key scope:
Dashboard → Settings → API Keys
Click key name → View scopes
Ensure key has access to that repository
Repository permissions:
You must have at least “Read” access to repo in GitHub
Org admins can grant access via GitHub teams
🌐 Network / Firewall Issues
Symptom: Connection timeouts or “Cannot reach ULPI API” errors.Enterprise network fixes:
Whitelist ULPI domains:
api.ulpi.io
app.ulpi.io
*.ulpi.io
Allow outbound HTTPS (port 443):
ULPI MCP server needs to reach api.ulpi.io:443
Check corporate firewall rules
Proxy configuration:
{
"env" : {
"ULPI_API_KEY" : "ulpi_live_sk_..." ,
"HTTPS_PROXY" : "http://proxy.company.com:8080" ,
"HTTP_PROXY" : "http://proxy.company.com:8080"
}
}
VPN conflicts:
Try disconnecting VPN temporarily
If works without VPN, configure VPN to allow ULPI
Test connectivity:
curl -I https://api.ulpi.io/health
Expected: HTTP 200 OK
Error: Connection timeout or refused
Still stuck? Email support@ulpi.io with:
Error message screenshot
MCP server logs
API key (first/last 4 characters only)
AI tool and OS you’re using
What’s Next?
Advanced Search Features Master semantic search, filters, and query optimization Learn: Cross-repo search, branch filtering, date ranges, file type filters
How It Works (Technical Deep Dive) Understand the architecture behind ULPI’s semantic search Learn: Vector embeddings, Typesense, chunking strategies, indexing pipeline
Repository Management Add more repositories, configure indexing, manage webhooks Learn: Multi-repo strategies, .ulpiignore, custom exclusions, wiki integration
API Integration Integrate ULPI directly into your applications via REST API Learn: Direct API access, custom search UIs, workflow automation
Success Story
Your team’s documentation is searchable now. Time to see the same transformation.
Need help? We’re here for you:Average response time: Under 2 hours during business hours