Skip to content

OfficeRnD MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.4 · published by io.usefulapi

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

Deletes · 5

20 tools: 5 can delete or cancel things and 15 only read.

Scanned Oct 22, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http officernd https://officernd.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 info

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

20 tools

Deletes or cancels 5Claude Code: deny
  • officernd_add_ticket_commentWRITE.Can send data outNo findings

    Why it is in this group

    • The name "officernd_add_ticket_comment" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "officernd_add_ticket_comment" says "add" and "comment": it writes something other people read.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Comment on a ticket
    • destructiveHint: true
  • officernd_create_bookingWRITE.No findings

    Why it is in this group

    • The name "officernd_create_booking" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Create a booking
    • destructiveHint: true
  • officernd_create_memberWRITE.No findings

    Why it is in this group

    • The name "officernd_create_member" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE. Add a new member (person) to a location, optionally attached to a company. Needs scope flex.community.members.create. OfficeRnD: POST /members.

    Annotations the server declares

    • title: Create a member
    • destructiveHint: true
  • officernd_create_ticketWRITE.No findings

    Why it is in this group

    • The name "officernd_create_ticket" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Open a helpdesk ticket
    • destructiveHint: true
  • officernd_update_memberWRITE.No findings

    Why it is in this group

    • The name "officernd_update_member" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Update a member
    • destructiveHint: true
Only reads 15Claude Code: allow
  • officernd_get_bookingFetch one booking by _id — resource, member/company, times, recurrence rule, fees, extras, visitors and status.No findings

    Why it is in this group

    • The name "officernd_get_booking" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one booking by _id — resource, member/company, times, recurrence rule, fees, extras, visitors and status. OfficeRnD: GET /bookings/{bookingId}.

    Annotations the server declares

    • title: Get one booking
    • readOnlyHint: true
  • officernd_get_memberFetch one member by _id — contact details, company, location, status, billing details and custom properties.Reads private dataNo findings

    Why it is in this group

    • The name "officernd_get_member" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "fetch" and "contact": it reads contacts.
    Description, as the server wrote it
    Fetch one member by _id — contact details, company, location, status, billing details and custom properties. OfficeRnD: GET /members/{memberId}.

    Annotations the server declares

    • title: Get one member
    • readOnlyHint: true
  • officernd_get_organizationFetch the OfficeRnD organization these credentials belong to — name, slug and region.Reads private data1 finding

    Why it is in this group

    • The name "officernd_get_organization" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "fetch" and "credential": it reads secrets.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "Fetch the OfficeRnD organization these credentials belong to — name, slug and region. A ch..."

      What this check looks for
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Get the organization
    • readOnlyHint: true
  • officernd_list_booking_occurrencesList every individual booking occurrence between two times — one-off bookings plus each expanded instance of recurring series.No findings

    Why it is in this group

    • The name "officernd_list_booking_occurrences" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List booking occurrences
    • readOnlyHint: true
  • officernd_list_bookingsList bookings: one entry per one-off booking and one per recurring series (first instance only).No findings

    Why it is in this group

    • The name "officernd_list_bookings" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List bookings
    • readOnlyHint: true
  • officernd_list_checkinsList member check-ins (who was on site, when, and via which booking or pass) — useful for occupancy and attendance.No findings

    Why it is in this group

    • The name "officernd_list_checkins" says "list": a word for reading.
    Description, as the server wrote it
    List member check-ins (who was on site, when, and via which booking or pass) — useful for occupancy and attendance. OfficeRnD: GET /checkins.

    Annotations the server declares

    • title: List check-ins
    • readOnlyHint: true
  • officernd_list_companiesList companies (teams/tenants renting space), filterable by exact name or _id, location and status.No findings

    Why it is in this group

    • The name "officernd_list_companies" says "list": a word for reading.
    Description, as the server wrote it
    List companies (teams/tenants renting space), filterable by exact name or _id, location and status. OfficeRnD: GET /companies.

    Annotations the server declares

    • title: List companies
    • readOnlyHint: true
  • officernd_list_contractsList contracts (agreements for plans and resources) with totals, dates, notice period, status and lifecycle stage — e.g.No findings

    Why it is in this group

    • The name "officernd_list_contracts" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List contracts
    • readOnlyHint: true
  • officernd_list_locationsList the organization's locations (coworking spaces/buildings) with address, timezone and open/public flags.No findings

    Why it is in this group

    • The name "officernd_list_locations" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List locations
    • readOnlyHint: true
  • officernd_list_membersList members (people) of the workspace, filterable by exact email or name, location, company, status and creation/modification date.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "officernd_list_members" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List members (people) of the workspace, filterable by exact email or name, location, company, status and creation/modification date. OfficeRnD: GET /members.

    Annotations the server declares

    • title: List members
    • readOnlyHint: true
  • officernd_list_membershipsList memberships (recurring plans sold to members/companies) with plan, price, discount, start/end dates and calculated status.No findings

    Why it is in this group

    • The name "officernd_list_memberships" says "list": a word for reading.
    Description, as the server wrote it
    List memberships (recurring plans sold to members/companies) with plan, price, discount, start/end dates and calculated status. OfficeRnD: GET /memberships.

    Annotations the server declares

    • title: List memberships
    • readOnlyHint: true
  • officernd_list_paymentsList billing documents — invoices, credit notes, overpayments — with totals, paid/pending amounts, due dates and status.Reads private dataNo findings

    Why it is in this group

    • The name "officernd_list_payments" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "document": it reads documents.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List invoices and payments
    • readOnlyHint: true
  • officernd_list_resourcesList bookable/assignable resources — meeting rooms, desks, hot desks, private offices — with capacity, price, rate, floor and amenities.Reads private dataNo findings

    Why it is in this group

    • The name "officernd_list_resources" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "meeting": it reads calendars.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List resources
    • readOnlyHint: true
  • officernd_list_ticket_optionsList the helpdesk ticket options — the configured types, priorities and severities (each with an _id, category and label).Reads text others writeNo findings

    Why it is in this group

    • The name "officernd_list_ticket_options" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe name "officernd_list_ticket_options" says "list" and "ticket": it reads issues, which other people can write.
    • untrusted-inputThe description's first sentence says "list" and "ticket": it reads issues, which other people can write.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List ticket options
    • readOnlyHint: true
  • officernd_list_ticketsList helpdesk tickets (member requests/issues) with subject, message, status (open/new/pending/resolved), priority, severity and assignee.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "officernd_list_tickets" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "message": it reads messages.
    • untrusted-inputThe name "officernd_list_tickets" says "list" and "ticket": it reads issues, which other people can write.
    • untrusted-inputThe description's first sentence says "list" and "ticket": it reads issues, which other people can write.
    Description, as the server wrote it
    List helpdesk tickets (member requests/issues) with subject, message, status (open/new/pending/resolved), priority, severity and assignee. OfficeRnD: GET /tickets.

    Annotations the server declares

    • title: List helpdesk tickets
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

