Skip to main content
Glama

WikiJS MCP Server

by jaalbin24
wikijs.schema•25.3 kB
# Controls the rate of traffic. directive @rateLimit( # Number of occurrences allowed over duration. limit: Int! = 60 # Number of seconds before limit is reset. duration: Int! = 60 ) on OBJECT | FIELD_DEFINITION directive @auth( requires: [String] ) on QUERY | FIELD_DEFINITION | ARGUMENT_DEFINITION directive @cacheControl( maxAge: Int scope: CacheControlScope ) on FIELD_DEFINITION | OBJECT | INTERFACE # Queries for Analytics type AnalyticsQuery { # Fetch list of Analytics providers and their configuration providers( # Return only active providers isEnabled: Boolean ): [AnalyticsProvider] } # Mutations for Analytics type AnalyticsMutation { # Update a list of Analytics providers and their configuration updateProviders( # List of providers providers: [AnalyticsProviderInput]! ): DefaultResponse } # Analytics Provider type AnalyticsProvider { # Is the provider active isEnabled: Boolean! # Unique identifier for this provider key: String! # List of configuration properties, formatted as stringified JSON objects props: [String] # Name of the provider title: String! # Short description of the provider description: String # Is the provider available for use isAvailable: Boolean # Path to the provider logo logo: String # Website of the provider website: String # Configuration values for this provider config: [KeyValuePair] } # Analytics Configuration Input input AnalyticsProviderInput { # Is the provider active isEnabled: Boolean! # Unique identifier of the provider key: String! # Configuration values for this provider config: [KeyValuePairInput] } type AssetQuery { list(folderId: Int!, kind: AssetKind!): [AssetItem] folders(parentFolderId: Int!): [AssetFolder] } type AssetMutation { createFolder( parentFolderId: Int! slug: String! name: String ): DefaultResponse renameAsset(id: Int!, filename: String!): DefaultResponse deleteAsset(id: Int!): DefaultResponse flushTempUploads: DefaultResponse } type AssetItem { id: Int! filename: String! ext: String! kind: AssetKind! mime: String! fileSize: Int! metadata: String createdAt: Date! updatedAt: Date! folder: AssetFolder author: User } type AssetFolder { id: Int! slug: String! name: String } enum AssetKind { IMAGE BINARY ALL } type AuthenticationQuery { apiKeys: [AuthenticationApiKey] apiState: Boolean! strategies: [AuthenticationStrategy] activeStrategies(enabledOnly: Boolean): [AuthenticationActiveStrategy] } type AuthenticationMutation { createApiKey( name: String! expiration: String! fullAccess: Boolean! group: Int ): AuthenticationCreateApiKeyResponse login( username: String! password: String! strategy: String! ): AuthenticationLoginResponse loginTFA( continuationToken: String! securityCode: String! setup: Boolean ): AuthenticationLoginResponse loginChangePassword( continuationToken: String! newPassword: String! ): AuthenticationLoginResponse forgotPassword(email: String!): DefaultResponse register( email: String! password: String! name: String! ): AuthenticationRegisterResponse revokeApiKey(id: Int!): DefaultResponse setApiState(enabled: Boolean!): DefaultResponse updateStrategies(strategies: [AuthenticationStrategyInput]!): DefaultResponse regenerateCertificates: DefaultResponse resetGuestUser: DefaultResponse } type AuthenticationStrategy { key: String! props: [KeyValuePair] title: String! description: String isAvailable: Boolean useForm: Boolean! usernameType: String logo: String color: String website: String icon: String } type AuthenticationActiveStrategy { key: String! strategy: AuthenticationStrategy! displayName: String! order: Int! isEnabled: Boolean! config: [KeyValuePair] selfRegistration: Boolean! domainWhitelist: [String]! autoEnrollGroups: [Int]! } type AuthenticationLoginResponse { responseResult: ResponseStatus jwt: String mustChangePwd: Boolean mustProvideTFA: Boolean mustSetupTFA: Boolean continuationToken: String redirect: String tfaQRImage: String } type AuthenticationRegisterResponse { responseResult: ResponseStatus jwt: String } input AuthenticationStrategyInput { key: String! strategyKey: String! config: [KeyValuePairInput] displayName: String! order: Int! isEnabled: Boolean! selfRegistration: Boolean! domainWhitelist: [String]! autoEnrollGroups: [Int]! } type AuthenticationApiKey { id: Int! name: String! keyShort: String! expiration: Date! createdAt: Date! updatedAt: Date! isRevoked: Boolean! } type AuthenticationCreateApiKeyResponse { responseResult: ResponseStatus key: String } type CommentQuery { providers: [CommentProvider] list(locale: String!, path: String!): [CommentPost]! single(id: Int!): CommentPost } type CommentMutation { updateProviders(providers: [CommentProviderInput]): DefaultResponse create( pageId: Int! replyTo: Int content: String! guestName: String guestEmail: String ): CommentCreateResponse update(id: Int!, content: String!): CommentUpdateResponse delete(id: Int!): DefaultResponse } type CommentProvider { isEnabled: Boolean! key: String! title: String! description: String logo: String website: String isAvailable: Boolean config: [KeyValuePair] } input CommentProviderInput { isEnabled: Boolean! key: String! config: [KeyValuePairInput] } type CommentPost { id: Int! content: String! render: String! authorId: Int! authorName: String! authorEmail: String! authorIP: String! createdAt: Date! updatedAt: Date! } type CommentCreateResponse { responseResult: ResponseStatus id: Int } type CommentUpdateResponse { responseResult: ResponseStatus render: String } # Generic Key Value Pair type KeyValuePair { key: String! value: String! } # General Key Value Pair Input input KeyValuePairInput { key: String! value: String! } # Generic Mutation Response type DefaultResponse { responseResult: ResponseStatus } # Mutation Status type ResponseStatus { succeeded: Boolean! errorCode: Int! slug: String! message: String } # Query (Read) type Query { analytics: AnalyticsQuery assets: AssetQuery authentication: AuthenticationQuery comments: CommentQuery contribute: ContributeQuery groups: GroupQuery localization: LocalizationQuery logging: LoggingQuery mail: MailQuery navigation: NavigationQuery pages: PageQuery rendering: RenderingQuery search: SearchQuery site: SiteQuery storage: StorageQuery system: SystemQuery theming: ThemingQuery users: UserQuery } # Mutations (Create, Update, Delete) type Mutation { analytics: AnalyticsMutation assets: AssetMutation authentication: AuthenticationMutation comments: CommentMutation groups: GroupMutation localization: LocalizationMutation logging: LoggingMutation mail: MailMutation navigation: NavigationMutation pages: PageMutation rendering: RenderingMutation search: SearchMutation site: SiteMutation storage: StorageMutation system: SystemMutation theming: ThemingMutation users: UserMutation } # Subscriptions (Push, Real-time) type Subscription { loggingLiveTrail: LoggerTrailLine } type ContributeQuery { contributors: [ContributeContributor] } type ContributeContributor { id: String! source: String! name: String! joined: Date! website: String twitter: String avatar: String } type GroupQuery { list(filter: String, orderBy: String): [GroupMinimal] single(id: Int!): Group } type GroupMutation { create(name: String!): GroupResponse update( id: Int! name: String! redirectOnLogin: String! permissions: [String]! pageRules: [PageRuleInput]! ): DefaultResponse delete(id: Int!): DefaultResponse assignUser(groupId: Int!, userId: Int!): DefaultResponse unassignUser(groupId: Int!, userId: Int!): DefaultResponse } type GroupResponse { responseResult: ResponseStatus! group: Group } type GroupMinimal { id: Int! name: String! isSystem: Boolean! userCount: Int createdAt: Date! updatedAt: Date! } type Group { id: Int! name: String! isSystem: Boolean! redirectOnLogin: String permissions: [String]! pageRules: [PageRule] users: [UserMinimal] createdAt: Date! updatedAt: Date! } type PageRule { id: String! deny: Boolean! match: PageRuleMatch! roles: [String]! path: String! locales: [String]! } input PageRuleInput { id: String! deny: Boolean! match: PageRuleMatch! roles: [String]! path: String! locales: [String]! } enum PageRuleMatch { START EXACT END REGEX TAG } type LocalizationQuery { locales: [LocalizationLocale] config: LocalizationConfig translations(locale: String!, namespace: String!): [Translation] } type LocalizationMutation { downloadLocale(locale: String!): DefaultResponse updateLocale( locale: String! autoUpdate: Boolean! namespacing: Boolean! namespaces: [String]! ): DefaultResponse } type LocalizationLocale { availability: Int! code: String! createdAt: Date! installDate: Date isInstalled: Boolean! isRTL: Boolean! name: String! nativeName: String! updatedAt: Date! } type LocalizationConfig { locale: String! autoUpdate: Boolean! namespacing: Boolean! namespaces: [String]! } type Translation { key: String! value: String! } type LoggingQuery { loggers(filter: String, orderBy: String): [Logger] } type LoggingMutation { updateLoggers(loggers: [LoggerInput]): DefaultResponse } type Logger { isEnabled: Boolean! key: String! title: String! description: String logo: String website: String level: String config: [KeyValuePair] } input LoggerInput { isEnabled: Boolean! key: String! level: String! config: [KeyValuePairInput] } type LoggerTrailLine { level: String! output: String! timestamp: Date! } type MailQuery { config: MailConfig } type MailMutation { sendTest(recipientEmail: String!): DefaultResponse updateConfig( senderName: String! senderEmail: String! host: String! port: Int! name: String! secure: Boolean! verifySSL: Boolean! user: String! pass: String! useDKIM: Boolean! dkimDomainName: String! dkimKeySelector: String! dkimPrivateKey: String! ): DefaultResponse } type MailConfig { senderName: String senderEmail: String host: String port: Int name: String secure: Boolean verifySSL: Boolean user: String pass: String useDKIM: Boolean dkimDomainName: String dkimKeySelector: String dkimPrivateKey: String } type NavigationQuery { tree: [NavigationTree]! config: NavigationConfig! } type NavigationMutation { updateTree(tree: [NavigationTreeInput]!): DefaultResponse updateConfig(mode: NavigationMode!): DefaultResponse } type NavigationTree { locale: String! items: [NavigationItem]! } input NavigationTreeInput { locale: String! items: [NavigationItemInput]! } type NavigationItem { id: String! kind: String! label: String icon: String targetType: String target: String visibilityMode: String visibilityGroups: [Int] } input NavigationItemInput { id: String! kind: String! label: String icon: String targetType: String target: String visibilityMode: String visibilityGroups: [Int] } type NavigationConfig { mode: NavigationMode! } enum NavigationMode { NONE TREE MIXED STATIC } type PageQuery { history(id: Int!, offsetPage: Int, offsetSize: Int): PageHistoryResult version(pageId: Int!, versionId: Int!): PageVersion search(query: String!, path: String, locale: String): PageSearchResponse! list( limit: Int orderBy: PageOrderBy orderByDirection: PageOrderByDirection tags: [String!] locale: String creatorId: Int authorId: Int ): [PageListItem!]! single(id: Int!): Page singleByPath(path: String!, locale: String!): Page tags: [PageTag]! searchTags(query: String!): [String]! tree( path: String parent: Int mode: PageTreeMode! locale: String! includeAncestors: Boolean ): [PageTreeItem] links(locale: String!): [PageLinkItem] checkConflicts(id: Int!, checkoutDate: Date!): Boolean! conflictLatest(id: Int!): PageConflictLatest! } type PageMutation { create( content: String! description: String! editor: String! isPublished: Boolean! isPrivate: Boolean! locale: String! path: String! publishEndDate: Date publishStartDate: Date scriptCss: String scriptJs: String tags: [String]! title: String! ): PageResponse update( id: Int! content: String description: String editor: String isPrivate: Boolean isPublished: Boolean locale: String path: String publishEndDate: Date publishStartDate: Date scriptCss: String scriptJs: String tags: [String] title: String ): PageResponse convert(id: Int!, editor: String!): DefaultResponse move( id: Int! destinationPath: String! destinationLocale: String! ): DefaultResponse delete(id: Int!): DefaultResponse deleteTag(id: Int!): DefaultResponse updateTag(id: Int!, tag: String!, title: String!): DefaultResponse flushCache: DefaultResponse migrateToLocale( sourceLocale: String! targetLocale: String! ): PageMigrationResponse rebuildTree: DefaultResponse render(id: Int!): DefaultResponse restore(pageId: Int!, versionId: Int!): DefaultResponse purgeHistory(olderThan: String!): DefaultResponse } type PageResponse { responseResult: ResponseStatus! page: Page } type PageMigrationResponse { responseResult: ResponseStatus! count: Int } type Page { id: Int! path: String! hash: String! title: String! description: String! isPrivate: Boolean! isPublished: Boolean! privateNS: String publishStartDate: Date! publishEndDate: Date! tags: [PageTag]! content: String! render: String toc: String contentType: String! createdAt: Date! updatedAt: Date! editor: String! locale: String! scriptCss: String scriptJs: String authorId: Int! authorName: String! authorEmail: String! creatorId: Int! creatorName: String! creatorEmail: String! } type PageTag { id: Int! tag: String! title: String createdAt: Date! updatedAt: Date! } type PageHistory { versionId: Int! versionDate: Date! authorId: Int! authorName: String! actionType: String! valueBefore: String valueAfter: String } type PageVersion { action: String! authorId: String! authorName: String! content: String! contentType: String! createdAt: Date! versionDate: Date! description: String! editor: String! isPrivate: Boolean! isPublished: Boolean! locale: String! pageId: Int! path: String! publishEndDate: Date! publishStartDate: Date! tags: [String]! title: String! versionId: Int! } type PageHistoryResult { trail: [PageHistory] total: Int! } type PageSearchResponse { results: [PageSearchResult]! suggestions: [String]! totalHits: Int! } type PageSearchResult { id: String! title: String! description: String! path: String! locale: String! } type PageListItem { id: Int! path: String! locale: String! title: String description: String contentType: String! isPublished: Boolean! isPrivate: Boolean! privateNS: String createdAt: Date! updatedAt: Date! tags: [String] } type PageTreeItem { id: Int! path: String! depth: Int! title: String! isPrivate: Boolean! isFolder: Boolean! privateNS: String parent: Int pageId: Int locale: String! } type PageLinkItem { id: Int! path: String! title: String! links: [String]! } type PageConflictLatest { id: Int! authorId: String! authorName: String! content: String! createdAt: Date! description: String! isPublished: Boolean! locale: String! path: String! tags: [String] title: String! updatedAt: Date! } enum PageOrderBy { CREATED ID PATH TITLE UPDATED } enum PageOrderByDirection { ASC DESC } enum PageTreeMode { FOLDERS PAGES ALL } type RenderingQuery { renderers(filter: String, orderBy: String): [Renderer] } type RenderingMutation { updateRenderers(renderers: [RendererInput]): DefaultResponse } type Renderer { isEnabled: Boolean! key: String! title: String! description: String icon: String dependsOn: String input: String output: String config: [KeyValuePair] } input RendererInput { isEnabled: Boolean! key: String! config: [KeyValuePairInput] } scalar Date type SearchQuery { searchEngines(filter: String, orderBy: String): [SearchEngine] } type SearchMutation { updateSearchEngines(engines: [SearchEngineInput]): DefaultResponse rebuildIndex: DefaultResponse } type SearchEngine { isEnabled: Boolean! key: String! title: String! description: String logo: String website: String isAvailable: Boolean config: [KeyValuePair] } input SearchEngineInput { isEnabled: Boolean! key: String! config: [KeyValuePairInput] } type SiteQuery { config: SiteConfig } type SiteMutation { updateConfig( host: String title: String description: String robots: [String] analyticsService: String analyticsId: String company: String contentLicense: String footerOverride: String logoUrl: String pageExtensions: String authAutoLogin: Boolean authEnforce2FA: Boolean authHideLocal: Boolean authLoginBgUrl: String authJwtAudience: String authJwtExpiration: String authJwtRenewablePeriod: String editFab: Boolean editMenuBar: Boolean editMenuBtn: Boolean editMenuExternalBtn: Boolean editMenuExternalName: String editMenuExternalIcon: String editMenuExternalUrl: String featurePageRatings: Boolean featurePageComments: Boolean featurePersonalWikis: Boolean securityOpenRedirect: Boolean securityIframe: Boolean securityReferrerPolicy: Boolean securityTrustProxy: Boolean securitySRI: Boolean securityHSTS: Boolean securityHSTSDuration: Int securityCSP: Boolean securityCSPDirectives: String uploadMaxFileSize: Int uploadMaxFiles: Int uploadScanSVG: Boolean uploadForceDownload: Boolean ): DefaultResponse } type SiteConfig { host: String title: String description: String robots: [String] analyticsService: String analyticsId: String company: String contentLicense: String footerOverride: String logoUrl: String pageExtensions: String authAutoLogin: Boolean authEnforce2FA: Boolean authHideLocal: Boolean authLoginBgUrl: String authJwtAudience: String authJwtExpiration: String authJwtRenewablePeriod: String editFab: Boolean editMenuBar: Boolean editMenuBtn: Boolean editMenuExternalBtn: Boolean editMenuExternalName: String editMenuExternalIcon: String editMenuExternalUrl: String featurePageRatings: Boolean featurePageComments: Boolean featurePersonalWikis: Boolean securityOpenRedirect: Boolean securityIframe: Boolean securityReferrerPolicy: Boolean securityTrustProxy: Boolean securitySRI: Boolean securityHSTS: Boolean securityHSTSDuration: Int securityCSP: Boolean securityCSPDirectives: String uploadMaxFileSize: Int uploadMaxFiles: Int uploadScanSVG: Boolean uploadForceDownload: Boolean } type StorageQuery { targets: [StorageTarget] status: [StorageStatus] } type StorageMutation { updateTargets(targets: [StorageTargetInput]!): DefaultResponse executeAction(targetKey: String!, handler: String!): DefaultResponse } type StorageTarget { isAvailable: Boolean! isEnabled: Boolean! key: String! title: String! description: String logo: String website: String supportedModes: [String] mode: String hasSchedule: Boolean! syncInterval: String syncIntervalDefault: String config: [KeyValuePair] actions: [StorageTargetAction] } input StorageTargetInput { isEnabled: Boolean! key: String! mode: String! syncInterval: String config: [KeyValuePairInput] } type StorageStatus { key: String! title: String! status: String! message: String! lastAttempt: String! } type StorageTargetAction { handler: String! label: String! hint: String! } type SystemQuery { flags: [SystemFlag] info: SystemInfo extensions: [SystemExtension] exportStatus: SystemExportStatus } type SystemMutation { updateFlags(flags: [SystemFlagInput]!): DefaultResponse resetTelemetryClientId: DefaultResponse setTelemetry(enabled: Boolean!): DefaultResponse performUpgrade: DefaultResponse importUsersFromV1( mongoDbConnString: String! groupMode: SystemImportUsersGroupMode! ): SystemImportUsersResponse setHTTPSRedirection(enabled: Boolean!): DefaultResponse renewHTTPSCertificate: DefaultResponse export(entities: [String]!, path: String!): DefaultResponse } type SystemFlag { key: String! value: Boolean! } input SystemFlagInput { key: String! value: Boolean! } type SystemInfo { configFile: String cpuCores: Int currentVersion: String dbHost: String dbType: String dbVersion: String groupsTotal: Int hostname: String httpPort: Int httpRedirection: Boolean httpsPort: Int latestVersion: String latestVersionReleaseDate: Date nodeVersion: String operatingSystem: String pagesTotal: Int platform: String ramTotal: String sslDomain: String sslExpirationDate: Date sslProvider: String sslStatus: String sslSubscriberEmail: String tagsTotal: Int telemetry: Boolean telemetryClientId: String upgradeCapable: Boolean usersTotal: Int workingDirectory: String } enum SystemImportUsersGroupMode { MULTI SINGLE NONE } type SystemImportUsersResponse { responseResult: ResponseStatus usersCount: Int groupsCount: Int failed: [SystemImportUsersResponseFailed] } type SystemImportUsersResponseFailed { provider: String email: String error: String } type SystemExtension { key: String! title: String! description: String! isInstalled: Boolean! isCompatible: Boolean! } type SystemExportStatus { status: String progress: Int message: String startedAt: Date } type ThemingQuery { themes: [ThemingTheme] config: ThemingConfig } type ThemingMutation { setConfig( theme: String! iconset: String! darkMode: Boolean! tocPosition: String injectCSS: String injectHead: String injectBody: String ): DefaultResponse } type ThemingConfig { theme: String! iconset: String! darkMode: Boolean! tocPosition: String injectCSS: String injectHead: String injectBody: String } type ThemingTheme { key: String title: String author: String } type UserQuery { list(filter: String, orderBy: String): [UserMinimal] search(query: String!): [UserMinimal] single(id: Int!): User profile: UserProfile lastLogins: [UserLastLogin] } type UserMutation { create( email: String! name: String! passwordRaw: String providerKey: String! groups: [Int]! mustChangePassword: Boolean sendWelcomeEmail: Boolean ): UserResponse update( id: Int! email: String name: String newPassword: String groups: [Int] location: String jobTitle: String timezone: String dateFormat: String appearance: String ): DefaultResponse delete(id: Int!, replaceId: Int!): DefaultResponse verify(id: Int!): DefaultResponse activate(id: Int!): DefaultResponse deactivate(id: Int!): DefaultResponse enableTFA(id: Int!): DefaultResponse disableTFA(id: Int!): DefaultResponse resetPassword(id: Int!): DefaultResponse updateProfile( name: String! location: String! jobTitle: String! timezone: String! dateFormat: String! appearance: String! ): UserTokenResponse changePassword(current: String!, new: String!): UserTokenResponse } type UserResponse { responseResult: ResponseStatus! user: User } type UserLastLogin { id: Int! name: String! lastLoginAt: Date! } type UserMinimal { id: Int! name: String! email: String! providerKey: String! isSystem: Boolean! isActive: Boolean! createdAt: Date! lastLoginAt: Date } type User { id: Int! name: String! email: String! providerKey: String! providerName: String providerId: String providerIs2FACapable: Boolean isSystem: Boolean! isActive: Boolean! isVerified: Boolean! location: String! jobTitle: String! timezone: String! dateFormat: String! appearance: String! createdAt: Date! updatedAt: Date! lastLoginAt: Date tfaIsActive: Boolean! groups: [Group]! } type UserProfile { id: Int! name: String! email: String! providerKey: String providerName: String isSystem: Boolean! isVerified: Boolean! location: String! jobTitle: String! timezone: String! dateFormat: String! appearance: String! createdAt: Date! updatedAt: Date! lastLoginAt: Date groups: [String]! pagesTotal: Int! } type UserTokenResponse { responseResult: ResponseStatus! jwt: String } enum CacheControlScope { PUBLIC PRIVATE } # The `Upload` scalar type represents a file upload. scalar Upload

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jaalbin24/wikijs-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server