Planning Center · Agentic Access

Planning Center Agentic Access

x-agentic-access generated

Planning Center exposes 61 API operations that an AI agent could call, of which 10 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.

By consequence: 51 read, 8 write, and 2 physical.

Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.

Church ManagementChMSFaithGivingEventsSchedulingPeopleNonprofit
Operations: 61 Acting: 10 Human-in-the-loop: 0 Method: generated

By consequence

read 51 write 8 physical 2

Highest-consequence actions

The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.

MethodPathConsequenceHuman-in-loop
POST /giving/v2/donations/{id}/issue_refund physical conditional
POST /groups/v2/groups/{group_id}/memberships physical conditional

Source

Agentic Access

Raw ↑
generated: '2026-07-15'
method: generated
source: openapi/planning-center-openapi.yml
description: Recommended x-agentic-access execution contracts, classified heuristically from
  the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
  audience per deployment. See research/curity/agentic-governance/.
summary:
  operations: 61
  by_action_class:
    connected: 51
    acting: 10
  by_consequence:
    read: 51
    write: 8
    physical: 2
  human_in_the_loop_required: 0
operations:
- path: /people/v2/people
  method: get
  operationId: listPeople
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/people
  method: post
  operationId: createPerson
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/people/{id}
  method: get
  operationId: getPerson
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/people/{id}
  method: patch
  operationId: updatePerson
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/people/{id}
  method: delete
  operationId: deletePerson
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/people/{id}/emails
  method: get
  operationId: listPersonEmails
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/emails
  method: get
  operationId: listEmails
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/addresses
  method: get
  operationId: listAddresses
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/phone_numbers
  method: get
  operationId: listPhoneNumbers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/households
  method: get
  operationId: listHouseholds
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/lists
  method: get
  operationId: listLists
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/field_definitions
  method: get
  operationId: listFieldDefinitions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/forms
  method: get
  operationId: listForms
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /people/v2/workflows
  method: get
  operationId: listWorkflows
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /services/v2/service_types
  method: get
  operationId: listServiceTypes
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /services/v2/service_types/{service_type_id}/plans
  method: get
  operationId: listPlans
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /services/v2/service_types/{service_type_id}/plans/{plan_id}
  method: get
  operationId: getPlan
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /services/v2/songs
  method: get
  operationId: listSongs
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /services/v2/songs
  method: post
  operationId: createSong
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /services/v2/teams
  method: get
  operationId: listTeams
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /services/v2/people
  method: get
  operationId: listServicesPeople
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/donations
  method: get
  operationId: listDonations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/donations
  method: post
  operationId: createDonation
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/donations/{id}
  method: get
  operationId: getDonation
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/donations/{id}/issue_refund
  method: post
  operationId: issueRefund
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/funds
  method: get
  operationId: listFunds
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/batches
  method: get
  operationId: listBatches
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/batches
  method: post
  operationId: createBatch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/payment_sources
  method: get
  operationId: listPaymentSources
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/recurring_donations
  method: get
  operationId: listRecurringDonations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /giving/v2/pledges
  method: get
  operationId: listPledges
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /groups/v2/groups
  method: get
  operationId: listGroups
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /groups/v2/groups/{id}
  method: get
  operationId: getGroup
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /groups/v2/group_types
  method: get
  operationId: listGroupTypes
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /groups/v2/groups/{group_id}/memberships
  method: get
  operationId: listGroupMemberships
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /groups/v2/groups/{group_id}/memberships
  method: post
  operationId: createGroupMembership
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /groups/v2/events
  method: get
  operationId: listGroupEvents
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /check-ins/v2/check_ins
  method: get
  operationId: listCheckIns
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /check-ins/v2/events
  method: get
  operationId: listCheckInEvents
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /check-ins/v2/events/{event_id}/event_times
  method: get
  operationId: listEventTimes
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /check-ins/v2/locations
  method: get
  operationId: listCheckInLocations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /check-ins/v2/stations
  method: get
  operationId: listStations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /calendar/v2/events
  method: get
  operationId: listCalendarEvents
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /calendar/v2/event_instances
  method: get
  operationId: listEventInstances
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /calendar/v2/resources
  method: get
  operationId: listResources
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /calendar/v2/resource_bookings
  method: get
  operationId: listResourceBookings
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /calendar/v2/conflicts
  method: get
  operationId: listConflicts
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /registrations/v2/signups
  method: get
  operationId: listSignups
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /registrations/v2/signups/{signup_id}/attendees
  method: get
  operationId: listAttendees
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /registrations/v2/categories
  method: get
  operationId: listCategories
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /registrations/v2/campuses
  method: get
  operationId: listCampuses
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /publishing/v2/channels
  method: get
  operationId: listChannels
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /publishing/v2/channels/{channel_id}/episodes
  method: get
  operationId: listEpisodes
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /publishing/v2/series
  method: get
  operationId: listSeries
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /publishing/v2/speakers
  method: get
  operationId: listSpeakers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /webhooks/v2/subscriptions
  method: get
  operationId: listWebhookSubscriptions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /webhooks/v2/subscriptions
  method: post
  operationId: createWebhookSubscription
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /webhooks/v2/subscriptions/{id}
  method: get
  operationId: getWebhookSubscription
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /webhooks/v2/subscriptions/{id}
  method: delete
  operationId: deleteWebhookSubscription
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /webhooks/v2/available_events
  method: get
  operationId: listAvailableEvents
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services
- path: /webhooks/v2/subscriptions/{subscription_id}/events
  method: get
  operationId: listWebhookDeliveries
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
    scope:
    - calendar
    - check_ins
    - giving
    - groups
    - people
    - publishing
    - registrations
    - services