MCP App Store

Overview

Rings AI lets users work with private relationship intelligence from their Rings tenant in ChatGPT. Users can look up people and companies, inspect activities, notes, meetings, opportunities, PathPower, recommended paths, and AI summaries, and create or update permitted Rings records such as tasks, notes, people, companies, and opportunities.

Tools

delete_delete_note

ChatGPT
Mirrors GraphQL deleteNote: only the note's owner or a ringmaster may delete it. Returns 204 on success, 404 when the note isn't visible to the caller's tenant, and 403 when the caller is neither the owner nor a ringmaster.

delete_delete_note

ChatGPT
Mirrors GraphQL deleteNote: only the note's owner or a ringmaster may delete it. Returns 204 on success, 404 when the note isn't visible to the caller's tenant, and 403 when the caller is neither the owner nor a ringmaster.

delete_delete_note

ChatGPT
Mirrors GraphQL deleteNote: only the note's owner or a ringmaster may delete it. Returns 204 on success, 404 when the note isn't visible to the caller's tenant, and 403 when the caller is neither the owner nor a ringmaster.

delete_delete_note_association

ChatGPT
Delegates to GraphQL removeAssociation with the association's target type + uuid (derived from the row). Returns 204 on success and 404 when the association doesn't exist or doesn't belong to the referenced note.

delete_delete_note_association

ChatGPT
Delegates to GraphQL removeAssociation with the association's target type + uuid (derived from the row). Returns 204 on success and 404 when the association doesn't exist or doesn't belong to the referenced note.

delete_delete_note_association

ChatGPT
Delegates to GraphQL removeAssociation with the association's target type + uuid (derived from the row). Returns 204 on success and 404 when the association doesn't exist or doesn't belong to the referenced note.

delete_delete_opportunity_association

ChatGPT
Mirrors GraphQL removeEntityFromOpportunity. Returns 204 on success, 404 if the association doesn't exist or doesn't belong to the referenced opportunity.

delete_delete_opportunity_association

ChatGPT
Mirrors GraphQL removeEntityFromOpportunity. Returns 204 on success, 404 if the association doesn't exist or doesn't belong to the referenced opportunity.

delete_delete_opportunity_association

ChatGPT
Mirrors GraphQL removeEntityFromOpportunity. Returns 204 on success, 404 if the association doesn't exist or doesn't belong to the referenced opportunity.

delete_delete_task_association

ChatGPT
Returns 404 when the association doesn't exist or doesn't belong to the given task.

delete_delete_task_association

ChatGPT
Returns 404 when the association doesn't exist or doesn't belong to the given task.

delete_delete_task_association

ChatGPT
Returns 404 when the association doesn't exist or doesn't belong to the given task.

delete_delete_task_endpoint

ChatGPT
PERSONAL tasks can only be deleted by their creator; RING tasks can be deleted by any tenant member.

delete_delete_task_endpoint

ChatGPT
PERSONAL tasks can only be deleted by their creator; RING tasks can be deleted by any tenant member.

delete_delete_task_endpoint

ChatGPT
PERSONAL tasks can only be deleted by their creator; RING tasks can be deleted by any tenant member.

feedback

ChatGPT
Report feedback after completing a task or encountering an error. Call this when: (1) a tool returns a 500 error, (2) results seem incorrect or incomplete, (3) you cannot determine which tool to use, or (4) the user wants to share feedback about their experience. Feedback is sent to Rings' analytics system for service improvement.

feedback

ChatGPT
Report feedback after completing a task or encountering an error. Call this when: (1) a tool returns a 500 error, (2) results seem incorrect or incomplete, (3) you cannot determine which tool to use, or (4) the user wants to share feedback about their experience. Feedback is sent to Rings' analytics system for service improvement.

feedback

ChatGPT
Report feedback after completing a task or encountering an error. Call this when: (1) a tool returns a 500 error, (2) results seem incorrect or incomplete, (3) you cannot determine which tool to use, or (4) the user wants to share feedback about their experience. Feedback is sent to Rings' analytics system for service improvement.

get_get_activity_body

ChatGPT
Delegates to the GraphQL emailBody resolver core (undecorated) so access control (grant ownership + explicit EmailAccessPermission) is enforced in exactly one place. Returns: - 404 when the activity / message can't be resolved for the caller - 403 when the caller has no active grant for the activity's owner

get_get_activity_body

ChatGPT
Delegates to the GraphQL emailBody resolver core (undecorated) so access control (grant ownership + explicit EmailAccessPermission) is enforced in exactly one place. Returns: - 404 when the activity / message can't be resolved for the caller - 403 when the caller has no active grant for the activity's owner

get_get_activity_body

ChatGPT
Delegates to the GraphQL emailBody resolver core (undecorated) so access control (grant ownership + explicit EmailAccessPermission) is enforced in exactly one place. Returns: - 404 when the activity / message can't be resolved for the caller - 403 when the caller has no active grant for the activity's owner

