# Riverland Faeries

Riverland Faeries is an event and gathering management platform for the Radical Faeries community in the Netherlands. This book covers browsing public events, managing gatherings and registrations, coordinating carpooling and logistics, using kanban boards and wiki pages for planning, and integrating with Claude Desktop via the Gathering Organiser MCP connector.

# Getting Started

Your first steps with Riverland Faeries; signing in, browsing events, and finding your way around the admin panel.

# Getting Started with Riverland Faeries

Riverland Faeries is a community platform for the Radical Faeries in the Netherlands. It handles public event listings, multi-day gathering planning, registrations, carpooling, wiki pages, and more.

### What you'll need

- A Junovy Account (sign in at https://auth.junovy.com)
- An **admin**, **editor**, or **moderator** role to access the admin panel (contact an existing admin if you need access)
- A modern web browser (Chrome, Firefox, Safari, or Edge)

### Signing in

1. Go to https://riverland.faeries.eu
2. Click the **profile icon** in the top-right corner
3. Click **Sign in with Junovy**
4. Enter your Junovy Account credentials (and your 2FA code if you have two-factor authentication enabled)

You'll be redirected back to Riverland Faeries, now signed in. If you have an admin role, you'll see a link to the admin panel.

### What the platform offers

- **Public event listings** that anyone can browse without signing in; with list and calendar views, filtering, and event details
- **Gathering management** for multi-day residential events; including registration forms, carpooling coordination, kanban planning boards, wiki pages, and checklists
- **MCP connector** for managing gatherings through Claude Desktop or Claude.ai using natural language

### Next steps

- Learn how to browse events on the public site
- Explore the admin panel and its sections

# Navigating the Public Site

The public site at https://riverland.faeries.eu is open to everyone; no sign-in required. It's where community members browse upcoming events and find out what's happening.

### The home page

The home page features a hero section with a call-to-action button labelled **View Events**. The top navigation bar includes links to **Home**, **Events**, **Submit Event**, **About Us**, and **Contact Us**.

### Browsing events

Navigate to **Events** in the top menu (or go directly to https://riverland.faeries.eu/events). You'll see a list of upcoming events, each showing:

- Event photo
- Title and date
- Short description
- Venue and organiser names
- Category tag (e.g. "Gathering", "Workshop")

### List vs calendar view

Toggle between **List** and **Calendar** views using the buttons at the top right of the events page.

- **List view** (default): event cards in chronological order
- **Calendar view**: a monthly calendar with events displayed on their dates

### Filtering events

Click the **Filters** button to narrow results by date range or category. Click **Reset** to clear all filters and return to the default view.

### Viewing event details

Click **View Details** on any event card to see the full event page, which includes:

- Full event photo
- Complete date, time, and duration
- Venue name, address, and description
- Organiser information
- Full event description
- Links to community chat groups or external resources

### Submitting an event

Community members can suggest events via the **Submit Event** page. Submissions are reviewed by admins before appearing publicly.

# Accessing the Admin Panel

The admin panel is where organisers manage events, gatherings, venues, and all the planning tools. You need to be signed in with an appropriate role to access it.

### How to get there

1. Sign in to https://riverland.faeries.eu
2. Click the **profile icon** in the top-right corner
3. Select **Admin** from the dropdown, or navigate directly to https://riverland.faeries.eu/admin

If you don't see the Admin option, your account doesn't have an admin role. Ask an existing admin to grant you access.

### Roles and permissions

| Role | What you can do |
|------|----------------|
| **admin** | Full access: create, edit, delete all content and manage users |
| **editor** | Create and edit events, gatherings, and all planning content |
| **moderator** | Approve event submissions and moderate content |
| **user** | Basic admin panel access (view only) |

### Sidebar navigation

The admin panel sidebar is organised into two sections:

**Content**
- **Events** — Public event listings
- **Gatherings** — Multi-day gathering planning and management
- **Venues** — Location management
- **Organisers** — Organiser profiles

**Taxonomy**
- **Categories** — Event and gathering categories
- **Tags** — Tags for filtering and organisation

**Settings** at the bottom provides access to site-wide configuration.

### Quick actions

The green **+ Create New** button at the top of the sidebar lets you quickly create a new event or gathering from anywhere in the admin panel.

### Switching back to the public site

Click **Public Site** in the top-right corner to return to the public-facing website.

# Managing Events

Creating and managing public event listings, venues, organisers, and taxonomy.

# Creating an Event

Events are public listings that appear on the Riverland Faeries website. They can be anything from a one-off workshop to a weekend gathering.

### Before you start

- You'll need at least one **venue** and one **organiser** set up (see Managing Venues and Organisers)
- Have the event details ready: title, dates, description, and an image

### Steps

1. Navigate to **Admin > Events**
2. Click **+ New Event** in the top-right corner
3. Fill in the event details:
   - **Title**: the event name as it will appear publicly
   - **Type**: select the event type (e.g. Gathering, Workshop, Social)
   - **Date and time**: start date, end date, and times
   - **Venue**: select from your existing venues
   - **Organiser**: select one or more organisers
   - **Description**: a full description (supports rich text)
   - **Photo**: upload a cover image for the event card
   - **Category and tags**: choose a category and add relevant tags
   - **Links**: add links to community chat groups, ticket pages, or other resources
4. Click **Save**

The event will appear in the admin event list. It becomes visible on the public site once published.

### Tips

- Use a high-quality landscape image for the event photo; it appears prominently on event cards and detail pages
- Keep the description concise but informative; include practical details like what to bring, accessibility info, and how to get there
- You can create the event as a draft first and publish it later

# Editing and Deleting Events

You can update event details at any time, or remove events that are no longer relevant.

### Editing an event

1. Navigate to **Admin > Events**
2. Find the event in the list
3. Click the **pencil icon** (✏️) in the Actions column
4. Update any fields you need to change
5. Click **Save**

Changes are reflected on the public site immediately.

### Deleting an event

1. Navigate to **Admin > Events**
2. Find the event in the list
3. Click the **bin icon** (🗑️) in the Actions column
4. Confirm the deletion when prompted

⚠️ Deleting an event removes it permanently. If you're unsure, consider editing the event to remove it from public view rather than deleting it entirely.

### Tips

- If an event has been cancelled, consider updating its title to include "(Cancelled)" and adding a note to the description rather than deleting it; this way people who bookmarked the link still get useful information
- The events list shows the event title, date, venue, and organiser at a glance, making it easy to find the one you need

# Managing Venues and Organisers

Venues and organisers are shared across events and gatherings. Set them up once and reuse them wherever needed.

### Creating a venue

1. Navigate to **Admin > Venues**
2. Click **+ New Venue**
3. Fill in the venue details:
   - **Name**: the venue or location name
   - **Address**: full address (used for map display)
   - **Description**: useful details like parking, accessibility, or directions
   - **Country**: select the country
4. Click **Save**

### Editing a venue

1. Navigate to **Admin > Venues**
2. Click the **pencil icon** next to the venue
3. Update the details and click **Save**

### Creating an organiser

1. Navigate to **Admin > Organisers**
2. Click **+ New Organiser**
3. Fill in:
   - **Name**: the organiser's name (this can be a faerie name or group name)
   - **Description**: a short bio or description
   - **Photo**: optional profile photo
4. Click **Save**

### Editing an organiser

1. Navigate to **Admin > Organisers**
2. Click the **pencil icon** next to the organiser
3. Update the details and click **Save**

### Tips

- Venues and organisers appear on public event pages, so keep the information accurate and friendly
- You can assign multiple organisers to a single event
- If a venue is used by many events, updating the venue details will update the display across all linked events

# Categories and Tags

Categories and tags help visitors find events that interest them. Categories provide broad groupings; tags offer more specific labels.

### Managing categories

1. Navigate to **Admin > Categories** (under Taxonomy in the sidebar)
2. You'll see the existing categories listed
3. To add a new category, click **+ New Category**, enter a name, and click **Save**
4. To edit or remove a category, use the action icons in the list

Categories are used as the primary filter on the public events page. Common categories include Gathering, Workshop, Social, Performance, and Heart Circle.

### Managing tags

1. Navigate to **Admin > Tags** (under Taxonomy in the sidebar)
2. To add a new tag, click **+ New Tag**, enter a name, and click **Save**
3. To edit or remove a tag, use the action icons in the list

Tags appear as chips on event cards and can be used for more granular filtering. Examples: "outdoor", "family-friendly", "potluck", "overnight".

### Tips

- Keep the number of categories small (5-10) for a clean filtering experience
- Tags can be more numerous and specific; they're useful for cross-cutting themes
- Both categories and tags are shared across events and gatherings

# Gathering Planning

The full gathering management workflow from draft to post-event.

# Creating a Gathering

Gatherings are multi-day residential events; the heart of the Radical Faeries community. They're more complex than simple events and come with a full suite of planning tools.

### Before you start

- Have the basic details ready: name, type, dates, and expected capacity
- Optionally, set up a venue first (see Managing Venues and Organisers)

### Steps

1. Navigate to **Admin > Gatherings**
2. Click **+ New Gathering** in the top-right corner
3. Fill in the gathering details:
   - **Name**: the gathering title (e.g. "The Rekindling (Beltane 2026)")
   - **Type**: select the gathering type:
     - **SEASONAL** for gatherings tied to the wheel of the year
     - **REGIONAL** for location-based gatherings
     - **HEART_CIRCLE** for heart circle events
     - **WORKSHOP** for workshop-focused events
   - **Start date** and **End date**: the full duration
   - **Visibility**: PUBLIC or PRIVATE
   - **Optimal capacity** and **Max capacity**: expected and maximum participant numbers
   - **Venue**: select a venue (optional; can be added later)
   - **Description**: a description of the gathering (supports markdown)
4. Click **Save**

The gathering is created in **Draft** status. You can start setting up forms, kanban boards, checklists, and wiki pages before publishing it.

### What happens next

Once saved, you'll land on the gathering's **Overview** tab. From here you can:

- Set up registration forms
- Create planning boards
- Add wiki pages
- Manage the organiser team
- Change the gathering's status when you're ready to go live

### Tips

- Start in Draft status and work through the planning tools before publishing
- The optimal/max capacity split is useful for gatherings that can stretch a bit; the overview dashboard shows both numbers
- You can link a gathering to a public event listing using the **Manage Event Listing** quick action

# Gathering Overview Dashboard

The Overview tab is your gathering's home base. It shows key stats, quick actions, basic information, and the organiser team at a glance.

### Getting there

1. Navigate to **Admin > Gatherings**
2. Click the **eye icon** (👁️) next to a gathering, or click the gathering name

### Stats cards

The top of the overview shows four summary cards:

- **Days until gathering**: a countdown to the start date
- **Capacity (optimal / max)**: current registrations vs capacity (e.g. "35 / 45")
- **Forms created**: number of forms set up for this gathering
- **Wiki status**: whether wiki pages have been created

### Quick Actions

Below the stats, you'll find shortcut buttons for common tasks:

- **Change Status**: move the gathering between Draft, Planning, Published, and Archived
- **Manage Event Listing**: create or edit the linked public event
- **Manage Registration**: jump to registration form setup
- **Create Carpooling**: set up a carpool coordination form
- **Create Pickup**: set up pickup run coordination
- **Create Wiki**: start the gathering wiki
- **Survey**: create a post-gathering survey

Buttons show a ✅ tick when that feature has already been set up, or ○ when it hasn't.

### Basic Information

The collapsible **Basic Information** section shows:

- Gathering type and visibility
- Start and end dates
- Venue details
- Description

### Organiser Team

The right-hand panel lists the current organiser team with their roles:

- **ORGANIZER**: primary organiser(s)
- **CO ORGANIZER**: co-organisers helping with planning
- **ADVISOR**: advisors providing guidance

Click **+ Add** to invite additional organisers.

### Navigation tabs

The tab bar at the top gives you access to all gathering features: **Overview**, **Checklists**, **Kanban**, **Registrations**, **Wiki**, **Forms**, **Carpooling**, **Pickups**, and **Survey**.

# Gathering Statuses and Lifecycle

Gatherings move through a series of statuses as they progress from initial planning to completion. Each status signals a different phase of the planning process.

### Status overview

| Status | Meaning | Who can see it |
|--------|---------|---------------|
| **Draft** | Initial setup; the gathering is being configured | Admins and editors only |
| **Planning** | Active planning phase; forms and tools are being set up | Admins and editors only |
| **Published** | The gathering is live and accepting registrations | Everyone (public) |
| **Archived** | The gathering is complete or cancelled | Admins only |

### Changing status

1. Open the gathering's **Overview** tab
2. Click the **Change Status** quick action button
3. Select the new status from the dropdown
4. Confirm the change

### Typical lifecycle

1. **Create in Draft**: set up the basic details, venue, and organiser team
2. **Move to Planning**: start building out forms, checklists, kanban boards, and wiki pages
3. **Move to Published**: the gathering appears publicly; registration opens (if a registration form is set up)
4. **Move to Archived**: after the gathering is complete; all data is preserved for reference

### Tips

- You can move backwards (e.g. Published back to Planning) if you need to make changes before going live again
- Archiving doesn't delete anything; it simply hides the gathering from public view and moves it to the archived list
- Use the **Show Archived** button on the Gatherings list page to view past gatherings
- The gathering list page shows status as a coloured badge: orange for Draft, blue for Planning, green for Published

# Managing the Organiser Team

Each gathering has an organiser team. Team members get access to the gathering's planning tools and can be assigned tasks on kanban boards and checklists.

### Roles

| Role | Description |
|------|------------|
| **Organizer** | Primary organiser with full access to all gathering features |
| **Co Organizer** | Helps with planning; can edit most gathering content |
| **Advisor** | Provides guidance; lighter-touch access to planning tools |

### Adding a team member

1. Open the gathering's **Overview** tab
2. In the **Organizer Team** panel on the right, click **+ Add**
3. Search for the user by name
4. Select their role (Organizer, Co Organizer, or Advisor)
5. Click **Add**

The user must have an existing Junovy Account. Their account is synced from Keycloak when they first sign in.

### Removing a team member

1. Open the gathering's **Overview** tab
2. In the **Organizer Team** panel, click the **✕** next to the person's name
3. Confirm the removal

### Tips

- Each gathering needs at least one Organizer
- Team members appear with their faerie names and role badges
- You can assign kanban cards and checklist items to any member of the organiser team
- The organiser team is specific to each gathering; being an organiser on one gathering doesn't automatically grant access to others

# Registrations, Forms & Logistics

Handling participant sign-ups, carpooling coordination, and pickup runs.

# Registration Forms

Registration forms let participants sign up for a gathering. You build the form using a flexible field editor, and responses are collected and managed from the **Registrations** tab.

### How registration forms work

Each gathering can have one registration form. The form uses a JSONB schema, which means you can define whichever fields you need; there's no fixed template. Common fields include name, faerie name, dietary requirements, accessibility needs, arrival date, and sliding-scale payment preference.

When a participant submits the form, their response is saved as a registration with a **Pending** status. You can then review and approve, waitlist, or decline registrations from the admin panel.

### Creating a registration form

1. Open the gathering's **Overview** tab
2. Click the **Manage Registration** quick action button
3. This takes you to the **Forms** tab, where you can create a new form of type **REGISTRATION**
4. Give the form a title and URL slug (this creates the public link participants will use)
5. Build your form fields using the schema editor
6. Set an **Open date** and **Close date** to control when the form accepts submissions
7. Optionally set a **Maximum submissions** limit
8. Click **Save**

### Form settings

| Setting | Description |
|---------|-------------|
| **Title** | The name shown to participants at the top of the form |
| **URL slug** | Creates a public URL for the form (e.g. `riverland.faeries.eu/forms/beltane-2026-registration`) |
| **Open date** | When the form starts accepting submissions |
| **Close date** | When the form stops accepting submissions |
| **Max submissions** | Optional cap on the number of responses |

### Tips

- The URL slug must be unique across all forms in the system
- You can close registrations early by changing the close date
- Form responses include the submitter's IP address for audit purposes (GDPR compliance)
- If a participant has a Junovy Account and is signed in, their submission is linked to their user profile automatically
- Anonymous submissions are also supported for gatherings that allow them

# Managing Registrations

Once participants submit a registration form, their responses appear in the **Registrations** tab. From here you can review submissions, update statuses, and track capacity.

### Registration statuses

| Status | Meaning |
|--------|---------|
| **Pending** | The participant has submitted; awaiting review |
| **Approved** | The participant is confirmed for the gathering |
| **Waitlisted** | The gathering is at capacity; the participant is in the queue |
| **Declined** | The registration has been declined |
| **Cancelled** | The participant (or an organiser) has cancelled the registration |

### Reviewing registrations

1. Open the gathering and click the **Registrations** tab
2. You'll see a list of all submissions with their current status
3. Click a registration to view the full form response, including all fields the participant filled in
4. Use the status dropdown to approve, waitlist, decline, or cancel the registration
5. Optionally add internal **Notes** when changing a status (these are only visible to organisers)

### Tracking capacity

The gathering's **Overview** tab shows capacity usage in the stats cards at the top. The numbers reflect how many approved registrations there are against the optimal and maximum capacity you set when creating the gathering.

If you've set a maximum capacity, keep an eye on the count when approving new registrations. Waitlisting is useful when you're close to capacity but expect some cancellations.

### Exporting registrations

You can export registration data in several formats for offline use or sharing with co-organisers:

- **CSV**: spreadsheet-friendly format
- **JSON**: structured data for technical use
- **Markdown**: formatted table for pasting into documents or wiki pages
- **Dietary summary**: a breakdown of dietary requirements across all approved participants

Exports can be filtered by status, so you can pull just the approved registrations if needed.

### Tips

- Review registrations regularly during the open period; participants appreciate a quick response
- Use the **Notes** field to record why a registration was declined or waitlisted; this helps if questions come up later
- The dietary summary export is particularly useful for kitchen planning
- Registration data is soft-deleted rather than permanently removed, in line with GDPR requirements

# Carpooling Coordination

The carpooling feature helps organisers match drivers with passengers for travel to and from the gathering venue. Participants indicate their travel plans via a carpool form, and organisers can then create and manage matches.

### Setting up carpooling

1. Open the gathering's **Overview** tab
2. Click the **Create Carpooling** quick action button
3. This creates a **CARPOOL** type form linked to the gathering
4. Participants fill in details like their departure city, travel dates, whether they're driving or need a ride, and how many seats they have (if driving)

Once submissions come in, you can view and manage them from the **Carpooling** tab.

### Managing carpool matches

Carpool matches go through a simple workflow:

| Status | Meaning |
|--------|---------|
| **Suggested** | A potential match has been identified |
| **Introduction sent** | The driver and passenger have been introduced to each other |
| **Confirmed** | Both parties have confirmed the arrangement |
| **Cancelled** | The match has been cancelled |

To update a match:

1. Open the gathering and click the **Carpooling** tab
2. Review the list of matches with their current statuses
3. Click a match to update its status or add notes

### Carpool statistics

The carpooling stats give you an overview of:

- Total number of matches
- How many are confirmed, pending, or cancelled
- How many passengers are still unmatched

This helps you spot where extra coordination is needed; for example, if several people from the same city still need rides.

### Tips

- Start matching early so participants have time to coordinate details
- The introduction step is useful; rather than sharing contact details immediately, you can send an introduction message first and let both parties confirm
- Check for unmatched passengers as the gathering approaches; you may need to arrange alternative transport or ask existing drivers if they have space

# Pickup Runs

Pickup runs coordinate transport from nearby train stations, bus stops, or meeting points to the gathering venue. This is common for rural venues where public transport doesn't reach the door.

### Setting up pickup coordination

1. Open the gathering's **Overview** tab
2. Click the **Create Pickup** quick action button
3. This creates a **PICKUP** type form linked to the gathering
4. Participants fill in their arrival details: date, time, station or meeting point, and number of people

Submissions appear in the **Pickups** tab, where you can organise them into runs.

### How pickup runs work

A pickup run represents a single trip by a driver to collect one or more participants. Each run includes:

- **Driver**: who's doing the pickup
- **Time**: when the run departs
- **Location**: the pickup point (e.g. "Arnhem Centraal station")
- **Passengers**: who's being collected on this run

### Organising runs

1. Open the gathering and click the **Pickups** tab
2. Review the incoming pickup requests from participants
3. Group requests by time and location to plan efficient runs
4. Assign a driver and passengers to each run

### Tips

- Coordinate pickup runs with the carpool matches; sometimes a driver heading to the venue can collect someone from a nearby station along the way
- Share the pickup schedule with drivers in advance so they know when and where to be
- For gatherings with many arrivals, consider creating a shared wiki page with a pickup timetable that participants can check
- Account for luggage and supplies when planning how many passengers per run; gathering participants often bring food contributions and camping gear

# Planning Tools

Kanban boards, checklists, wiki pages, and surveys for organising your gathering.

# Kanban Boards

Kanban boards give your organiser team a visual way to track tasks. Cards move through columns (e.g. "To Do", "In Progress", "Done") so everyone can see what needs doing and what's already been handled.

### Board types

Each gathering can have multiple kanban boards, each with a type that reflects when the tasks apply:

| Type | Purpose |
|------|---------|
| **Planning** | Pre-event tasks (venue booking, shopping lists, form setup) |
| **During** | Tasks to manage during the gathering itself (kitchen rota, ritual prep) |
| **Post** | Post-event wrap-up (cleaning, thank-you messages, financial summary) |

### Creating a board

1. Open the gathering and click the **Kanban** tab
2. Click **+ New Board**
3. Give the board a name and select a type
4. The board is created with default columns; you can rename or add columns as needed

### Working with columns

Columns represent the stages a task moves through. A typical setup might be:

- **To Do**: tasks that need doing
- **In Progress**: tasks someone is actively working on
- **Done**: completed tasks

You can add, rename, reorder, or remove columns to fit your workflow.

### Working with cards

Cards represent individual tasks. Each card supports:

| Feature | Description |
|---------|-------------|
| **Title** | A short description of the task |
| **Priority** | LOW, MEDIUM, HIGH, or URGENT |
| **Due date** | When the task needs to be completed by |
| **Category** | A label for grouping (e.g. kitchen, accessibility, ritual, logistics) |
| **Assignee** | A member of the organiser team responsible for the task |
| **Comments** | A threaded discussion on the card for collaboration |

To create a card, click **+ Add Card** at the bottom of any column. Drag cards between columns as their status changes.

### Tips

- Keep card titles short and action-oriented (e.g. "Book venue" rather than "We need to book the venue")
- Use priorities to highlight what's urgent; the URGENT level is useful for last-minute tasks during a gathering
- Assign cards to specific team members so it's clear who's responsible
- The comments feature is handy for quick updates without needing a separate chat thread
- Consider creating separate boards for different phases rather than one massive board

# Checklists

Checklists provide a straightforward way to track tasks that need completing. They're simpler than kanban boards; just a list of items that can be ticked off as they're done.

### Creating a checklist

1. Open the gathering and click the **Checklists** tab
2. Click **+ New Checklist**
3. Give the checklist a name (e.g. "Kitchen prep", "Venue setup", "Post-gathering cleanup")
4. Add items to the checklist

### Checklist items

Each item in a checklist can have:

| Feature | Description |
|---------|-------------|
| **Text** | The task description |
| **Due date** | When it needs to be done by |
| **Assignee** | A member of the organiser team |
| **Notes** | Additional context or details |
| **Completed** | Whether the item has been ticked off |

When someone completes an item, the system records who completed it and when.

### Planning phases

Checklists support planning phases that align with the gathering timeline. The available phases are:

- **Three months before**
- **Two months before**
- **One month before**
- **One week before**
- **During** the gathering
- **Post** gathering

If you don't specify a phase, the system auto-detects the current phase based on the gathering dates. This is useful for filtering; you can quickly see just the items that are relevant right now.

### Tracking progress

The checklist progress view shows:

- Overall completion rate across all checklists
- Per-phase completion rates with progress bars
- A list of overdue items that need attention

This gives you a quick health check on how planning is going without needing to open each checklist individually.

### Tips

- Use checklists for recurring tasks that are the same for every gathering (e.g. "order firewood", "set up first aid kit")
- The template support means you can create a standard checklist and reuse it across gatherings
- Combine checklists with kanban boards: use checklists for simple "done/not done" tracking and kanban for more complex tasks that need discussion and assignment
- Check the overdue items list regularly as the gathering approaches

# Wiki Pages

Wiki pages let you create and share information about a gathering. Think of them as a mini knowledge base; you can write pages about the venue, house rules, kitchen guidelines, ritual plans, or anything else participants and organisers need to know.

### Creating a wiki

1. Open the gathering's **Overview** tab
2. Click the **Create Wiki** quick action button
3. This opens the **Wiki** tab, where you can start adding pages

### Adding pages

1. On the **Wiki** tab, click **+ New Page**
2. Give the page a title and URL slug
3. Write the content using markdown
4. Set the display order (lower numbers appear first in the navigation)
5. Click **Save**

### Publishing pages

Wiki pages start as drafts. To make a page visible to participants:

1. Open the page
2. Toggle the **Published** switch, or click **Publish**
3. The page is now publicly visible to anyone viewing the gathering

You can unpublish a page at any time to hide it while you make changes.

### Page features

| Feature | Description |
|---------|-------------|
| **Title** | The page heading |
| **Slug** | URL-friendly identifier, unique within the gathering |
| **Content** | Markdown-formatted text |
| **Order** | Display order in the page list (lower = higher in the list) |
| **Published** | Whether the page is visible to participants |
| **Version** | Auto-incrementing version number for tracking changes |

### Common wiki pages

Here are some pages that gathering organisers typically create:

- **Welcome and arrival info**: directions, what to bring, house rules
- **Kitchen and food**: meal schedule, kitchen rota, allergy information
- **Ritual and workshops**: schedule of workshops, ritual guidance
- **Venue guide**: maps, facilities, fire safety, quiet hours
- **Practical info**: WiFi details, nearest shops, emergency contacts

### Tips

- Use markdown formatting to keep pages readable; headings, lists, and bold text all work
- The version tracking means you can see how many times a page has been updated, which is useful for pages that change frequently (like the workshop schedule)
- Consider creating a "What to bring" page early in the planning process; it's one of the most commonly asked questions
- Wiki pages are specific to each gathering, so you can tailor the content to each event

# Surveys

Surveys let you collect feedback from participants after a gathering. They use the same form system as registration and carpool forms, but with a **SURVEY** type.

### Creating a survey

1. Open the gathering's **Overview** tab
2. Click the **Survey** quick action button
3. This creates a new **SURVEY** type form linked to the gathering
4. Build your survey fields using the schema editor
5. Set a URL slug so you can share the link with participants
6. Set open and close dates to control when the survey is available
7. Click **Save**

### Common survey questions

Post-gathering surveys typically cover:

- Overall experience and satisfaction
- What worked well and what could be improved
- Feedback on specific aspects (food, accommodation, workshops, rituals)
- Suggestions for future gatherings
- Whether the participant would come again

### Viewing responses

Survey responses appear in the **Survey** tab (or via the **Forms** tab). You can:

- View individual responses
- Export all responses as CSV, JSON, or markdown for analysis
- Filter by submission date

### Tips

- Keep surveys reasonably short; participants are more likely to complete them if they don't take too long
- Send the survey link within a week of the gathering ending, while memories are fresh
- Share a summary of the feedback with the community; it shows that organisers value input and helps build trust
- Anonymous submissions are supported if you want participants to feel comfortable giving honest feedback
- You can set a maximum number of submissions if needed, though for surveys this is rarely necessary

# MCP Server & Claude Desktop Integration

Using the Gathering Organiser MCP connector with Claude Desktop or Claude.ai to manage gatherings conversationally.

# What Is the MCP Connector?

The Gathering Organiser MCP Server lets you manage gatherings through conversational AI. Instead of clicking through the admin panel, you can ask Claude to check registrations, update checklists, draft communications, and more; all through natural language.

### How it works

MCP stands for Model Context Protocol. It's an open standard that lets AI assistants (like Claude) interact with external tools and services. The Gathering Organiser MCP Server wraps the Riverland Faeries REST API into 25 tools that Claude can call on your behalf.

The flow looks like this:

1. You ask Claude something like "How many people have registered for Beltane?"
2. Claude calls the `registration_stats` tool via the MCP server
3. The MCP server queries the Riverland Faeries API
4. The results come back to Claude, who presents them in a readable format

### What you can do with it

The MCP server covers seven areas of gathering management:

- **Gathering management**: create, update, and review gatherings
- **Registrations**: list registrations, update statuses, export data, check stats
- **Budget and finance**: generate budget calculations and bilingual financial reports
- **Carpooling and logistics**: view carpool matches, update match statuses, check pickup runs
- **Communications**: draft emails using bilingual templates (English/Dutch)
- **Checklists**: check planning progress, update checklist items, view overdue tasks
- **Wiki pages**: read and update gathering wiki content

### Two ways to connect

The MCP server supports two transport modes:

| Mode | Best for | Authentication |
|------|----------|---------------|
| **stdio** | Local development; running the server on your own machine | Static API token |
| **HTTP** | Production use; connecting to the hosted server at `mcp-gatherings.junovy.com` | Keycloak OAuth 2.0 (signs in with your Junovy Account) |

For most organisers, the **HTTP mode** is the simplest option; you just point Claude at the hosted server and sign in with your Junovy Account. The **stdio mode** is for developers who want to run the MCP server locally.

### Who can use it

You need to be a member of the organiser team for a gathering to manage it via the MCP server. The same permissions that apply in the admin panel apply when using Claude; if you can't do something in the UI, you can't do it via MCP either.

# Setting Up Claude Desktop

Claude Desktop is Anthropic's desktop application for macOS and Windows. You can connect it to the Gathering Organiser MCP Server so that Claude can manage gatherings directly from your conversations.

### Option 1: HTTP mode (recommended)

This connects Claude Desktop to the hosted MCP server. No local setup required.

1. Open Claude Desktop
2. Go to **Settings** (click your profile icon, then **Settings**)
3. Click **Developer** in the sidebar, then **Edit Config**
4. This opens the configuration file. Add the following to the `mcpServers` section:

```json
{
  "mcpServers": {
    "gathering-organiser": {
      "url": "https://mcp-gatherings.junovy.com/mcp",
      "transport": "streamable-http"
    }
  }
}
```

5. Save the file and restart Claude Desktop
6. When you first use a gathering tool, you'll be prompted to sign in with your Junovy Account via Keycloak

### Option 2: stdio mode (local development)

This runs the MCP server on your own machine. Useful for developers working on the Riverland Faeries codebase.

**Prerequisites:**
- Node.js 22+ (via Volta)
- pnpm 10+
- The `tenant-riverland-faeries` repository cloned locally

**Steps:**

1. Build the MCP server:

```bash
cd tenant-riverland-faeries/apps/mcp
pnpm install
pnpm build
```

2. Open your Claude Desktop config file and add:

```json
{
  "mcpServers": {
    "gathering-organiser": {
      "command": "node",
      "args": ["/path/to/tenant-riverland-faeries/apps/mcp/dist/index.js"],
      "env": {
        "GATHERING_API_URL": "http://localhost:3000",
        "GATHERING_API_TOKEN": "your-api-token"
      }
    }
  }
}
```

Replace `/path/to/` with the actual path to your local repository, and `your-api-token` with a valid API token.

3. Save and restart Claude Desktop

### Config file locations

| Platform | Path |
|----------|------|
| **macOS** | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| **Windows** | `%APPDATA%\Claude\claude_desktop_config.json` |

### Verifying the connection

After restarting Claude Desktop, you should see a hammer icon (🔨) in the input area. Click it to see the list of available gathering tools. If the tools appear, the connection is working.

Try asking Claude: "List all gatherings" to confirm everything is set up correctly.

### Troubleshooting

- **Tools don't appear**: check that the config JSON is valid (no trailing commas, correct brackets) and restart Claude Desktop
- **Authentication errors (HTTP mode)**: make sure you can sign in to `riverland.faeries.eu` with your Junovy Account; the MCP server uses the same Keycloak authentication
- **Connection refused (stdio mode)**: verify the path in `args` points to the built `dist/index.js` file, and that the API URL and token are correct
- **Server not responding**: check that the Riverland Faeries API is running (locally for stdio, or that `mcp-gatherings.junovy.com` is reachable for HTTP)

# Setting Up Claude.ai (Cowork Mode)

If you use Claude through the web at claude.ai or the Claude desktop app's Cowork mode, you can add the Gathering Organiser MCP Server as a remote connector. This works with the hosted HTTP server, so no local installation is needed.

### Adding the connector

1. Open Claude.ai or the Claude desktop app
2. Navigate to **Settings > Connectors** (or **Integrations**, depending on your version)
3. Click **Add Connector** or **Add MCP Server**
4. Enter the following details:

| Field | Value |
|-------|-------|
| **Name** | Gathering Organiser |
| **URL** | `https://mcp-gatherings.junovy.com/mcp` |
| **Transport** | Streamable HTTP |

5. Click **Save** or **Connect**
6. You'll be redirected to sign in with your Junovy Account via Keycloak
7. After signing in, the connector is active and Claude can use the gathering tools

### Using the connector

Once connected, you can ask Claude about your gatherings in any conversation. For example:

- "Show me all published gatherings"
- "How many registrations does Beltane 2026 have?"
- "What's the checklist progress for the upcoming gathering?"

Claude will use the appropriate MCP tool to fetch or update the information.

### Managing the connector

- To disconnect, go back to **Settings > Connectors** and remove the Gathering Organiser entry
- If your session expires, Claude will prompt you to re-authenticate
- The connector uses OAuth 2.0 with PKCE, so your credentials are never stored by the MCP server; authentication is handled entirely through Keycloak

### Tips

- The connector respects the same permissions as the admin panel; you can only manage gatherings you're an organiser for
- If you're using Cowork mode in the Claude desktop app, the connector works the same way as on claude.ai
- You can have the connector active alongside other MCP connectors without any conflicts

# Available MCP Tools

The Gathering Organiser MCP Server exposes 25 tools across seven categories. This page lists all of them with a brief description of what each one does.

### Gathering management

| Tool | Description |
|------|-------------|
| `gathering_list` | List all gatherings, optionally filtered by status or type |
| `gathering_get` | Get full details of a specific gathering |
| `gathering_create` | Create a new gathering |
| `gathering_update` | Update an existing gathering (title, dates, status, capacity, etc.) |
| `gathering_get_summary` | Get an overview including registration counts, checklist progress, and logistics status |

### Registration and participants

| Tool | Description |
|------|-------------|
| `registration_list` | List registrations for a gathering, optionally filtered by status |
| `registration_get` | Get full details of a single registration including form responses |
| `registration_update_status` | Approve, waitlist, decline, or cancel a registration |
| `registration_stats` | Get registration statistics: totals by status, capacity usage, dietary breakdown |
| `registration_export` | Export registrations as CSV, JSON, markdown, or dietary summary |

### Budget and finance

| Tool | Description |
|------|-------------|
| `budget_create` | Generate a budget calculation with sliding-scale pricing tiers |
| `budget_generate_report` | Produce a formatted bilingual (English/Dutch) budget report for sharing |

### Carpooling and logistics

| Tool | Description |
|------|-------------|
| `carpool_list` | List all carpool matches for a gathering |
| `carpool_match` | Update a carpool match status (confirm, cancel, send introduction) |
| `carpool_stats` | Get carpool statistics: matches, confirmed/pending/cancelled, unmatched passengers |
| `pickup_list` | List all pickup runs with drivers, times, locations, and passengers |

### Communication and templates

| Tool | Description |
|------|-------------|
| `comms_draft` | Draft an email using a bilingual template with gathering-specific data |
| `comms_list_templates` | List all available email templates |
| `comms_get_template` | Get details of a specific template including required parameters |

Available email templates: `save-the-date`, `invitation`, `practical-update`, `thank-you`, `financial-summary`.

### Planning checklists

| Tool | Description |
|------|-------------|
| `checklist_get` | Get checklist items, optionally filtered by planning phase |
| `checklist_update_item` | Update a checklist item (complete, assign, add notes, set due date) |
| `checklist_progress` | Get overall and per-phase completion rates with overdue items |

### Wiki pages

| Tool | Description |
|------|-------------|
| `wiki_get` | List all wiki pages or get a specific page's content |
| `wiki_update_section` | Update a wiki page's title, content, published status, or order |
| `wiki_publish` | Publish a wiki page to make it publicly visible |

### Read-only vs. write tools

Most tools are read-only (they fetch data without changing anything). The tools that can make changes are: `gathering_create`, `gathering_update`, `registration_update_status`, `carpool_match`, `checklist_update_item`, `wiki_update_section`, `wiki_publish`, `budget_create`, `budget_generate_report`, and `comms_draft`.

When Claude uses a write tool, it will typically confirm the action with you first before proceeding.

# Example Workflows

Here are some practical examples of how you can use the MCP connector with Claude to manage your gatherings. These show the kinds of questions you can ask and what Claude will do behind the scenes.

### Checking registration status

**You**: "How are registrations looking for Beltane 2026?"

Claude uses `registration_stats` to pull the numbers, then presents a summary like:

- 28 approved, 5 pending, 3 waitlisted
- Capacity: 28 / 35 optimal, 28 / 45 maximum
- Dietary breakdown: 12 omnivore, 8 vegetarian, 5 vegan, 3 gluten-free

### Reviewing and approving registrations

**You**: "Show me the pending registrations and approve the ones that look good."

Claude uses `registration_list` with a status filter, shows you each pending registration with their form responses, and then uses `registration_update_status` to approve the ones you confirm.

### Checking planning progress

**You**: "What's left to do before the gathering?"

Claude uses `checklist_progress` to get completion rates and highlights overdue items. It might respond with something like: "Overall 72% complete. The 'one week before' phase has 3 overdue items: book firewood delivery, confirm kitchen rota, and print emergency contacts."

### Coordinating carpools

**You**: "Are there any unmatched passengers for the gathering?"

Claude uses `carpool_stats` to check, then `carpool_list` to see the details. It can identify who still needs a ride and suggest potential matches based on location.

### Drafting a save-the-date email

**You**: "Draft a save-the-date email for Beltane 2026."

Claude uses `comms_draft` with the `save-the-date` template. It pulls the gathering details and produces a bilingual (English/Dutch) email you can review and send.

### Updating a wiki page

**You**: "Update the 'What to Bring' wiki page to mention that we'll have a sauna this time."

Claude uses `wiki_get` to fetch the current page content, then `wiki_update_section` to add the new information. You can review the updated content before it goes live.

### Getting a gathering summary

**You**: "Give me a full overview of where we are with Beltane planning."

Claude uses `gathering_get_summary` to pull together registration counts, checklist progress, carpool status, and wiki page status into a single overview.

### Generating a budget report

**You**: "Create a budget report for 35 participants over 5 days."

Claude uses `budget_generate_report` to calculate costs with sliding-scale tiers and produces a formatted bilingual report you can share with participants.

### Tips for getting the best results

- Be specific about which gathering you mean if you have more than one active
- You can chain requests: "Check the registrations, then draft a practical update email with the current numbers"
- Claude will ask for confirmation before making changes (approving registrations, updating wiki pages, etc.)
- If you're not sure what tools are available, just ask Claude: "What can you help me with for gathering planning?"