18 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.

Reads private data6
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write3
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__officernd__officernd_add_ticket_comment"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Looked at Oct 22, 2026, 15:30 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
5
Protocol version
2025-06-18
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
none
RFC 9728 protected resource metadata
https://officernd.usefulapi.io/.well-known/oauth-protected-resource/mcp
Authorization servers
https://officernd.usefulapi.io
Legacy HTTP+SSE transport
no
Dynamic client registration
yes
Client ID metadata documents
no
  • HighThe whole server

    The endpoint served tools/list without credentials, and the list has 5 tools that change things (5 destructive). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://officernd.usefulapi.io/mcp: tools/list returned 20 tools to an anonymous client, including officernd_create_member (destructive), officernd_update_member (destructive), officernd_create_booking (destructive), officernd_create_ticket (destructive), officernd_add_ticket_comment (destructive)

    What this check looks for

Install

Pinned to version 1.16.4. Values in angle brackets are yours to fill in.

claude mcp add --transport http officernd https://officernd.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__officernd__officernd_get_organization",
      "mcp__officernd__officernd_list_locations",
      "mcp__officernd__officernd_list_members",
      "mcp__officernd__officernd_get_member",
      "mcp__officernd__officernd_list_companies",
      "mcp__officernd__officernd_list_resources",
      "mcp__officernd__officernd_list_bookings",
      "mcp__officernd__officernd_list_booking_occurrences",
      "mcp__officernd__officernd_get_booking",
      "mcp__officernd__officernd_list_memberships",
      "mcp__officernd__officernd_list_contracts",
      "mcp__officernd__officernd_list_checkins",
      "mcp__officernd__officernd_list_payments",
      "mcp__officernd__officernd_list_tickets",
      "mcp__officernd__officernd_list_ticket_options"
    ],
    "ask": [],
    "deny": [
      "mcp__officernd__officernd_create_member",
      "mcp__officernd__officernd_update_member",
      "mcp__officernd__officernd_create_booking",
      "mcp__officernd__officernd_create_ticket",
      "mcp__officernd__officernd_add_ticket_comment"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as officernd. Review it before you use it.

Capability tags behind 8 rules
  • mcp__officernd__officernd_get_organization private-data
  • mcp__officernd__officernd_list_members private-data, untrusted-input
  • mcp__officernd__officernd_get_member private-data
  • mcp__officernd__officernd_list_resources private-data
  • mcp__officernd__officernd_list_payments private-data
  • mcp__officernd__officernd_list_tickets private-data, untrusted-input
  • mcp__officernd__officernd_list_ticket_options untrusted-input
  • mcp__officernd__officernd_add_ticket_comment outbound