get_get_activity_thread

ChatGPT
Scoped to the caller's tenant (via tenant_uuid) to prevent cross-tenant thread spills. Only EMAIL activities are returned — calendar events share thread_id=None semantics and would muddy the result set. The response is metadata-only. Clients render a thread by fetching this list and then calling /activities/{id}/body for whichever messages they want to expand.

get_get_activity_thread

ChatGPT
Scoped to the caller's tenant (via tenant_uuid) to prevent cross-tenant thread spills. Only EMAIL activities are returned — calendar events share thread_id=None semantics and would muddy the result set. The response is metadata-only. Clients render a thread by fetching this list and then calling /activities/{id}/body for whichever messages they want to expand.

get_get_activity_thread

ChatGPT
Scoped to the caller's tenant (via tenant_uuid) to prevent cross-tenant thread spills. Only EMAIL activities are returned — calendar events share thread_id=None semantics and would muddy the result set. The response is metadata-only. Clients render a thread by fetching this list and then calling /activities/{id}/body for whichever messages they want to expand.

get_get_bulk_pathpower

ChatGPT
Parameters: - entity: person | company (required) - uuids: comma-separated list of entity UUIDs (max 100) Returns a score entry for every UUID in the input list. UUIDs with no PathPower data are included with score=null and strength_label=null. When score is present, strength_label is one of: weak, moderate, strong, very_strong (lowercase, underscore-separated PathPower bands).

get_get_bulk_pathpower

ChatGPT
Parameters: - entity: person | company (required) - uuids: comma-separated list of entity UUIDs (max 100) Returns a score entry for every UUID in the input list. UUIDs with no PathPower data are included with score=null and strength_label=null. When score is present, strength_label is one of: weak, moderate, strong, very_strong (lowercase, underscore-separated PathPower bands).

get_get_bulk_pathpower

ChatGPT
Parameters: - entity: person | company (required) - uuids: comma-separated list of entity UUIDs (max 100) Returns a score entry for every UUID in the input list. UUIDs with no PathPower data are included with score=null and strength_label=null. When score is present, strength_label is one of: weak, moderate, strong, very_strong (lowercase, underscore-separated PathPower bands).

get_get_company

ChatGPT
Get a company by UUID.

get_get_company

ChatGPT
Get a company by UUID.

get_get_company

ChatGPT
Get a company by UUID.

get_get_company_activities

ChatGPT
Returns a paginated list of emails and calendar meetings where any participant is associated with the company, ordered by date descending. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_get_company_activities

ChatGPT
Returns a paginated list of emails and calendar meetings where any participant is associated with the company, ordered by date descending. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_get_company_activities

ChatGPT
Returns a paginated list of emails and calendar meetings where any participant is associated with the company, ordered by date descending. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_get_company_activity_stats

ChatGPT
Returns activity counts (emails, meetings, total) across different time periods.

get_get_company_activity_stats

ChatGPT
Returns activity counts (emails, meetings, total) across different time periods.

get_get_company_activity_stats

ChatGPT
Returns activity counts (emails, meetings, total) across different time periods.

get_get_company_ai_summary

ChatGPT
Returns a cached/prior summary when available. Returns 404 when the entity is not found.

get_get_company_ai_summary

ChatGPT
Returns a cached/prior summary when available. Returns 404 when the entity is not found.

get_get_company_ai_summary

ChatGPT
Returns a cached/prior summary when available. Returns 404 when the entity is not found.

get_get_company_pathpower

ChatGPT
Returns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this company. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows people at this company"), use GET /v1/companies/{company_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated).

get_get_company_pathpower

ChatGPT
Returns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this company. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows people at this company"), use GET /v1/companies/{company_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated).

get_get_company_pathpower

ChatGPT
Returns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this company. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows people at this company"), use GET /v1/companies/{company_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated).

get_get_me

ChatGPT
Designed for MCP and AI agent clients that need to resolve "me", "my", or "I" into concrete UUIDs before calling other endpoints (e.g. fetching activity history or relationship data for the current user). Returns null fields when the API key is tenant-scoped with no user context.

get_get_me

ChatGPT
Designed for MCP and AI agent clients that need to resolve "me", "my", or "I" into concrete UUIDs before calling other endpoints (e.g. fetching activity history or relationship data for the current user). Returns null fields when the API key is tenant-scoped with no user context.

get_get_me

ChatGPT
Designed for MCP and AI agent clients that need to resolve "me", "my", or "I" into concrete UUIDs before calling other endpoints (e.g. fetching activity history or relationship data for the current user). Returns null fields when the API key is tenant-scoped with no user context.

get_get_meeting

ChatGPT
Get a single meeting by activity ID if the user is an internal participant.

get_get_meeting

ChatGPT
Get a single meeting by activity ID if the user is an internal participant.

get_get_meeting

ChatGPT
Get a single meeting by activity ID if the user is an internal participant.

get_get_note

