Dandelion is a fair source project. View the code on Github

Commits on Feb 26, 2026
0110f50

✨ (lib/mcp.rb): add separate search_fields and get_fields configs for Event model

The change allows different fields to be returned for search results versus individual record retrieval. Search results now include additional fields like url, start_time, end_time, and location while get operations continue to use public_data.

54ae806

✨ (lib/mcp.rb): add configurable limit parameter to search functionality with validation

Add a limit parameter to perform_search method that clamps values between 1 and 100, defaulting to 20. Expose this parameter in the search tool's input schema to allow users to control the number of results returned. Also fix grammar in instructions by removing unnecessary Oxford comma.

9001cfe

♻️ (lib/mcp.rb): remove location, bio, and intro fields from search index to reduce exposed data

345c298

📝 (mcp.md): simplify documentation structure and clarify lookup capabilities

145a1d1

🐛 (lib/mcp.rb): add missing tool_name to MCP tool configuration

ffb2fd4

♻️ Convert TOOLS, SERVER, and HTTP_TRANSPORT constants to lazy-loaded methods

Improve startup time by deferring initialization of MCP tools and server until they are actually needed instead of loading them at module load time.

f19794b

🐛 (docs): fix 'MCP' slug display name to show as 'MCP' instead of 'Mcp'
♻️ (mcp): refactor CONFIG to use string keys instead of class constants for better compatibility

8f67dfd

✨ (mcp): add get upcoming organisation events tool
🐛 (mcp): fix is_error parameter to error in response object
📝 (mcp.md): document new MCP capability

d726a33

✨ (mcp.rb, event_serialization.rb): add url field to Account, Organisation, Gathering and Event models

177a500

♻️ Refactor search scope logic into model classes

Move search scope definitions from config/helper files to dedicated search_scope class methods on each model (Account, Event, Gathering, Organisation). This eliminates duplication and centralizes data retrieval logic in the models. Also adds with_public_includes for Event scope in MCP.

33ec630

✨ (app): add Model Context Protocol (MCP) support for AI assistants to query Dandelion data

This commit introduces MCP integration allowing AI assistants to search and look up events, organisations, gatherings, and accounts through a standardized protocol. The implementation includes:

  • New MCP gem dependency and CORS configuration for /mcp endpoint
  • Dynamic tool generation for search and get operations across Event, Account, Organisation, and Gathering models
  • HTTP transport setup to handle MCP requests at /mcp route
  • Documentation for users to configure their AI assistants with Dandelion MCP server
089ad89

🐛 Fix password being regenerated on existing account updates

56f8e44

🔒️ (accounts): remove password from mass assignment and set it explicitly to prevent security vulnerability

5206078

📝 (zapier.md): enhance Zapier integration docs with logo image and improved structure

Commits on Feb 25, 2026
db9e14a

🔨 (database.rake): add rake task to list all TTL indexes across MongoDB collections

This task helps developers inspect and monitor TTL indexes in the database, displaying collection name, index name, key field, and expiration time in a readable format.

dff2cf4

🐛 Fix potential accidental dropping of TTL indexes in database rake task

ce90c66

✨ (database.rake): add rake task to check and repair cohosts_ids_cache sync issues

Added new rake task db:cohosts_cache_sync that verifies event cohost caches are in sync with actual cohostship data. Supports dry-run mode (default) and repair mode (FIX=1). Processes events in batches of 1000 for efficiency.

039e0ac

🐛 Fix organisation public cache not updating when hiding membership

10a167c

🐛 Fix potential NoMethodError when payment_method.card is nil

377332b

🐛 Fix Stripe payment method handling to process card payments correctly

The conditional check was preventing valid payment methods from being processed. The code now directly accesses the card property since all payment methods in this flow contain card data.