We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xydong-web/mcp-nexus'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
enum TavilyKeyStatus {
active
disabled
cooldown
invalid
}
enum BraveKeyStatus {
active
disabled
invalid
}
enum GrokKeyStatus {
active
disabled
cooldown
invalid
}
enum AdminRole {
admin
viewer
}
model TavilyKey {
id String @id @default(cuid())
label String @unique
keyEncrypted Bytes
keyMasked String?
status TavilyKeyStatus @default(active)
cooldownUntil DateTime?
lastUsedAt DateTime?
failureScore Int @default(0)
creditsCheckedAt DateTime?
creditsExpiresAt DateTime?
creditsKeyUsage Float?
creditsKeyLimit Float?
creditsKeyRemaining Float?
creditsAccountPlanUsage Float?
creditsAccountPlanLimit Float?
creditsAccountPaygoUsage Float?
creditsAccountPaygoLimit Float?
creditsAccountRemaining Float?
creditsRemaining Float?
creditsRefreshLockUntil DateTime?
creditsRefreshLockId String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
researchJobs ResearchJob[]
usageLogs TavilyToolUsage[]
@@index([status, cooldownUntil, lastUsedAt])
@@index([creditsExpiresAt, creditsRemaining])
@@index([creditsRefreshLockUntil])
}
model ClientToken {
id String @id @default(cuid())
description String?
tokenPrefix String @unique
tokenHash Bytes
tokenEncrypted Bytes? // Encrypted plaintext token for admin reveal (nullable for legacy tokens)
scopesJson Json @default(dbgenerated("'[]'"))
allowedTools Json? // Phase 3.4: Array of allowed tool names, null = all tools allowed
rateLimit Int? // Phase 3.5: Per-token rate limit (requests per minute), null = use global default
expiresAt DateTime?
revokedAt DateTime?
createdAt DateTime @default(now())
researchJobs ResearchJob[]
usageLogs TavilyToolUsage[]
braveUsageLogs BraveToolUsage[]
grokUsageLogs GrokToolUsage[]
@@index([revokedAt, expiresAt])
}
model AdminUser {
id String @id @default(cuid())
username String @unique
passwordHash String
role AdminRole @default(admin)
createdAt DateTime @default(now())
}
model AuditLog {
id String @id @default(cuid())
timestamp DateTime @default(now())
actorAdminId String?
eventType String
resourceType String?
resourceId String?
outcome String
ip String?
userAgent String?
detailsJson Json @default(dbgenerated("'{}'"))
@@index([timestamp])
@@index([eventType])
@@index([outcome])
@@index([resourceType, resourceId])
@@index([actorAdminId])
}
model ResearchJob {
id String @id @default(cuid())
clientTokenId String
upstreamKeyId String
upstreamJobId String @unique
status String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
clientToken ClientToken @relation(fields: [clientTokenId], references: [id])
upstreamKey TavilyKey @relation(fields: [upstreamKeyId], references: [id])
@@index([clientTokenId, upstreamKeyId])
}
model TavilyToolUsage {
id String @id @default(cuid())
timestamp DateTime @default(now())
toolName String
outcome String
latencyMs Int?
clientTokenId String
clientTokenPrefix String?
upstreamKeyId String?
queryHash String?
queryPreview String?
argsJson Json @default(dbgenerated("'{}'"))
errorMessage String?
clientToken ClientToken @relation(fields: [clientTokenId], references: [id])
upstreamKey TavilyKey? @relation(fields: [upstreamKeyId], references: [id])
@@index([timestamp])
@@index([toolName])
@@index([outcome])
@@index([clientTokenId, timestamp])
@@index([queryHash])
@@index([upstreamKeyId])
}
model ServerSetting {
key String @id
value String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model RegistrationRun {
id String @id @default(cuid())
provider String @default("tavily")
status String @default("queued")
phase String @default("queued")
totalCandidates Int @default(0)
completedCandidates Int @default(0)
failedCandidates Int @default(0)
importedCandidates Int @default(0)
retryCount Int @default(0)
throttleCount Int @default(0)
lastErrorClass String?
lastErrorMessage String?
requestJson Json @default(dbgenerated("'{}'"))
resultJson Json @default(dbgenerated("'{}'"))
statusCodeSummaryJson Json @default(dbgenerated("'{}'"))
startedAt DateTime?
finishedAt DateTime?
stopRequestedAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([createdAt])
@@index([status, updatedAt])
}
model BraveKey {
id String @id @default(cuid())
label String @unique
keyEncrypted Bytes
keyMasked String?
status BraveKeyStatus @default(active)
lastUsedAt DateTime?
failureScore Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
usageLogs BraveToolUsage[]
@@index([status, lastUsedAt])
}
model GrokKey {
id String @id @default(cuid())
label String @unique
keyEncrypted Bytes
keyMasked String?
status GrokKeyStatus @default(active)
cooldownUntil DateTime?
lastUsedAt DateTime?
failureScore Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
usageLogs GrokToolUsage[]
@@index([status, cooldownUntil, lastUsedAt])
}
model BraveToolUsage {
id String @id @default(cuid())
timestamp DateTime @default(now())
toolName String
outcome String
latencyMs Int?
clientTokenId String
clientTokenPrefix String?
upstreamKeyId String?
queryHash String?
queryPreview String?
argsJson Json @default(dbgenerated("'{}'"))
errorMessage String?
clientToken ClientToken @relation(fields: [clientTokenId], references: [id])
upstreamKey BraveKey? @relation(fields: [upstreamKeyId], references: [id])
@@index([timestamp])
@@index([toolName])
@@index([outcome])
@@index([clientTokenId, timestamp])
@@index([queryHash])
@@index([upstreamKeyId])
}
model GrokToolUsage {
id String @id @default(cuid())
timestamp DateTime @default(now())
toolName String
outcome String
latencyMs Int?
clientTokenId String
clientTokenPrefix String?
upstreamKeyId String?
queryHash String?
queryPreview String?
argsJson Json @default(dbgenerated("'{}'"))
errorMessage String?
clientToken ClientToken @relation(fields: [clientTokenId], references: [id])
upstreamKey GrokKey? @relation(fields: [upstreamKeyId], references: [id])
@@index([timestamp])
@@index([toolName])
@@index([outcome])
@@index([clientTokenId, timestamp])
@@index([queryHash])
@@index([upstreamKeyId])
}