ChatGPT
Reads the row via Note.by_uuid (tenant/ring scoped) and fetches the HTML body from S3. Missing S3 objects degrade to the stored DB excerpt rather than erroring — matches GraphQL parity.

get_get_note

ChatGPT
Reads the row via Note.by_uuid (tenant/ring scoped) and fetches the HTML body from S3. Missing S3 objects degrade to the stored DB excerpt rather than erroring — matches GraphQL parity.

get_get_note

ChatGPT
Reads the row via Note.by_uuid (tenant/ring scoped) and fetches the HTML body from S3. Missing S3 objects degrade to the stored DB excerpt rather than erroring — matches GraphQL parity.

get_get_opportunity

ChatGPT
Returns the complete opportunity including stage, type, owner, intro person, associated persons and companies, custom fields, days in current stage, notes/files count, and activity dates. Returns 404 if the opportunity is not visible in the tenant's ring.

get_get_opportunity

ChatGPT
Returns the complete opportunity including stage, type, owner, intro person, associated persons and companies, custom fields, days in current stage, notes/files count, and activity dates. Returns 404 if the opportunity is not visible in the tenant's ring.

get_get_opportunity

ChatGPT
Returns the complete opportunity including stage, type, owner, intro person, associated persons and companies, custom fields, days in current stage, notes/files count, and activity dates. Returns 404 if the opportunity is not visible in the tenant's ring.

get_get_person

ChatGPT
Returns the full person record including: - strongest_relationships: top 2 internal team members with the strongest connection to this person (use for "who internally knows X" without needing recommended-paths) - pathpower: overall relationship strength score (0.0–1.0) - priority_management.rq: the canonical relationship quality score (0–3). Ignore rq_manual and rq_math — use rq as the single source of truth. - Secondary emails, phone numbers, entity list memberships, company affiliation. Returns 404 if the person is not visible in the tenant's Explorer view.

get_get_person

ChatGPT
Returns the full person record including: - strongest_relationships: top 2 internal team members with the strongest connection to this person (use for "who internally knows X" without needing recommended-paths) - pathpower: overall relationship strength score (0.0–1.0) - priority_management.rq: the canonical relationship quality score (0–3). Ignore rq_manual and rq_math — use rq as the single source of truth. - Secondary emails, phone numbers, entity list memberships, company affiliation. Returns 404 if the person is not visible in the tenant's Explorer view.

get_get_person

ChatGPT
Returns the full person record including: - strongest_relationships: top 2 internal team members with the strongest connection to this person (use for "who internally knows X" without needing recommended-paths) - pathpower: overall relationship strength score (0.0–1.0) - priority_management.rq: the canonical relationship quality score (0–3). Ignore rq_manual and rq_math — use rq as the single source of truth. - Secondary emails, phone numbers, entity list memberships, company affiliation. Returns 404 if the person is not visible in the tenant's Explorer view.

get_get_person_activities

ChatGPT
Returns a paginated list of emails and calendar meetings where the person was a participant, ordered by date descending. Each item includes participants, from/to addresses (for emails), start/end times (for meetings), and attachment counts. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_get_person_activities

ChatGPT
Returns a paginated list of emails and calendar meetings where the person was a participant, ordered by date descending. Each item includes participants, from/to addresses (for emails), start/end times (for meetings), and attachment counts. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_get_person_activities

ChatGPT
Returns a paginated list of emails and calendar meetings where the person was a participant, ordered by date descending. Each item includes participants, from/to addresses (for emails), start/end times (for meetings), and attachment counts. Filter parameters: - type: email | meeting — omit to return both Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_get_person_activity_stats

ChatGPT
Returns activity counts (emails, meetings, total) across different time periods.

get_get_person_activity_stats

ChatGPT
Returns activity counts (emails, meetings, total) across different time periods.

get_get_person_activity_stats

ChatGPT
Returns activity counts (emails, meetings, total) across different time periods.

get_get_person_ai_summary

ChatGPT
Returns a cached/prior summary when available. Returns 404 when the entity is not found.

get_get_person_ai_summary

ChatGPT
Returns a cached/prior summary when available. Returns 404 when the entity is not found.

get_get_person_ai_summary

ChatGPT
Returns a cached/prior summary when available. Returns 404 when the entity is not found.

get_get_person_pathpower

ChatGPT
Returns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this person. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows this person", "introduce me to"), use GET /v1/persons/{person_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated, not plain English labels).

get_get_person_pathpower

ChatGPT
Returns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this person. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows this person", "introduce me to"), use GET /v1/persons/{person_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated, not plain English labels).

get_get_person_pathpower

ChatGPT
Returns a single aggregate score (0.0–1.0) measuring how strongly the tenant's team is connected to this person. This is a numeric strength indicator only — it does NOT return connection paths or introductions. For actual relationship paths ("who knows this person", "introduce me to"), use GET /v1/persons/{person_uuid}/recommended-paths instead. Returns score=null (not 404) when no PathPower data exists. strength_label uses lowercase PathPower bands: weak, moderate, strong, very_strong (underscore-separated, not plain English labels).

