All 35 tools run through the same service layer as the REST API. Every input is JSON Schema validated; outputs are JSON-scrubbed per the caller’s scope.Documentation Index
Fetch the complete documentation index at: https://docs.pickupbell.com/llms.txt
Use this file to discover all available pages before exploring further.
Locations
list_locations
List locations this API key can access (usually just one — keys are location-scoped).
Scope: locations:read
Input: {}
get_location
Fetch a location by UUID or slug.
Scope: locations:read
Input: { id: string }
update_location
Update mutable location fields.
Scope: locations:write
Input: { id: string, name?, legal_name?, industry?, timezone?, website_url?, owner_cell?, service_areas?, zip_codes?, travel_radius_miles? }
Members
list_members
List location members. Emails/phones masked when read over API.
Scope: members:read
Input: { location_id: string }
list_api_keys
List API keys issued for this location (prefix + scopes only — never secrets).
Scope: api_keys:read
Input: { location_id }
Agent configuration
get_agent_config
Voice, greetings, personality sliders, emergency keywords, compliance guardrails.
Scope: agent:read
Input: { location_id }
update_agent_config
Update any subset.
Scope: agent:write
Input: { location_id, voice_id?, voice_name?, greeting_primary?, greeting_after_hours?, greeting_emergency?, greeting_voicemail?, greeting_cant_help?, personality_* (0..1)?, emergency_keywords?, vulnerable_signals?, transfer_number?, transfer_ring_seconds?, ai_self_id?, two_party_consent?, pricebook_lock?, no_pii_collection?, profanity_filter? }
list_business_hours
7-day weekly hours.
Scope: agent:read
Input: { location_id }
update_business_hours
Replace the whole week in one call.
Scope: agent:write
Input: { location_id, hours: [{ day_of_week (0..6), is_open, open_time?, close_time? }] }
get_call_forwarding
How calls route to the AI.
Scope: agent:read
Input: { location_id }
update_call_forwarding
Change routing mode.
Scope: agent:write
Input: { location_id, mode?: "replace"|"forward_all"|"forward_busy"|"forward_hours", existing_business_line? }
FAQs & pricebook
list_faqs · add_faq · update_faq · delete_faq
CRUD on what the AI quotes. All require location_id.
Scopes: faqs:read / faqs:write
list_pricebook · add_pricebook_item
Pricebook items (service names with prices/ranges).
Scopes: faqs:read / faqs:write
Calls
list_calls
Recent calls. Phones masked; transcripts/recordings gated by scope.
Scope: calls:read · optional transcripts:read · optional recordings:read
Input: { location_id, outcome?, emergency?, since?, limit? }
get_call
Single call detail. Same scrubbing.
Scope: calls:read (+ transcripts/recordings as above)
Input: { location_id, call_id }
Leads
list_leads · create_lead · update_lead
Pipeline operations.
Scopes: leads:read / leads:write
Bookings
list_bookings · create_booking
Appointments.
Scopes: bookings:read / bookings:write
Insights
get_insights_summary
Rolled-up metrics over the last N days.
Scope: insights:read
Input: { location_id, days?: 1..90 }
Notifications
get_notification_settings · update_notification_settings · list_notification_log
Scopes: agent:read / agent:write
Billing (read-only)
get_subscription
Subscription state. Upstream billing IDs omitted.
Scope: locations:read
Input: { location_id }
Integrations
list_integration_catalog
Static catalog of every integration PickupBell knows about.
No scope required.
list_integrations
Connected integrations for the location.
Scope: locations:read
connect_webhook_integration
Attach a Slack / Zapier / Make / n8n / Cal.com by URL.
Scope: locations:write
Input: { location_id, provider, webhook_url, label? }
disconnect_integration
Disconnect a provider.
Scope: locations:write
Input: { location_id, provider }