We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tbrennem-source/sf-permits-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
{# Inline tier gate teaser — for HTMX swap targets (no DOCTYPE, no <html>).
Used by /ask to return a teaser card in the search results panel.
Context vars:
required_tier: 'beta' or 'premium'
current_tier: user's current tier string
user: the g.user dict (or None for anonymous)
#}
<div class="tier-gate-inline-card">
<span class="tier-gate-inline-badge">
{% if required_tier == "premium" %}Premium{% else %}Beta{% endif %} Feature
</span>
<h2 class="tier-gate-inline-title">
AI consultation is available for
{% if required_tier == "premium" %}Premium{% else %}Beta{% endif %} users
</h2>
<p class="tier-gate-inline-desc">
Ask questions, get severity analysis, and receive AI-powered permit guidance
across all your SF properties. Upgrade to unlock the full intelligence layer.
</p>
{% if user %}
<a href="{{ url_for('auth.beta_join') if required_tier == 'beta' else url_for('auth.auth_login') }}"
class="tier-gate-inline-cta">
{% if required_tier == "beta" %}Join Beta →{% else %}Upgrade to Premium →{% endif %}
</a>
<p class="tier-gate-inline-current">
Current plan: <span style="color: var(--text-secondary);">{{ current_tier }}</span>
</p>
{% else %}
<a href="{{ url_for('auth.auth_login') }}" class="tier-gate-inline-cta">Sign In to Continue →</a>
{% endif %}
</div>
<style>
.tier-gate-inline-card {
background: var(--obsidian-mid, #12121a);
border: 1px solid var(--glass-border, rgba(255,255,255,0.06));
border-radius: var(--radius-md, 12px);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
padding: var(--space-8);
max-width: 480px;
margin: var(--space-6) auto;
text-align: center;
}
.tier-gate-inline-badge {
display: inline-block;
font-family: var(--mono);
font-size: 0.65rem;
font-weight: 400;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--signal-blue, #60a5fa);
background: rgba(96, 165, 250, 0.08);
border: 1px solid rgba(96, 165, 250, 0.20);
border-radius: var(--radius-full, 9999px);
padding: 4px 12px;
margin-bottom: var(--space-4);
}
.tier-gate-inline-title {
font-family: var(--sans);
font-size: var(--text-xl);
font-weight: 300;
color: var(--text-primary);
margin: 0 0 var(--space-4) 0;
line-height: 1.3;
}
.tier-gate-inline-desc {
font-family: var(--sans);
font-size: var(--text-base);
color: var(--text-secondary);
line-height: 1.6;
margin: 0 0 var(--space-6) 0;
}
.tier-gate-inline-cta {
display: inline-block;
font-family: var(--mono);
font-size: var(--text-base);
font-weight: 400;
color: var(--obsidian, #0a0a0f);
background: var(--accent, #5eead4);
border: none;
border-radius: var(--radius-md, 12px);
padding: 12px var(--space-6);
cursor: pointer;
text-decoration: none;
text-align: center;
transition: opacity 0.2s;
letter-spacing: 0.02em;
}
.tier-gate-inline-cta:hover { opacity: 0.88; }
.tier-gate-inline-current {
margin-top: var(--space-4);
font-family: var(--mono);
font-size: var(--text-sm);
color: var(--text-tertiary);
}
@media (max-width: 480px) {
.tier-gate-inline-card { padding: var(--space-6) var(--space-4); }
.tier-gate-inline-title { font-size: var(--text-lg); }
.tier-gate-inline-cta { width: 100%; display: block; box-sizing: border-box; }
}
</style>