get_get_task_endpoint

ChatGPT
Returns the full task including assignments. PERSONAL tasks are only returned for their creator; RING tasks are visible to any tenant member. Returns 404 when the task doesn't exist or isn't visible to the caller.

get_get_task_endpoint

ChatGPT
Returns the full task including assignments. PERSONAL tasks are only returned for their creator; RING tasks are visible to any tenant member. Returns 404 when the task doesn't exist or isn't visible to the caller.

get_get_task_endpoint

ChatGPT
Returns the full task including assignments. PERSONAL tasks are only returned for their creator; RING tasks are visible to any tenant member. Returns 404 when the task doesn't exist or isn't visible to the caller.

get_list_companies

ChatGPT
List companies.

get_list_companies

ChatGPT
List companies.

get_list_companies

ChatGPT
List companies.

get_list_company_opportunities

ChatGPT
Same filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given company as an association.

get_list_company_opportunities

ChatGPT
Same filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given company as an association.

get_list_company_opportunities

ChatGPT
Same filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given company as an association.

get_list_meetings

ChatGPT
Only meetings where the user appears as an internal calendar participant (same scope as in-app meeting tools) are returned. Supports filtering by date range, participant person/company, and title search. Results are sorted by start time descending (most recent first).

get_list_meetings

ChatGPT
Only meetings where the user appears as an internal calendar participant (same scope as in-app meeting tools) are returned. Supports filtering by date range, participant person/company, and title search. Results are sorted by start time descending (most recent first).

get_list_meetings

ChatGPT
Only meetings where the user appears as an internal calendar participant (same scope as in-app meeting tools) are returned. Supports filtering by date range, participant person/company, and title search. Results are sorted by start time descending (most recent first).

get_list_notes

ChatGPT
Supports: - entity_uuid + entity_type: notes associated with that entity (either via the generic associations table or, for PERSON/COMPANY, the legacy rings_*_uuid columns). - search: full-text match over search_vector. - Standard pagination, sort_by, order. Body content is intentionally omitted from the list view; fetch individual notes to get the HTML. The excerpt field is always populated from the cheap DB column.

get_list_notes

ChatGPT
Supports: - entity_uuid + entity_type: notes associated with that entity (either via the generic associations table or, for PERSON/COMPANY, the legacy rings_*_uuid columns). - search: full-text match over search_vector. - Standard pagination, sort_by, order. Body content is intentionally omitted from the list view; fetch individual notes to get the HTML. The excerpt field is always populated from the cheap DB column.

get_list_notes

ChatGPT
Supports: - entity_uuid + entity_type: notes associated with that entity (either via the generic associations table or, for PERSON/COMPANY, the legacy rings_*_uuid columns). - search: full-text match over search_vector. - Standard pagination, sort_by, order. Body content is intentionally omitted from the list view; fetch individual notes to get the HTML. The excerpt field is always populated from the cheap DB column.

get_list_opportunities

ChatGPT
Returns a paginated list of opportunities visible to the tenant ring. Filter parameters (all optional): - name: Case-insensitive substring match on opportunity name - opportunity_type_uuid: Filter by opportunity type UUID (use GET /v1/opportunities to inspect type.uuid on existing records) - opportunity_stage_uuid: Filter by stage UUID Sort parameters: - sort_by: name | created_at | updated_at | value | weighted_value | probability | source_date | intro_date | last_activity_date - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_list_opportunities

ChatGPT
Returns a paginated list of opportunities visible to the tenant ring. Filter parameters (all optional): - name: Case-insensitive substring match on opportunity name - opportunity_type_uuid: Filter by opportunity type UUID (use GET /v1/opportunities to inspect type.uuid on existing records) - opportunity_stage_uuid: Filter by stage UUID Sort parameters: - sort_by: name | created_at | updated_at | value | weighted_value | probability | source_date | intro_date | last_activity_date - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_list_opportunities

ChatGPT
Returns a paginated list of opportunities visible to the tenant ring. Filter parameters (all optional): - name: Case-insensitive substring match on opportunity name - opportunity_type_uuid: Filter by opportunity type UUID (use GET /v1/opportunities to inspect type.uuid on existing records) - opportunity_stage_uuid: Filter by stage UUID Sort parameters: - sort_by: name | created_at | updated_at | value | weighted_value | probability | source_date | intro_date | last_activity_date - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page (default: 50)

get_list_person_opportunities

ChatGPT
Same filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given person as an association.

get_list_person_opportunities

ChatGPT
Same filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given person as an association.

get_list_person_opportunities

ChatGPT
Same filtering, sorting, and pagination as GET /v1/opportunities, but scoped to opportunities that have the given person as an association.

get_list_persons

