OfficeRnD MCP by usefulapi

Browse OfficeRnD members, bookings, memberships, invoices and tickets, with optional write access.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
91%
Naming quality
79%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'officernd_list_booking_occurrences' name length outside 3-30 rangein officernd_list_booking_occurrences

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,963Tokens (tool definitions)
~2.6 KBTypical response size
Significant attention impact (4.66% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "officernd": {
      "url": "https://officernd.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://officernd.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (20)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢officernd_get_organization

Fetch the OfficeRnD organization these credentials belong to — name, slug and region. A cheap way to confirm the setup works. OfficeRnD: GET /api/v2/organizations/{orgSlug}.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_locations(name, is_open, is_public, limit, cursor_next, ...)

List the organization's locations (coworking spaces/buildings) with address, timezone and open/public flags. Location _ids are needed by most other filters and by officernd_create_member. OfficeRnD: GET /locations.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Exact location name.",
      "type": "string"
    },
    "is_open": {
      "description": "Only operational (true) or non-operational (false) locations.",
      "type": "boolean"
    },
    "is_public": {
      "description": "Only locations shown (true) or hidden (false) in the members portal.",
      "type": "boolean"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_members(email, name, location, company, status, ...)

List members (people) of the workspace, filterable by exact email or name, location, company, status and creation/modification date. OfficeRnD: GET /members.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "description": "Exact email match.",
      "type": "string"
    },
    "name": {
      "description": "Exact name match.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "company": {
      "description": "Only items for this company _id.",
      "type": "string"
    },
    "status": {
      "description": "One or more member statuses.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "active",
          "former",
          "pending",
          "contact",
          "not_approved",
          "drop-in",
          "lead"
        ]
      }
    },
    "is_billing_person": {
      "description": "Only (non-)billing persons of their company.",
      "type": "boolean"
    },
    "created_from": {
      "description": "Only members created at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "created_before": {
      "description": "Only members created before this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "modified_since": {
      "description": "Only items modified at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "sort": {
      "description": "Sort expression <field>:asc|desc, e.g. createdAt:desc.",
      "type": "string",
      "pattern": "^[^:]+:(asc|desc)$"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_get_member(member_id)

Fetch one member by _id — contact details, company, location, status, billing details and custom properties. OfficeRnD: GET /members/{memberId}.

Input Schema

{
  "type": "object",
  "properties": {
    "member_id": {
      "type": "string",
      "minLength": 1,
      "description": "The member _id."
    }
  },
  "required": [
    "member_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_companies(company_id, name, location, status, modified_since, ...)

List companies (teams/tenants renting space), filterable by exact name or _id, location and status. OfficeRnD: GET /companies.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "description": "Exact company _id (use to fetch a single company).",
      "type": "string"
    },
    "name": {
      "description": "Exact company name.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "status": {
      "description": "One or more company statuses.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "active",
          "former",
          "pending",
          "inactive",
          "not_approved",
          "drop-in",
          "lead"
        ]
      }
    },
    "modified_since": {
      "description": "Only items modified at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "sort": {
      "description": "Sort expression <field>:asc|desc, e.g. createdAt:desc.",
      "type": "string",
      "pattern": "^[^:]+:(asc|desc)$"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_resources(name, location, type, limit, cursor_next, ...)

List bookable/assignable resources — meeting rooms, desks, hot desks, private offices — with capacity, price, rate, floor and amenities. Resource _ids are needed by officernd_create_booking. OfficeRnD: GET /resources.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Exact resource name.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "type": {
      "description": "One or more resource types. System types: meeting_room (bookable meeting rooms), hotdesk (bookable hot desks), team_room (private offices), desk (dedicated desks), desk_tr (desks inside private offices), desk_na (not available); orgs may add custom types.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_bookings(member, company, location, resource, is_cancelled, ...)

List bookings: one entry per one-off booking and one per recurring series (first instance only). Filter by member, company, location, resource, series start window and status. For every individual occurrence in a date window use officernd_list_booking_occurrences. OfficeRnD: GET /bookings.

Input Schema

{
  "type": "object",
  "properties": {
    "member": {
      "description": "Only items for this member _id.",
      "type": "string"
    },
    "company": {
      "description": "Only items for this company _id.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "resource": {
      "description": "One or more resource _ids.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "is_cancelled": {
      "description": "Only (non-)cancelled bookings.",
      "type": "boolean"
    },
    "is_tentative": {
      "description": "Only tentative (unconfirmed) or confirmed bookings.",
      "type": "boolean"
    },
    "starts_from": {
      "description": "Only bookings/series starting at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "starts_before": {
      "description": "Only bookings/series starting before this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "modified_since": {
      "description": "Only items modified at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_booking_occurrences(from, to, member, company, location, ...)

List every individual booking occurrence between two times — one-off bookings plus each expanded instance of recurring series. The right tool for calendars, room availability and utilisation. Without pagination the window may be at most 1 year. OfficeRnD: GET /bookings/occurrences.

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "minLength": 1,
      "description": "Window start (ISO 8601 date-time), e.g. 2026-10-01T00:00:00.000Z."
    },
    "to": {
      "type": "string",
      "minLength": 1,
      "description": "Window end (ISO 8601 date-time), e.g. 2026-10-08T00:00:00.000Z."
    },
    "member": {
      "description": "Only items for this member _id.",
      "type": "string"
    },
    "company": {
      "description": "Only items for this company _id.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "resource": {
      "description": "One or more resource _ids.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "is_cancelled": {
      "description": "Only (non-)cancelled bookings.",
      "type": "boolean"
    },
    "is_tentative": {
      "description": "Only tentative (unconfirmed) or confirmed bookings.",
      "type": "boolean"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "required": [
    "from",
    "to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_get_booking(booking_id)

Fetch one booking by _id — resource, member/company, times, recurrence rule, fees, extras, visitors and status. OfficeRnD: GET /bookings/{bookingId}.

Input Schema

{
  "type": "object",
  "properties": {
    "booking_id": {
      "type": "string",
      "minLength": 1,
      "description": "The booking _id."
    }
  },
  "required": [
    "booking_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_memberships(member, company, location, plan, calculated_status, ...)

List memberships (recurring plans sold to members/companies) with plan, price, discount, start/end dates and calculated status. OfficeRnD: GET /memberships.

Input Schema

{
  "type": "object",
  "properties": {
    "member": {
      "description": "Only items for this member _id.",
      "type": "string"
    },
    "company": {
      "description": "Only items for this company _id.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "plan": {
      "description": "One or more plan _ids.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "calculated_status": {
      "description": "The platform-calculated membership status.",
      "type": "string",
      "enum": [
        "not_started",
        "active",
        "expired",
        "not_approved"
      ]
    },
    "modified_since": {
      "description": "Only items modified at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_contracts(company, location, status, stage, modified_since, ...)

List contracts (agreements for plans and resources) with totals, dates, notice period, status and lifecycle stage — e.g. find contracts up for renewal or serving notice. OfficeRnD: GET /contracts.

Input Schema

{
  "type": "object",
  "properties": {
    "company": {
      "description": "Only items for this company _id.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "status": {
      "description": "Contract status.",
      "type": "string",
      "enum": [
        "signed",
        "draft",
        "terminated",
        "not_signed",
        "canceled"
      ]
    },
    "stage": {
      "description": "Contract lifecycle stage.",
      "type": "string",
      "enum": [
        "terminated",
        "served_notice",
        "active",
        "up_for_renewal",
        "not_renewed",
        "expired",
        "rolling"
      ]
    },
    "modified_since": {
      "description": "Only items modified at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "sort": {
      "description": "Sort expression <field>:asc|desc, e.g. createdAt:desc.",
      "type": "string",
      "pattern": "^[^:]+:(asc|desc)$"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_checkins(member, company, location, started_from, started_before, ...)

List member check-ins (who was on site, when, and via which booking or pass) — useful for occupancy and attendance. OfficeRnD: GET /checkins.

Input Schema

{
  "type": "object",
  "properties": {
    "member": {
      "description": "Only items for this member _id.",
      "type": "string"
    },
    "company": {
      "description": "Only items for this company _id.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "started_from": {
      "description": "Only check-ins starting at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "started_before": {
      "description": "Only check-ins starting before this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_payments(member, company, location, document_type, status, ...)

List billing documents — invoices, credit notes, overpayments — with totals, paid/pending amounts, due dates and status. Filter by member, company, location, document type, status, number and issue/due date (e.g. overdue invoices). OfficeRnD: GET /payments.

Input Schema

{
  "type": "object",
  "properties": {
    "member": {
      "description": "Only items for this member _id.",
      "type": "string"
    },
    "company": {
      "description": "Only items for this company _id.",
      "type": "string"
    },
    "location": {
      "description": "Only items for this location _id.",
      "type": "string"
    },
    "document_type": {
      "description": "Document type.",
      "type": "string",
      "enum": [
        "creditNote",
        "invoice",
        "overpayment",
        "paymentCharge"
      ]
    },
    "status": {
      "description": "One or more statuses, e.g. paid, pending.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "number": {
      "description": "Exact document number.",
      "type": "string"
    },
    "issued_from": {
      "description": "Only documents issued at or after this date (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "issued_before": {
      "description": "Only documents issued before this date (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "due_before": {
      "description": "Only documents due before this date (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "modified_since": {
      "description": "Only items modified at or after this time (ISO 8601 date-time, e.g. 2026-01-01T00:00:00.000Z).",
      "type": "string"
    },
    "sort": {
      "description": "Sort expression <field>:asc|desc, e.g. createdAt:desc.",
      "type": "string",
      "pattern": "^[^:]+:(asc|desc)$"
    },
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_tickets(limit, cursor_next, cursor_prev)

List helpdesk tickets (member requests/issues) with subject, message, status (open/new/pending/resolved), priority, severity and assignee. OfficeRnD: GET /tickets.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢officernd_list_ticket_options(limit, cursor_next, cursor_prev)

List the helpdesk ticket options — the configured types, priorities and severities (each with an _id, category and label). Their _ids are required by officernd_create_ticket. OfficeRnD: GET /ticket-options.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Page size, 1-50 (OfficeRnD's max; default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor_next": {
      "description": "The cursorNext from the previous page. Omit for the first page.",
      "type": "string"
    },
    "cursor_prev": {
      "description": "The cursorPrev from a page, to go one page back.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴officernd_create_member(name, location, start_date, email, phone, ...)

WRITE. Add a new member (person) to a location, optionally attached to a company. Needs scope flex.community.members.create. OfficeRnD: POST /members.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The member's full name."
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "description": "The _id of the member's location (see officernd_list_locations)."
    },
    "start_date": {
      "type": "string",
      "minLength": 1,
      "description": "Start date (ISO 8601), e.g. 2026-10-01T00:00:00.000Z."
    },
    "email": {
      "description": "The member's email address.",
      "type": "string"
    },
    "phone": {
      "description": "Primary phone number.",
      "type": "string"
    },
    "company": {
      "description": "The _id of the company the member belongs to.",
      "type": "string"
    },
    "description": {
      "description": "Description/bio.",
      "type": "string"
    },
    "is_billing_person": {
      "description": "Whether the member receives the company's invoices.",
      "type": "boolean"
    },
    "is_contact_person": {
      "description": "Whether the member is a contact person of the company.",
      "type": "boolean"
    },
    "tags": {
      "description": "Tags.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "properties": {
      "description": "Custom properties, keyed by property name.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "name",
    "location",
    "start_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴officernd_update_member(member_id, name, email, phone, start_date, ...)

WRITE. Update a member's name, email, phone, start date, billing/contact flags, tags or custom properties. Only the fields you pass are changed; `tags` replaces the whole tag list. Needs scope flex.community.members.update. OfficeRnD: PUT /members/{memberId}.

Input Schema

{
  "type": "object",
  "properties": {
    "member_id": {
      "type": "string",
      "minLength": 1,
      "description": "The member _id."
    },
    "name": {
      "description": "New name.",
      "type": "string"
    },
    "email": {
      "description": "New email.",
      "type": "string"
    },
    "phone": {
      "description": "New phone number.",
      "type": "string"
    },
    "start_date": {
      "description": "New start date (ISO 8601).",
      "type": "string"
    },
    "is_billing_person": {
      "description": "Whether the member receives the company's invoices.",
      "type": "boolean"
    },
    "is_contact_person": {
      "description": "Whether the member is a contact person of the company.",
      "type": "boolean"
    },
    "tags": {
      "description": "Replaces the member's entire tag list.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "properties": {
      "description": "Custom properties to set.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "member_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴officernd_create_booking(resource, start, end, member, company, ...)

WRITE. Book a resource (e.g. a meeting room) for a member and/or company. Unless is_free or is_tentative is set, the booking is charged per the resource's rate, and the member is notified unless is_silent. Needs scope flex.space.bookings.create. OfficeRnD: POST /bookings.

Input Schema

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "description": "The _id of the resource to book (see officernd_list_resources)."
    },
    "start": {
      "type": "string",
      "minLength": 1,
      "description": "Start (ISO 8601 date-time), e.g. 2026-10-01T13:00:00.000Z."
    },
    "end": {
      "type": "string",
      "minLength": 1,
      "description": "End (ISO 8601 date-time)."
    },
    "member": {
      "description": "The _id of the member the booking is for.",
      "type": "string"
    },
    "company": {
      "description": "The _id of the company the booking is for.",
      "type": "string"
    },
    "title": {
      "description": "Booking title.",
      "type": "string"
    },
    "description": {
      "description": "Longer description.",
      "type": "string"
    },
    "is_tentative": {
      "description": "Create as tentative (unconfirmed, not charged).",
      "type": "boolean"
    },
    "is_free": {
      "description": "Mark as free — no fees are generated.",
      "type": "boolean"
    },
    "members": {
      "description": "_ids of teammates (same company) attending.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "visitors": {
      "description": "_ids of external visitors attending.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "is_silent": {
      "description": "If true, no notification is sent to the member.",
      "type": "boolean"
    },
    "enforce_booking_policy": {
      "description": "If true, apply member validations (business hours, durations, limits) and booking-policy approval flagging.",
      "type": "boolean"
    }
  },
  "required": [
    "resource",
    "start",
    "end"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴officernd_create_ticket(member, subject, type, priority, severity, ...)

WRITE. Open a helpdesk ticket on behalf of a member. type, priority and severity are ticket-option _ids from officernd_list_ticket_options. Needs scope flex.collaboration.tickets.create. OfficeRnD: POST /tickets.

Input Schema

{
  "type": "object",
  "properties": {
    "member": {
      "type": "string",
      "minLength": 1,
      "description": "The _id of the member raising the ticket."
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "description": "Short summary of the issue."
    },
    "type": {
      "type": "string",
      "minLength": 1,
      "description": "Ticket-option _id with category 'type'."
    },
    "priority": {
      "type": "string",
      "minLength": 1,
      "description": "Ticket-option _id with category 'priority'."
    },
    "severity": {
      "type": "string",
      "minLength": 1,
      "description": "Ticket-option _id with category 'severity'."
    },
    "message": {
      "description": "Full description.",
      "type": "string"
    },
    "attachments": {
      "description": "Image attachment URLs.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "member",
    "subject",
    "type",
    "priority",
    "severity"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴officernd_add_ticket_comment(ticket_id, text, member, is_public)

WRITE. Post a comment on a helpdesk ticket. Public comments are visible to the member; comments attributed to members must be public. Needs scope flex.collaboration.ticketComments.create. OfficeRnD: POST /ticket-comments/{ticketId}.

Input Schema

{
  "type": "object",
  "properties": {
    "ticket_id": {
      "type": "string",
      "minLength": 1,
      "description": "The ticket _id."
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "description": "The comment text."
    },
    "member": {
      "type": "string",
      "minLength": 1,
      "description": "The _id of the member the comment is posted as."
    },
    "is_public": {
      "type": "boolean",
      "description": "Whether the comment is public (visible to the member)."
    }
  },
  "required": [
    "ticket_id",
    "text",
    "member",
    "is_public"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools
verifiedversion not recorded20 tools