Permission-aware retrieval for AI systems: policy-enforced access to organizational knowledge.
MCPpedia last refreshed this data
ai.gateco/gateco is an MCP server that permission-aware retrieval for AI systems: policy-enforced access to organizational knowledge. Its tool list has not been published yet over stdio and sse, requires no API key, and scores 85/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"gateco": {
"env": {
"GATECO_API_KEY": "gck_live_abc123...",
"GATECO_BASE_URL": "https://api.gateco.ai"
},
"command": "gateco-mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Official Python client for the Gateco API — permission-aware retrieval for AI systems.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'gateco' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked gateco against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in other
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
Transport for TMCP using STDIO
The graph based agentic IDE
Buddhist canon tools: search, passages, cross-canon parallels, dictionaries — all URN-cited.
MCP Security Weekly
Get CVE alerts and security updates for ai.gateco/gateco and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Official Python client for the Gateco API — permission-aware retrieval for AI systems.
Without Gateco, when an employee asks your AI assistant "What is the CEO's salary?", the RAG pipeline returns the salary from a leaked HR document.
With Gateco:
from gateco_sdk import GatecoClient
client = GatecoClient(api_key="gck_live_abc123...")
result = client.retrievals.execute(
query="What is the CEO's salary?",
principal_id="user_james_wu",
connector_id="connector_hr_docs",
search_mode="hybrid",
)
# result.allowed_chunks → [] (denied — James Wu lacks HR classification access)
# result.denied_count → 1
# result.decision → "DENIED"
# Your AI model never sees the salary data
Gateco sits between your AI agent and your vector store. Every retrieval is evaluated against your access policies before any content reaches the model.
pip install gateco
For MCP server support (Claude Desktop, Cursor, etc.):
pip install gateco[mcp]
Gateco API keys use the format gck_<env>_<random> (e.g. gck_live_abc123...).
Generate keys via the dashboard or via client.api_keys.create(name="my-service").
from gateco_sdk import AsyncGatecoClient, GatecoClient
# Async client with API key
client = AsyncGatecoClient("https://api.gateco.ai", api_key="gck_live_abc123...")
# Sync client with API key
client = GatecoClient("https://api.gateco.ai", api_key="gck_live_abc123...")
# Or use email/password login (issues a short-lived JWT)
client = GatecoClient("https://api.gateco.ai")
client.login("user@example.com", "password")
The API key is sent as the X-API-Key header on every request. Set it via the
GATECO_API_KEY environment variable when using the CLI or MCP server.
import asyncio
from gateco_sdk import AsyncGatecoClient
async def main():
async with AsyncGatecoClient(
"https://api.gateco.ai",
api_key="gck_live_abc123...",
) as client:
# Policy-gated retrieval — the core Gateco primitive
result = await client.retrievals.execute(
query="What is the CEO's salary?",
principal_id="user_james_wu",
connector_id="connector_hr_docs",
search_mode="hybrid",
alpha=0.7, # 70% vector weight, 30% keyword
top_k=5,
)
# Allowed chunks are safe to pass to your LLM
for chunk in result.allowed_chunks:
print(f"[ALLOWED] {chunk.resource_id} score={chunk.score}")
# Denied chunks are redacted — only metadata is surfaced
print(f"Denied: {result.denied_count} chunk(s)")
asyncio.run(main())
from gateco_sdk import GatecoClient
with GatecoClient("https://api.gateco.ai", api_key="gck_live_abc123...") as client:
result = client.retrievals.execute(
query="What is the CEO's salary?",
principal_id="user_james_wu",
connector_id="connector_hr_docs",
search_mode="hybrid",
)
print(result.decision) # "DENIED"
All 19 namespaces are available on both AsyncGatecoClient (async) and GatecoClient (sync).
| Namespace | Description |
|---|---|
client.answers | Grounded answer synthesis with policy-filtered citations (Team+) |
client.api_keys | Create, list, delete, and rotate API keys |
client.audit | Audit log listing and CSV export |
| `client |