ChatGPT
Returns a paginated list of people visible to the tenant. All filter parameters are optional — omitting all of them returns all persons. Filter parameters: - name: Case-insensitive substring match on person's display name - email: Exact match on primary email address - linkedin_url: Case-insensitive substring match on LinkedIn profile URL - modified_since: ISO 8601 timestamp — return only persons modified at or after this time (e.g. '2025-01-01T00:00:00Z') Sort parameters: - sort_by: name | last_activity_date (default: unsorted) - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page, max 100 (default: 50)

get_list_persons

ChatGPT
Returns a paginated list of people visible to the tenant. All filter parameters are optional — omitting all of them returns all persons. Filter parameters: - name: Case-insensitive substring match on person's display name - email: Exact match on primary email address - linkedin_url: Case-insensitive substring match on LinkedIn profile URL - modified_since: ISO 8601 timestamp — return only persons modified at or after this time (e.g. '2025-01-01T00:00:00Z') Sort parameters: - sort_by: name | last_activity_date (default: unsorted) - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page, max 100 (default: 50)

get_list_persons

ChatGPT
Returns a paginated list of people visible to the tenant. All filter parameters are optional — omitting all of them returns all persons. Filter parameters: - name: Case-insensitive substring match on person's display name - email: Exact match on primary email address - linkedin_url: Case-insensitive substring match on LinkedIn profile URL - modified_since: ISO 8601 timestamp — return only persons modified at or after this time (e.g. '2025-01-01T00:00:00Z') Sort parameters: - sort_by: name | last_activity_date (default: unsorted) - order: asc | desc (default: asc) Pagination: - page: Page number (default: 1) - per_page: Results per page, max 100 (default: 50)

get_list_tasks

ChatGPT
Returns a paginated list of tasks visible to the caller. PERSONAL tasks created by other users are excluded. ARCHIVED tasks are excluded unless include_archived=true is passed. Filter parameters (all optional): - status: Filter by task status — must be DRAFT, ACTIVE, COMPLETED, or ARCHIVED - priority: Filter by priority — must be LOW, MEDIUM, or HIGH - assigned_to_uuid: Filter tasks assigned to a specific user UUID - created_by_uuid: Filter tasks created by a specific user UUID - associated_entity_uuid: Filter tasks linked to a specific entity UUID - search: Case-insensitive substring search on task title - include_archived: Set to true to include ARCHIVED tasks (default: false) Sort parameters: - sort_by: created_at | updated_at | due_date | priority (default: updated_at) - order: asc | desc (default: desc)

get_list_tasks

ChatGPT
Returns a paginated list of tasks visible to the caller. PERSONAL tasks created by other users are excluded. ARCHIVED tasks are excluded unless include_archived=true is passed. Filter parameters (all optional): - status: Filter by task status — must be DRAFT, ACTIVE, COMPLETED, or ARCHIVED - priority: Filter by priority — must be LOW, MEDIUM, or HIGH - assigned_to_uuid: Filter tasks assigned to a specific user UUID - created_by_uuid: Filter tasks created by a specific user UUID - associated_entity_uuid: Filter tasks linked to a specific entity UUID - search: Case-insensitive substring search on task title - include_archived: Set to true to include ARCHIVED tasks (default: false) Sort parameters: - sort_by: created_at | updated_at | due_date | priority (default: updated_at) - order: asc | desc (default: desc)

get_list_tasks

ChatGPT
Returns a paginated list of tasks visible to the caller. PERSONAL tasks created by other users are excluded. ARCHIVED tasks are excluded unless include_archived=true is passed. Filter parameters (all optional): - status: Filter by task status — must be DRAFT, ACTIVE, COMPLETED, or ARCHIVED - priority: Filter by priority — must be LOW, MEDIUM, or HIGH - assigned_to_uuid: Filter tasks assigned to a specific user UUID - created_by_uuid: Filter tasks created by a specific user UUID - associated_entity_uuid: Filter tasks linked to a specific entity UUID - search: Case-insensitive substring search on task title - include_archived: Set to true to include ARCHIVED tasks (default: false) Sort parameters: - sort_by: created_at | updated_at | due_date | priority (default: updated_at) - order: asc | desc (default: desc)

get_list_users

ChatGPT
Returns active users that can be used with the x-rings-user-id header to enable per-user context on supported endpoints.

get_list_users

ChatGPT
Returns active users that can be used with the x-rings-user-id header to enable per-user context on supported endpoints.

get_list_users

ChatGPT
Returns active users that can be used with the x-rings-user-id header to enable per-user context on supported endpoints.

get_lookup_company

ChatGPT
Lookup a company by domain, LinkedIn URL, or name.

get_lookup_company

ChatGPT
Lookup a company by domain, LinkedIn URL, or name.

get_lookup_company

ChatGPT
Lookup a company by domain, LinkedIn URL, or name.

get_lookup_person

