Connect AI Agents to your Drupal site
A native Drupal module with services architecture, dependency injection, and config management. Lets AI agents securely search nodes, read content, and query comments — all respecting your Drupal permissions.
Goldnat for Drupal · Goldnat for Drupal — the Bridge add-on
Why this plugin
What you get with Goldnat for Drupal.
⚙️
Drupal Services Architecture
Built as a proper Drupal service with dependency injection, config management, and Twig templates. No workarounds needed.
📡
Servio Protocol
Built on the Servio Protocol standard for tool-use AI agents. Provides a manifest endpoint, tool discovery, and structured JSON responses that AI platforms understand natively.
🤖
Pre-configured AI Clients
Ships with built-in OAuth client configurations for ChatGPT, Claude, Copilot, Gemini, Grok, DeepSeek, and Perplexity. Connect in minutes, not hours.
📦
Built for Drupal 9/10/11
Native Drupal module with proper .info.yml, routing.yml, services.yml, and config schema. Installs via drush or the admin panel.
Capabilities
What it does.
OAuth 2.0 + PKCE
Secure by design
Industry-standard OAuth flow with PKCE. Every AI agent authenticates with proof-of-key exchange — no secrets stored client-side.
Permission-aware
Native permissions
Tool calls respect the platform's native permission model. Users only see content they're allowed to access.
REST + JSON
Servio Protocol
Manifest endpoint, tool discovery, structured JSON responses. Compatible with the Model Context Protocol standard.
Tools included
Production ready
Structured tool calls ready for production use on your platform.
Get started
Up and running.
1
Install the Module
Install via drush (drush en ai_connect) or through the Drupal admin panel.
2
Open AI Connect Settings
Go to Configuration → AI Connect in your Drupal admin. You'll find your manifest URL and all pre-configured OAuth client definitions ready to copy.
3
Add the Manifest URL to Your Agent
Paste the manifest URL from the settings page into Claude Desktop, ChatGPT, or any MCP-compatible AI agent.
4
Approve Access & Start Chatting
When the AI agent requests access, your users approve via a secure OAuth screen — then the AI can search nodes, read content, and query comments naturally.
Compatible clients
Works with every AI client.
Pre-configured OAuth integrations for every major AI agent — including our own hosted agent at goldnat.ai. Connect in minutes, not hours.
Tools
Available tool calls.
50 tools exposed via the Servio protocol. AI agents call these by name with structured arguments.
drupal
-
drupal.downloadFileGet a direct download URL or binary content for a file by file ID. Returns authenticated URL and file metadata. -
drupal.executeViewRun a view and return its actual results — the rendered rows, not just its configuration. -
drupal.getContentTypesList all available content types (node bundles) with their machine names, labels, descriptions, and field configurations. -
drupal.getImageStylesGet all configured image styles (responsive derivatives) for a specific media image, including thumbnail, medium, large, and custom styles. Returns URLs for each style with dimensions. Essential for responsive image delivery. -
drupal.getMediaGet media entity details by media ID, including media type (image/video/document), source file, alt text, and usage references. -
drupal.getMediaDownloadUrlGet a direct download URL for a media file. Returns both public and private file URLs with appropriate access tokens for private files. Use this to retrieve the actual binary content of images, videos, documents, and audio files. -
drupal.getMediaFieldValuesGet all custom field values for a media item, including taxonomy terms, entity references, text fields, and computed fields. Returns structured data with field machine names, labels, and formatted values. -
drupal.getMediaUsageGet a complete list of all places where a specific media item is used across the site, including node IDs, entity types, field names, and URLs. Essential for understanding impact before deletion or modification. -
drupal.getMenuItemsGet menu structure and items for a specific menu by menu ID, including titles, links, parent-child relationships, and weights. -
drupal.getNodeAttachmentsList all file and media attachments for a node, including file IDs, names, types, sizes, and URLs. -
drupal.getNodeRevisionContentGet the full content of a specific node revision by revision ID, including all fields, body, and metadata as they existed in that version. -
drupal.getNodeRevisionsList all revisions for a specific node, including revision IDs, creation dates, authors, and revision log messages. -
drupal.getTaxonomyTermGet a single taxonomy term by ID, including name, description, vocabulary, parent terms, and hierarchy depth. -
drupal.getUserGet user profile by user ID, including username, email, roles, creation date, last login, status, and custom profile fields. -
drupal.getViewExecute a Drupal View and get results by view ID and display ID, with optional filters and arguments. Returns structured data as configured in the view. -
drupal.getVocabulariesList all taxonomy vocabularies (content categorization systems), including vocabulary IDs, names, descriptions, and term counts. -
drupal.listMediaLibraryList all media items in the media library with pagination, sorted by upload date, name, or usage count. Supports filtering by media type (image/video/document/audio) and collection/folder. Returns thumbnail URLs and basic metadata for each item. -
drupal.listMediaTypesList all configured media types (bundles) on the site with their field definitions, allowed file extensions, upload size limits, and configured image styles or video transcoders. Useful for understanding what types of media can be uploaded. -
drupal.listUnusedMediaList all media items that are not currently referenced by any content entity. Useful for cleanup operations and identifying orphaned files that can be safely deleted. Returns media IDs, names, file sizes, and upload dates. -
drupal.listViewsList the views configured on the site, with their displays and status. -
drupal.searchMediaSearch media library by name, type, MIME type, or upload date. Returns media IDs, names, types, thumbnails, and file references. -
drupal.searchMediaByTagSearch media items by taxonomy tags or categories. Supports multiple tags with AND/OR logic. Returns matching media with thumbnails and usage statistics. Essential for organizing large media libraries. -
drupal.searchTaxonomyTermsSearch taxonomy terms by name, vocabulary, parent term, or hierarchy level. Returns term IDs, names, descriptions, and relationships. -
drupal.searchUsersSearch users by username, email, role, status (active/blocked), or registration date. Returns user IDs, names, emails, and roles.
CoreModule
-
drupal.createCommentPost a new comment on a content node (auto-detects the comment field per content type) -
drupal.createNodeCreate a new content node (article, page, or any content type) -
drupal.deleteCommentPermanently delete a comment -
drupal.deleteNodePermanently delete a content node -
drupal.getCommentReturns a single comment by ID. -
drupal.getCurrentUserReturns the currently authenticated user. -
drupal.getNodeReturns a single content node by ID. -
drupal.publishNodePublish or unpublish a content node -
drupal.searchCommentsSearches comments by keywords. -
drupal.searchNodesSearches content nodes by keywords and type. -
drupal.updateCommentUpdate the body of an existing comment -
drupal.updateNodeUpdate an existing content node's title or body
FileModule
-
drupal.uploadFileUpload a new file from base64-encoded content (max 10 MB), for use as a media source
MediaModule
-
drupal.createMediaCreate a media library item from an uploaded file or a remote source URL -
drupal.deleteMediaDelete a media item (the underlying file is left in place) -
drupal.updateMediaUpdate a media item's name or source
StructureModule
-
drupal.createMenuLinkAdd a new link to a menu (internal path or external URL); requires administer menu permission -
drupal.deleteMenuLinkPermanently delete a custom menu link -
drupal.updateMenuLinkUpdate an existing custom menu link
TaxonomyModule
-
drupal.createTaxonomyTermCreate a new taxonomy term in a vocabulary, optionally hierarchical -
drupal.deleteTaxonomyTermPermanently delete a taxonomy term -
drupal.updateTaxonomyTermUpdate an existing taxonomy term's name or description
UserModule
-
drupal.blockUserBlock a user account, preventing login (the primary uid=1 administrator cannot be blocked) -
drupal.createUserCreate a new user account, auto-generating a password if none is given -
drupal.unblockUserUnblock a previously blocked user account -
drupal.updateUserUpdate a user account's email, password, or role assignments
Pricing
Pick a plan.
Free
Free, fully functional
- ✓ getNode
- ✓ searchNodes
- ✓ getCurrentUser
- ✓ getTaxonomyTerms
- ✓ getUser
Drupal platform
More plugins for Drupal
Questions about Goldnat for Drupal?