ChatGPT
Searches across tenant-visible persons (including global records). At least one of email, linkedin_url, or domain must be provided. Returns up to limit matches (default 5, max 20), ranked so tenant-specific records appear before global ones. Parameters: - email: Exact email address match (primary or secondary emails) - linkedin_url: LinkedIn profile URL (e.g. 'https://linkedin.com/in/johndoe') - domain: Email domain to match — e.g. 'acme.com' matches 'alice@acme.com' - limit: Max results to return (default: 5, max: 20)

get_lookup_person

ChatGPT
Searches across tenant-visible persons (including global records). At least one of email, linkedin_url, or domain must be provided. Returns up to limit matches (default 5, max 20), ranked so tenant-specific records appear before global ones. Parameters: - email: Exact email address match (primary or secondary emails) - linkedin_url: LinkedIn profile URL (e.g. 'https://linkedin.com/in/johndoe') - domain: Email domain to match — e.g. 'acme.com' matches 'alice@acme.com' - limit: Max results to return (default: 5, max: 20)

get_lookup_person

ChatGPT
Searches across tenant-visible persons (including global records). At least one of email, linkedin_url, or domain must be provided. Returns up to limit matches (default 5, max 20), ranked so tenant-specific records appear before global ones. Parameters: - email: Exact email address match (primary or secondary emails) - linkedin_url: LinkedIn profile URL (e.g. 'https://linkedin.com/in/johndoe') - domain: Email domain to match — e.g. 'acme.com' matches 'alice@acme.com' - limit: Max results to return (default: 5, max: 20)

post_add_note_association

ChatGPT
Delegates to GraphQL addAssociation with parent_entity_type=NOTE. Idempotent on duplicates: if the association already exists the existing row is returned (still status 201 for client simplicity — matches the opportunity association sub-endpoint).

post_add_note_association

ChatGPT
Delegates to GraphQL addAssociation with parent_entity_type=NOTE. Idempotent on duplicates: if the association already exists the existing row is returned (still status 201 for client simplicity — matches the opportunity association sub-endpoint).

post_add_note_association

ChatGPT
Delegates to GraphQL addAssociation with parent_entity_type=NOTE. Idempotent on duplicates: if the association already exists the existing row is returned (still status 201 for client simplicity — matches the opportunity association sub-endpoint).

post_add_opportunity_association

ChatGPT
Mirrors GraphQL addEntityToOpportunity: rejects with 404 when the opportunity or target entity doesn't exist for this tenant. Idempotent on duplicate associations — returns the existing association row rather than erroring.

post_add_opportunity_association

ChatGPT
Mirrors GraphQL addEntityToOpportunity: rejects with 404 when the opportunity or target entity doesn't exist for this tenant. Idempotent on duplicate associations — returns the existing association row rather than erroring.

post_add_opportunity_association

ChatGPT
Mirrors GraphQL addEntityToOpportunity: rejects with 404 when the opportunity or target entity doesn't exist for this tenant. Idempotent on duplicate associations — returns the existing association row rather than erroring.

post_add_task_association

ChatGPT
Links a person, company, note, file, or opportunity to the task. TASK-to-TASK links are not allowed. Returns 201 with the association record; if an identical association already exists the existing record is returned (idempotent). Returns 404 if the task is not visible to the caller. entity_type must be one of: PERSON, COMPANY, NOTE, FILE, OPPORTUNITY.

post_add_task_association

ChatGPT
Links a person, company, note, file, or opportunity to the task. TASK-to-TASK links are not allowed. Returns 201 with the association record; if an identical association already exists the existing record is returned (idempotent). Returns 404 if the task is not visible to the caller. entity_type must be one of: PERSON, COMPANY, NOTE, FILE, OPPORTUNITY.

post_add_task_association

ChatGPT
Links a person, company, note, file, or opportunity to the task. TASK-to-TASK links are not allowed. Returns 201 with the association record; if an identical association already exists the existing record is returned (idempotent). Returns 404 if the task is not visible to the caller. entity_type must be one of: PERSON, COMPANY, NOTE, FILE, OPPORTUNITY.

post_create_company

ChatGPT
Dedupe: if the payload's linkedin_url or website matches an existing tenant-visible company (incl. Crunchbase / Rings Research globals), that record's UUID is reused so the tenant row converges onto the canonical entity instead of forking a duplicate. If no match is found, the downstream write generates a fresh UUID.

post_create_company

ChatGPT
Dedupe: if the payload's linkedin_url or website matches an existing tenant-visible company (incl. Crunchbase / Rings Research globals), that record's UUID is reused so the tenant row converges onto the canonical entity instead of forking a duplicate. If no match is found, the downstream write generates a fresh UUID.

post_create_company

ChatGPT
Dedupe: if the payload's linkedin_url or website matches an existing tenant-visible company (incl. Crunchbase / Rings Research globals), that record's UUID is reused so the tenant row converges onto the canonical entity instead of forking a duplicate. If no match is found, the downstream write generates a fresh UUID.

post_create_note

ChatGPT
Thin wrapper over the GraphQL createNote resolver: full HTML content goes to S3 under the new note UUID, a plain-text excerpt is persisted on the DB row. associations are materialised via the shared create_associations path, silently ignoring entities that can't be resolved for the caller's tenant.

post_create_note

ChatGPT
Thin wrapper over the GraphQL createNote resolver: full HTML content goes to S3 under the new note UUID, a plain-text excerpt is persisted on the DB row. associations are materialised via the shared create_associations path, silently ignoring entities that can't be resolved for the caller's tenant.

post_create_note

ChatGPT
Thin wrapper over the GraphQL createNote resolver: full HTML content goes to S3 under the new note UUID, a plain-text excerpt is persisted on the DB row. associations are materialised via the shared create_associations path, silently ignoring entities that can't be resolved for the caller's tenant.

post_create_opportunity

ChatGPT
Required fields: name, type_uuid, stage_uuid. If the user hasn't specified an opportunity type or stage, ask them before calling this endpoint. To discover valid type_uuid and stage_uuid values, call GET /v1/opportunities and inspect the type.uuid and stage.uuid fields on existing records. Optional: details, value, probability, source_date, intro_date, intro_person_uuid, owner_user_uuid, associations (to link persons/companies). Returns the new opportunity UUID and timestamps on success (201).

post_create_opportunity

ChatGPT
Required fields: name, type_uuid, stage_uuid. If the user hasn't specified an opportunity type or stage, ask them before calling this endpoint. To discover valid type_uuid and stage_uuid values, call GET /v1/opportunities and inspect the type.uuid and stage.uuid fields on existing records. Optional: details, value, probability, source_date, intro_date, intro_person_uuid, owner_user_uuid, associations (to link persons/companies). Returns the new opportunity UUID and timestamps on success (201).

post_create_opportunity

ChatGPT
Required fields: name, type_uuid, stage_uuid. If the user hasn't specified an opportunity type or stage, ask them before calling this endpoint. To discover valid type_uuid and stage_uuid values, call GET /v1/opportunities and inspect the type.uuid and stage.uuid fields on existing records. Optional: details, value, probability, source_date, intro_date, intro_person_uuid, owner_user_uuid, associations (to link persons/companies). Returns the new opportunity UUID and timestamps on success (201).

post_create_person

ChatGPT
All fields are optional. If the provided email matches an existing person in the tenant, the existing record is updated in place and its UUID is returned (deduplication by email). Returns the UUID and rings_updated_at timestamp on success.

post_create_person

ChatGPT
All fields are optional. If the provided email matches an existing person in the tenant, the existing record is updated in place and its UUID is returned (deduplication by email). Returns the UUID and rings_updated_at timestamp on success.

post_create_person

ChatGPT
All fields are optional. If the provided email matches an existing person in the tenant, the existing record is updated in place and its UUID is returned (deduplication by email). Returns the UUID and rings_updated_at timestamp on success.

post_create_task_endpoint

ChatGPT
Creates a task and optionally assigns it to users and associates it with entities (persons, companies, opportunities, etc.) in a single atomic operation. Returns the new task id on success. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED (default: ACTIVE) - priority: LOW | MEDIUM | HIGH - visibility: RING (all tenant members) | PERSONAL (creator only, default: RING) - reminder_type: MINUTES | HOURS | DAYS | WEEKS (requires reminder_value)

post_create_task_endpoint

ChatGPT
Creates a task and optionally assigns it to users and associates it with entities (persons, companies, opportunities, etc.) in a single atomic operation. Returns the new task id on success. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED (default: ACTIVE) - priority: LOW | MEDIUM | HIGH - visibility: RING (all tenant members) | PERSONAL (creator only, default: RING) - reminder_type: MINUTES | HOURS | DAYS | WEEKS (requires reminder_value)

post_create_task_endpoint

ChatGPT
Creates a task and optionally assigns it to users and associates it with entities (persons, companies, opportunities, etc.) in a single atomic operation. Returns the new task id on success. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED (default: ACTIVE) - priority: LOW | MEDIUM | HIGH - visibility: RING (all tenant members) | PERSONAL (creator only, default: RING) - reminder_type: MINUTES | HOURS | DAYS | WEEKS (requires reminder_value)

post_lookup_companies_batch

ChatGPT
Each entry in queries is resolved independently using the same matching semantics as GET /v1/companies/lookup. Results are returned in the same order as the input.

post_lookup_companies_batch

ChatGPT
Each entry in queries is resolved independently using the same matching semantics as GET /v1/companies/lookup. Results are returned in the same order as the input.

post_lookup_companies_batch

ChatGPT
Each entry in queries is resolved independently using the same matching semantics as GET /v1/companies/lookup. Results are returned in the same order as the input.

post_lookup_persons_batch

ChatGPT
Each entry in queries is matched independently using the same semantics as GET /v1/persons/lookup (email, linkedin_url, or domain match). Results are returned in the same order as the input queries. Entries with no matching criteria return empty matches rather than an error.

post_lookup_persons_batch

ChatGPT
Each entry in queries is matched independently using the same semantics as GET /v1/persons/lookup (email, linkedin_url, or domain match). Results are returned in the same order as the input queries. Entries with no matching criteria return empty matches rather than an error.

post_lookup_persons_batch

ChatGPT
Each entry in queries is matched independently using the same semantics as GET /v1/persons/lookup (email, linkedin_url, or domain match). Results are returned in the same order as the input queries. Entries with no matching criteria return empty matches rather than an error.

post_search_notes

ChatGPT
Performs hybrid vector + full-text search and returns results grouped by source note with matching text snippets.

post_search_notes

ChatGPT
Performs hybrid vector + full-text search and returns results grouped by source note with matching text snippets.

post_search_notes

ChatGPT
Performs hybrid vector + full-text search and returns results grouped by source note with matching text snippets.

put_update_company

ChatGPT
Only fields provided in the request body are written; other attributes on the existing record are preserved. Returns 404 if the company is not visible in the tenant Explorer view.

put_update_company

ChatGPT
Only fields provided in the request body are written; other attributes on the existing record are preserved. Returns 404 if the company is not visible in the tenant Explorer view.

put_update_company

ChatGPT
Only fields provided in the request body are written; other attributes on the existing record are preserved. Returns 404 if the company is not visible in the tenant Explorer view.

put_update_note

ChatGPT
Only provided fields are written. If content is provided the S3 object is re-uploaded and the excerpt on the DB row is refreshed; omitting content leaves the stored HTML untouched. 404s when the note isn't visible for the caller's tenant.

put_update_note

ChatGPT
Only provided fields are written. If content is provided the S3 object is re-uploaded and the excerpt on the DB row is refreshed; omitting content leaves the stored HTML untouched. 404s when the note isn't visible for the caller's tenant.

put_update_note

ChatGPT
Only provided fields are written. If content is provided the S3 object is re-uploaded and the excerpt on the DB row is refreshed; omitting content leaves the stored HTML untouched. 404s when the note isn't visible for the caller's tenant.

put_update_opportunity

ChatGPT
Only fields present in the request body are written; other attributes on the existing record are preserved. Association edits go through the dedicated associations sub-resource (see below). Returns 404 if the opportunity is not visible under the tenant's ring.

put_update_opportunity

ChatGPT
Only fields present in the request body are written; other attributes on the existing record are preserved. Association edits go through the dedicated associations sub-resource (see below). Returns 404 if the opportunity is not visible under the tenant's ring.

put_update_opportunity

ChatGPT
Only fields present in the request body are written; other attributes on the existing record are preserved. Association edits go through the dedicated associations sub-resource (see below). Returns 404 if the opportunity is not visible under the tenant's ring.

put_update_person

ChatGPT
Fields omitted from the request body are left unchanged on the existing record. Returns 404 if the person UUID is not visible in the tenant's Explorer view. Returns the UUID and updated rings_updated_at timestamp on success.

put_update_person

ChatGPT
Fields omitted from the request body are left unchanged on the existing record. Returns 404 if the person UUID is not visible in the tenant's Explorer view. Returns the UUID and updated rings_updated_at timestamp on success.

put_update_person

ChatGPT
Fields omitted from the request body are left unchanged on the existing record. Returns 404 if the person UUID is not visible in the tenant's Explorer view. Returns the UUID and updated rings_updated_at timestamp on success.

put_update_task_endpoint

ChatGPT
Omitted fields are left unchanged on the existing record. To mark a task as done, set status="COMPLETED". To remove a due date, pass clear_due_date=true instead of setting due_date to null. To remove a reminder, pass clear_reminder=true. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED - priority: LOW | MEDIUM | HIGH - visibility: RING | PERSONAL - reminder_type: MINUTES | HOURS | DAYS | WEEKS

put_update_task_endpoint

ChatGPT
Omitted fields are left unchanged on the existing record. To mark a task as done, set status="COMPLETED". To remove a due date, pass clear_due_date=true instead of setting due_date to null. To remove a reminder, pass clear_reminder=true. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED - priority: LOW | MEDIUM | HIGH - visibility: RING | PERSONAL - reminder_type: MINUTES | HOURS | DAYS | WEEKS

put_update_task_endpoint

ChatGPT
Omitted fields are left unchanged on the existing record. To mark a task as done, set status="COMPLETED". To remove a due date, pass clear_due_date=true instead of setting due_date to null. To remove a reminder, pass clear_reminder=true. Enum values (case-sensitive, uppercase): - status: DRAFT | ACTIVE | COMPLETED | ARCHIVED - priority: LOW | MEDIUM | HIGH - visibility: RING | PERSONAL - reminder_type: MINUTES | HOURS | DAYS | WEEKS

Capabilities

Writes

App Stats

159

Tools

ChatGPT

Platforms

Category

CRM Records

Works with

ChatGPT

Data refreshed daily