terse-types 0.0.71 → 0.0.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ApiRouteBuilder.d.ts +1 -0
- package/dist/ApiRoutes.json +2 -1
- package/dist/Events.d.ts +112 -0
- package/dist/Events.js +32 -0
- package/dist/ToolDisplayUtils.js +108 -40
- package/dist/Tools.d.ts +3039 -389
- package/dist/Tools.js +585 -43
- package/dist/TriggerProjections.d.ts +18 -0
- package/dist/TriggerProjections.js +167 -0
- package/dist/types.d.ts +16 -2
- package/package.json +1 -1
- package/dist/AttioRecordFlatten.d.ts +0 -19
- package/dist/AttioRecordFlatten.js +0 -71
- package/dist/OrganizationMetadata.d.ts +0 -6
- package/dist/OrganizationMetadata.js +0 -10
- package/dist/json-schema/terse-types.schema.json +0 -15994
package/dist/Tools.js
CHANGED
|
@@ -1561,7 +1561,10 @@ export const attioAttributeSchema = z
|
|
|
1561
1561
|
title: z.string().optional(),
|
|
1562
1562
|
type: z.string().optional(),
|
|
1563
1563
|
is_required: z.boolean().optional(),
|
|
1564
|
-
is_unique: z.boolean().optional()
|
|
1564
|
+
is_unique: z.boolean().optional(),
|
|
1565
|
+
is_multiselect: z.boolean().optional(),
|
|
1566
|
+
/** Active option/status titles, populated for select and status attributes when fetched for codegen. */
|
|
1567
|
+
options: z.array(z.string()).optional()
|
|
1565
1568
|
})
|
|
1566
1569
|
.catchall(z.unknown());
|
|
1567
1570
|
export const attioObjectWithAttributesSchema = attioObjectSchema.extend({
|
|
@@ -1582,10 +1585,158 @@ export const attioRecordSchema = z
|
|
|
1582
1585
|
created_at: z.string().optional()
|
|
1583
1586
|
})
|
|
1584
1587
|
.catchall(z.unknown());
|
|
1585
|
-
export const
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1588
|
+
export const attioSearchMatchSchema = z
|
|
1589
|
+
.object({
|
|
1590
|
+
id: attioRecordIdentifierSchema.optional(),
|
|
1591
|
+
record_text: z.string().optional(),
|
|
1592
|
+
object_slug: z.string().optional()
|
|
1593
|
+
})
|
|
1594
|
+
.catchall(z.unknown());
|
|
1595
|
+
export const attioAttributeHistoryEntrySchema = z
|
|
1596
|
+
.object({
|
|
1597
|
+
active_from: z.string(),
|
|
1598
|
+
active_until: z.string().nullable(),
|
|
1599
|
+
attribute_type: z.string().optional()
|
|
1600
|
+
})
|
|
1601
|
+
.catchall(z.unknown());
|
|
1602
|
+
export const attioTaskSchema = z
|
|
1603
|
+
.object({
|
|
1604
|
+
id: z.object({ workspace_id: z.string(), task_id: z.string() }),
|
|
1605
|
+
content_plaintext: z.string(),
|
|
1606
|
+
deadline_at: z.string().nullable(),
|
|
1607
|
+
is_completed: z.boolean(),
|
|
1608
|
+
linked_records: z.array(z.object({ target_object_id: z.string(), target_record_id: z.string() }).catchall(z.unknown())),
|
|
1609
|
+
assignees: z.array(z.object({ referenced_actor_type: z.string(), referenced_actor_id: z.string().nullable() }).catchall(z.unknown())),
|
|
1610
|
+
created_at: z.string()
|
|
1611
|
+
})
|
|
1612
|
+
.catchall(z.unknown());
|
|
1613
|
+
export const attioNoteSchema = z
|
|
1614
|
+
.object({
|
|
1615
|
+
id: z.object({ workspace_id: z.string(), note_id: z.string() }),
|
|
1616
|
+
parent_object: z.string(),
|
|
1617
|
+
parent_record_id: z.string(),
|
|
1618
|
+
title: z.string(),
|
|
1619
|
+
content_plaintext: z.string().nullable(),
|
|
1620
|
+
content_markdown: z.string().nullable(),
|
|
1621
|
+
created_at: z.string()
|
|
1622
|
+
})
|
|
1623
|
+
.catchall(z.unknown());
|
|
1624
|
+
export const attioCommentSchema = z
|
|
1625
|
+
.object({
|
|
1626
|
+
id: z.object({ workspace_id: z.string(), comment_id: z.string() }),
|
|
1627
|
+
thread_id: z.string(),
|
|
1628
|
+
content_plaintext: z.string(),
|
|
1629
|
+
author: z.record(z.string(), z.unknown()),
|
|
1630
|
+
resolved_at: z.string().nullable(),
|
|
1631
|
+
created_at: z.string()
|
|
1632
|
+
})
|
|
1633
|
+
.catchall(z.unknown());
|
|
1634
|
+
export const attioThreadSchema = z
|
|
1635
|
+
.object({
|
|
1636
|
+
id: z.object({ workspace_id: z.string(), thread_id: z.string() }),
|
|
1637
|
+
comments: z.array(attioCommentSchema),
|
|
1638
|
+
created_at: z.string()
|
|
1639
|
+
})
|
|
1640
|
+
.catchall(z.unknown());
|
|
1641
|
+
export const attioListSchema = z
|
|
1642
|
+
.object({
|
|
1643
|
+
id: z.object({ workspace_id: z.string(), list_id: z.string() }),
|
|
1644
|
+
api_slug: z.string(),
|
|
1645
|
+
name: z.string(),
|
|
1646
|
+
parent_object: z.array(z.string()).or(z.string()),
|
|
1647
|
+
created_at: z.string(),
|
|
1648
|
+
/** Synthesized by Terse from the workspace slug; the Attio API does not return list URLs. */
|
|
1649
|
+
web_url: z.string().optional()
|
|
1650
|
+
})
|
|
1651
|
+
.catchall(z.unknown());
|
|
1652
|
+
export const attioListEntrySchema = z
|
|
1653
|
+
.object({
|
|
1654
|
+
id: z.object({ workspace_id: z.string(), list_id: z.string(), entry_id: z.string() }),
|
|
1655
|
+
parent_record_id: z.string(),
|
|
1656
|
+
parent_object: z.string(),
|
|
1657
|
+
entry_values: z.record(z.string(), z.unknown()),
|
|
1658
|
+
created_at: z.string()
|
|
1659
|
+
})
|
|
1660
|
+
.catchall(z.unknown());
|
|
1661
|
+
export const attioMeetingTimeSchema = z
|
|
1662
|
+
.object({
|
|
1663
|
+
datetime: z.string().optional(),
|
|
1664
|
+
timezone: z.string().nullable().optional(),
|
|
1665
|
+
date: z.string().optional()
|
|
1666
|
+
})
|
|
1667
|
+
.catchall(z.unknown());
|
|
1668
|
+
export const attioMeetingSchema = z
|
|
1669
|
+
.object({
|
|
1670
|
+
id: z.object({ workspace_id: z.string(), meeting_id: z.string() }),
|
|
1671
|
+
title: z.string().nullable(),
|
|
1672
|
+
description: z.string().nullable().optional(),
|
|
1673
|
+
is_all_day: z.boolean().optional(),
|
|
1674
|
+
start: attioMeetingTimeSchema.optional(),
|
|
1675
|
+
end: attioMeetingTimeSchema.optional(),
|
|
1676
|
+
participants: z.array(z.record(z.string(), z.unknown())),
|
|
1677
|
+
linked_records: z.array(z.record(z.string(), z.unknown())),
|
|
1678
|
+
created_at: z.string()
|
|
1679
|
+
})
|
|
1680
|
+
.catchall(z.unknown());
|
|
1681
|
+
export const attioStatusSchema = z
|
|
1682
|
+
.object({
|
|
1683
|
+
id: z.object({ workspace_id: z.string().optional(), object_id: z.string().optional(), attribute_id: z.string().optional(), status_id: z.string().optional() }).catchall(z.unknown()),
|
|
1684
|
+
title: z.string(),
|
|
1685
|
+
is_archived: z.boolean()
|
|
1686
|
+
})
|
|
1687
|
+
.catchall(z.unknown());
|
|
1688
|
+
export const attioSelectOptionEntitySchema = z
|
|
1689
|
+
.object({
|
|
1690
|
+
id: z.object({ workspace_id: z.string().optional(), object_id: z.string().optional(), attribute_id: z.string().optional(), option_id: z.string().optional() }).catchall(z.unknown()),
|
|
1691
|
+
title: z.string(),
|
|
1692
|
+
is_archived: z.boolean()
|
|
1693
|
+
})
|
|
1694
|
+
.catchall(z.unknown());
|
|
1695
|
+
export const attioCallRecordingSchema = z
|
|
1696
|
+
.object({
|
|
1697
|
+
id: z.object({ workspace_id: z.string(), meeting_id: z.string(), call_recording_id: z.string() }),
|
|
1698
|
+
status: z.string(),
|
|
1699
|
+
created_at: z.string()
|
|
1700
|
+
})
|
|
1701
|
+
.catchall(z.unknown());
|
|
1702
|
+
export const attioTranscriptSpeechSchema = z
|
|
1703
|
+
.object({
|
|
1704
|
+
speech: z.string(),
|
|
1705
|
+
start_time: z.number().optional(),
|
|
1706
|
+
end_time: z.number().optional()
|
|
1707
|
+
})
|
|
1708
|
+
.catchall(z.unknown());
|
|
1709
|
+
export const attioTranscriptSchema = z
|
|
1710
|
+
.object({
|
|
1711
|
+
id: z.object({ workspace_id: z.string(), meeting_id: z.string(), call_recording_id: z.string() }).optional(),
|
|
1712
|
+
transcript: z.array(attioTranscriptSpeechSchema)
|
|
1713
|
+
})
|
|
1714
|
+
.catchall(z.unknown());
|
|
1715
|
+
export const attioFileSchema = z
|
|
1716
|
+
.object({
|
|
1717
|
+
id: z.record(z.string(), z.unknown()),
|
|
1718
|
+
name: z.string(),
|
|
1719
|
+
content_type: z.string().nullable().optional(),
|
|
1720
|
+
content_size: z.number().nullable().optional(),
|
|
1721
|
+
record_id: z.string().optional(),
|
|
1722
|
+
object_slug: z.string().optional(),
|
|
1723
|
+
created_at: z.string()
|
|
1724
|
+
})
|
|
1725
|
+
.catchall(z.unknown());
|
|
1726
|
+
export const attioWorkspaceMemberSchema = z
|
|
1727
|
+
.object({
|
|
1728
|
+
id: z.object({
|
|
1729
|
+
workspace_id: z.string(),
|
|
1730
|
+
workspace_member_id: z.string()
|
|
1731
|
+
}),
|
|
1732
|
+
first_name: z.string().nullable(),
|
|
1733
|
+
last_name: z.string().nullable(),
|
|
1734
|
+
avatar_url: z.string().nullable(),
|
|
1735
|
+
email_address: z.string(),
|
|
1736
|
+
access_level: z.string(),
|
|
1737
|
+
created_at: z.string()
|
|
1738
|
+
})
|
|
1739
|
+
.catchall(z.unknown());
|
|
1589
1740
|
// WorkOS schemas
|
|
1590
1741
|
export const workOSUserSummarySchema = z.object({
|
|
1591
1742
|
id: z.string(),
|
|
@@ -1654,25 +1805,328 @@ export const launchDarklyHistoryResultSchema = z.object({
|
|
|
1654
1805
|
// Snowflake schemas
|
|
1655
1806
|
export const snowflakeQueryRowSchema = z.record(z.string(), z.unknown());
|
|
1656
1807
|
// Attio input schemas
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
objectSlug: z.string().describe("The Attio object type slug (e.g. 'people', 'companies')."),
|
|
1808
|
+
const attioObjectSlugField = z.string().describe("The Attio object type slug (e.g. 'people', 'companies').");
|
|
1809
|
+
const attioRecordIdField = z.string().describe("The record ID (UUID).");
|
|
1810
|
+
export const attioQueryRecordsRequestSchema = z.object({
|
|
1811
|
+
action: z.literal("query").describe("List records of an object, with optional filtering and limit/offset pagination."),
|
|
1812
|
+
objectSlug: attioObjectSlugField,
|
|
1663
1813
|
filter: z
|
|
1664
1814
|
.string()
|
|
1665
1815
|
.nullable()
|
|
1666
|
-
.describe('Optional Attio filter as a JSON string.
|
|
1667
|
-
limit: z.number().int().nullable().describe("Maximum number of records to return. Pass null
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1816
|
+
.describe('Optional Attio filter as a JSON string. Use shorthand (e.g. \'{"email_addresses":"test@example.com"}\') or verbose syntax with operators ($eq, $contains, $starts_with, $ends_with) combined via $and/$or. Pass null for no filtering.'),
|
|
1817
|
+
limit: z.number().int().nullable().describe("Maximum number of records to return (default 20, max 500). Pass null for the default."),
|
|
1818
|
+
offset: z.number().int().nullable().describe("Number of records to skip, for pagination. Pass null for 0.")
|
|
1819
|
+
});
|
|
1820
|
+
export const attioSearchRecordsRequestSchema = z.object({
|
|
1821
|
+
action: z
|
|
1822
|
+
.literal("search")
|
|
1823
|
+
.describe("Fuzzy-search records following Attio's in-product matching: names/domains/emails/phones on people and companies, the record label on other objects (e.g. deal names). Query with a distinctive substring of the target; extra tokens that are not in the record's name can prevent matches. Results are eventually consistent (a just-created record may not be indexed yet) — use 'query' for read-after-write."),
|
|
1824
|
+
objectSlug: attioObjectSlugField,
|
|
1825
|
+
query: z.string().describe("The search term, matched fuzzily against record names, email addresses and domains (max 256 chars)."),
|
|
1826
|
+
limit: z.number().int().nullable().describe("Maximum number of matches to return (default and max 25). Pass null for the default.")
|
|
1827
|
+
});
|
|
1828
|
+
export const attioGetRecordRequestSchema = z.object({
|
|
1829
|
+
action: z.literal("get").describe("Fetch a single record by its ID."),
|
|
1830
|
+
objectSlug: attioObjectSlugField,
|
|
1831
|
+
recordId: attioRecordIdField
|
|
1832
|
+
});
|
|
1833
|
+
export const attioCreateRecordRequestSchema = z.object({
|
|
1834
|
+
action: z.literal("create").describe("Create a new record. Unlike 'upsert', no matching attribute is needed, so this works for objects without a unique writable attribute (e.g. deals)."),
|
|
1835
|
+
objectSlug: attioObjectSlugField,
|
|
1836
|
+
values: z.string().describe('A JSON object string mapping attribute slugs to values (e.g. \'{"name":"Acme","domains":["acme.com"]}\'). For multi-value attributes, pass an array.')
|
|
1837
|
+
});
|
|
1838
|
+
export const attioUpdateRecordRequestSchema = z.object({
|
|
1839
|
+
action: z.literal("update").describe("Update an existing record by its ID. Only the attributes present in 'values' are touched."),
|
|
1840
|
+
objectSlug: attioObjectSlugField,
|
|
1841
|
+
recordId: attioRecordIdField,
|
|
1842
|
+
values: z.string().describe("A JSON object string mapping the attribute slugs to update to their new values."),
|
|
1843
|
+
multiselectMode: z
|
|
1844
|
+
.enum(["overwrite", "append"])
|
|
1845
|
+
.nullable()
|
|
1846
|
+
.describe("'overwrite' (the default) replaces the values of multi-value attributes; 'append' adds to them without removing existing values. Pass null for the default.")
|
|
1847
|
+
});
|
|
1848
|
+
export const attioUpsertRecordsRequestSchema = z.object({
|
|
1849
|
+
action: z
|
|
1850
|
+
.literal("upsert")
|
|
1851
|
+
.describe("Create or update one or more records, matched on a unique attribute. If a match is found the record is updated, otherwise a new one is created. Throws if ANY record in the batch fails, naming each failure; earlier records may already be written (upserts are safe to retry)."),
|
|
1852
|
+
objectSlug: attioObjectSlugField,
|
|
1853
|
+
matchingAttribute: z.string().describe("The unique, writable attribute slug to match on (e.g. 'email_addresses' for people, 'domains' for companies)."),
|
|
1673
1854
|
records: z
|
|
1674
1855
|
.string()
|
|
1675
|
-
.describe('A JSON string representing a list of
|
|
1856
|
+
.describe('A JSON string representing a list of records to upsert. Each record maps attribute slugs to values; for multi-value attributes pass an array. Example: \'[{"email_addresses":["test@example.com"],"name":"John"}]\'.')
|
|
1857
|
+
});
|
|
1858
|
+
export const attioDeleteRecordRequestSchema = z.object({
|
|
1859
|
+
action: z.literal("delete").describe("Permanently delete a record by its ID. This cannot be undone."),
|
|
1860
|
+
objectSlug: attioObjectSlugField,
|
|
1861
|
+
recordId: attioRecordIdField
|
|
1862
|
+
});
|
|
1863
|
+
export const attioGetAttributeHistoryRequestSchema = z.object({
|
|
1864
|
+
action: z.literal("get_attribute_history").describe("Fetch the historic values of one attribute on a record (e.g. every stage a deal has been in)."),
|
|
1865
|
+
objectSlug: attioObjectSlugField,
|
|
1866
|
+
recordId: attioRecordIdField,
|
|
1867
|
+
attributeSlug: z.string().describe("The attribute slug to fetch the value history for."),
|
|
1868
|
+
limit: z.number().int().nullable().describe("Maximum number of history entries to return. Pass null for the default."),
|
|
1869
|
+
offset: z.number().int().nullable().describe("Number of entries to skip, for pagination. Pass null for 0.")
|
|
1870
|
+
});
|
|
1871
|
+
export const attioRecordsRequestSchema = z.discriminatedUnion("action", [
|
|
1872
|
+
attioQueryRecordsRequestSchema,
|
|
1873
|
+
attioSearchRecordsRequestSchema,
|
|
1874
|
+
attioGetRecordRequestSchema,
|
|
1875
|
+
attioCreateRecordRequestSchema,
|
|
1876
|
+
attioUpdateRecordRequestSchema,
|
|
1877
|
+
attioUpsertRecordsRequestSchema,
|
|
1878
|
+
attioDeleteRecordRequestSchema,
|
|
1879
|
+
attioGetAttributeHistoryRequestSchema
|
|
1880
|
+
]);
|
|
1881
|
+
export const attioRecordsInputSchema = z.object({
|
|
1882
|
+
integrationId: z.string().describe("The integration ID of the Attio workspace to use."),
|
|
1883
|
+
request: attioRecordsRequestSchema.describe("The record operation to perform and its arguments.")
|
|
1884
|
+
});
|
|
1885
|
+
const attioTargetRecordFields = {
|
|
1886
|
+
objectSlug: z.string().describe("The object type slug of the record (e.g. 'people', 'companies')."),
|
|
1887
|
+
recordId: z.string().describe("The record ID (UUID).")
|
|
1888
|
+
};
|
|
1889
|
+
export const attioTasksRequestSchema = z.discriminatedUnion("action", [
|
|
1890
|
+
z.object({
|
|
1891
|
+
action: z.literal("list").describe("List tasks, optionally filtered by linked record, assignee or completion state."),
|
|
1892
|
+
linkedObjectSlug: z.string().nullable().optional().describe("Filter to tasks linked to records of this object slug. Requires linkedRecordId."),
|
|
1893
|
+
linkedRecordId: z.string().nullable().optional().describe("Filter to tasks linked to this record ID."),
|
|
1894
|
+
isCompleted: z.boolean().nullable().optional().describe("Filter by completion state. Omit for all tasks."),
|
|
1895
|
+
limit: z.number().int().nullable().optional().describe("Maximum tasks to return."),
|
|
1896
|
+
offset: z.number().int().nullable().optional().describe("Number of tasks to skip, for pagination.")
|
|
1897
|
+
}),
|
|
1898
|
+
z.object({ action: z.literal("get").describe("Fetch a single task by ID."), taskId: z.string() }),
|
|
1899
|
+
z.object({
|
|
1900
|
+
action: z.literal("create").describe("Create a task, optionally linked to records and assigned to workspace members."),
|
|
1901
|
+
content: z.string().describe("The task text (plaintext, max 2000 chars)."),
|
|
1902
|
+
deadlineAt: z.string().nullable().optional().describe("Deadline as an ISO 8601 timestamp, or null for no deadline."),
|
|
1903
|
+
isCompleted: z.boolean().nullable().optional().describe("Whether the task starts completed. Defaults to false."),
|
|
1904
|
+
assignees: z.array(z.string()).nullable().optional().describe("Workspace member email addresses or member IDs (UUIDs) to assign."),
|
|
1905
|
+
linkedRecords: z.array(z.object(attioTargetRecordFields)).nullable().optional().describe("Records to link the task to.")
|
|
1906
|
+
}),
|
|
1907
|
+
z.object({
|
|
1908
|
+
action: z.literal("update").describe("Update a task's deadline, completion state, assignees or linked records. Task content cannot be changed."),
|
|
1909
|
+
taskId: z.string(),
|
|
1910
|
+
deadlineAt: z.string().nullable().optional().describe("New deadline (ISO 8601), or null to clear."),
|
|
1911
|
+
isCompleted: z.boolean().nullable().optional().describe("New completion state. Omit to leave unchanged."),
|
|
1912
|
+
assignees: z.array(z.string()).nullable().optional().describe("Replacement assignee emails/IDs. Omit to leave unchanged."),
|
|
1913
|
+
linkedRecords: z.array(z.object(attioTargetRecordFields)).nullable().optional().describe("Replacement linked records. Omit to leave unchanged.")
|
|
1914
|
+
}),
|
|
1915
|
+
z.object({ action: z.literal("delete").describe("Permanently delete a task."), taskId: z.string() })
|
|
1916
|
+
]);
|
|
1917
|
+
export const attioNotesRequestSchema = z.discriminatedUnion("action", [
|
|
1918
|
+
z.object({
|
|
1919
|
+
action: z.literal("list").describe("List notes, optionally scoped to one record."),
|
|
1920
|
+
parentObjectSlug: z.string().nullable().optional().describe("Filter to notes on records of this object slug. Requires parentRecordId."),
|
|
1921
|
+
parentRecordId: z.string().nullable().optional().describe("Filter to notes on this record ID."),
|
|
1922
|
+
limit: z.number().int().nullable().optional(),
|
|
1923
|
+
offset: z.number().int().nullable().optional()
|
|
1924
|
+
}),
|
|
1925
|
+
z.object({ action: z.literal("get").describe("Fetch a single note by ID."), noteId: z.string() }),
|
|
1926
|
+
z.object({
|
|
1927
|
+
action: z.literal("create").describe("Create a note on a record."),
|
|
1928
|
+
parentObjectSlug: z.string().describe("The object type slug of the record the note belongs to."),
|
|
1929
|
+
parentRecordId: z.string().describe("The record ID the note belongs to."),
|
|
1930
|
+
title: z.string().describe("The note title."),
|
|
1931
|
+
content: z.string().describe("The note body."),
|
|
1932
|
+
format: z.enum(["plaintext", "markdown"]).nullable().optional().describe("Content format. Defaults to markdown.")
|
|
1933
|
+
}),
|
|
1934
|
+
z.object({ action: z.literal("delete").describe("Permanently delete a note."), noteId: z.string() })
|
|
1935
|
+
]);
|
|
1936
|
+
export const attioCommentsRequestSchema = z.discriminatedUnion("action", [
|
|
1937
|
+
z.object({
|
|
1938
|
+
action: z.literal("create").describe("Create a comment. Target EITHER an existing thread (threadId, to reply) OR a record (objectSlug + recordId, to start a new thread)."),
|
|
1939
|
+
content: z.string().describe("The comment text (plaintext)."),
|
|
1940
|
+
authorWorkspaceMemberId: z.string().describe("The workspace member ID the comment is authored as. Use attio_workspace_members to find it."),
|
|
1941
|
+
threadId: z.string().nullable().optional().describe("Reply to this thread. Pass null/omit when commenting on a record."),
|
|
1942
|
+
objectSlug: z.string().nullable().optional().describe("With recordId: start a new comment thread on this record."),
|
|
1943
|
+
recordId: z.string().nullable().optional()
|
|
1944
|
+
}),
|
|
1945
|
+
z.object({ action: z.literal("get").describe("Fetch a single comment by ID."), commentId: z.string() }),
|
|
1946
|
+
z.object({ action: z.literal("delete").describe("Permanently delete a comment."), commentId: z.string() }),
|
|
1947
|
+
z.object({
|
|
1948
|
+
action: z.literal("list_threads").describe("List comment threads on a record."),
|
|
1949
|
+
objectSlug: z.string().nullable().optional().describe("With recordId: threads on this record."),
|
|
1950
|
+
recordId: z.string().nullable().optional(),
|
|
1951
|
+
limit: z.number().int().nullable().optional(),
|
|
1952
|
+
offset: z.number().int().nullable().optional()
|
|
1953
|
+
}),
|
|
1954
|
+
z.object({ action: z.literal("get_thread").describe("Fetch a thread with all of its comments."), threadId: z.string() })
|
|
1955
|
+
]);
|
|
1956
|
+
export const attioListsRequestSchema = z.discriminatedUnion("action", [
|
|
1957
|
+
z.object({ action: z.literal("list").describe("List all lists in the workspace.") }),
|
|
1958
|
+
z.object({ action: z.literal("get").describe("Fetch a list's configuration by ID or slug."), listIdOrSlug: z.string() }),
|
|
1959
|
+
z.object({
|
|
1960
|
+
action: z.literal("create").describe("Create a new list over an object."),
|
|
1961
|
+
name: z.string().describe("Display name of the list."),
|
|
1962
|
+
apiSlug: z.string().describe("Unique slug for the list (snake_case)."),
|
|
1963
|
+
parentObjectSlug: z.string().describe("The object the list contains records of (e.g. 'companies')."),
|
|
1964
|
+
workspaceAccess: z.enum(["full-access", "read-and-write", "read-only"]).nullable().optional().describe("Workspace-wide access level. Defaults to full-access.")
|
|
1965
|
+
}),
|
|
1966
|
+
z.object({ action: z.literal("update").describe("Rename a list."), listIdOrSlug: z.string(), name: z.string() }),
|
|
1967
|
+
z.object({
|
|
1968
|
+
action: z.literal("query_entries").describe("List entries in a list, with optional filter, parent-record lookup, and limit/offset pagination."),
|
|
1969
|
+
listIdOrSlug: z.string(),
|
|
1970
|
+
filter: z.string().nullable().optional().describe("Optional Attio filter as a JSON string, matching entry attributes."),
|
|
1971
|
+
parentRecordId: z.string().nullable().optional().describe("Only return entries whose parent record has this ID. Requires parentObjectSlug."),
|
|
1972
|
+
parentObjectSlug: z.string().nullable().optional().describe("Object slug of the parent record (e.g. 'companies'); required with parentRecordId."),
|
|
1973
|
+
limit: z.number().int().nullable().optional().describe("Maximum entries to return (max 500)."),
|
|
1974
|
+
offset: z.number().int().nullable().optional()
|
|
1975
|
+
}),
|
|
1976
|
+
z.object({
|
|
1977
|
+
action: z.literal("add_entry").describe("Add a record to a list as a new entry. Throws on unique-attribute conflicts; the same record may appear in multiple entries."),
|
|
1978
|
+
listIdOrSlug: z.string(),
|
|
1979
|
+
parentObjectSlug: z.string().describe("Object slug of the record being added."),
|
|
1980
|
+
parentRecordId: z.string().describe("Record ID being added."),
|
|
1981
|
+
entryValues: z.string().nullable().optional().describe("Optional JSON object string of entry attribute values (e.g. a stage).")
|
|
1982
|
+
}),
|
|
1983
|
+
z.object({
|
|
1984
|
+
action: z.literal("upsert_entry").describe("Create or update a list entry keyed by its parent record: updates the existing entry if the record is already in the list, otherwise adds it."),
|
|
1985
|
+
listIdOrSlug: z.string(),
|
|
1986
|
+
parentObjectSlug: z.string(),
|
|
1987
|
+
parentRecordId: z.string(),
|
|
1988
|
+
entryValues: z.string().nullable().optional().describe("Optional JSON object string of entry attribute values.")
|
|
1989
|
+
}),
|
|
1990
|
+
z.object({ action: z.literal("get_entry").describe("Fetch a single list entry."), listIdOrSlug: z.string(), entryId: z.string() }),
|
|
1991
|
+
z.object({
|
|
1992
|
+
action: z.literal("update_entry").describe("Update a list entry's attribute values (e.g. move stage)."),
|
|
1993
|
+
listIdOrSlug: z.string(),
|
|
1994
|
+
entryId: z.string(),
|
|
1995
|
+
entryValues: z.string().describe("JSON object string mapping entry attribute slugs to new values."),
|
|
1996
|
+
multiselectMode: z.enum(["overwrite", "append"]).nullable().optional().describe("'overwrite' (default) replaces multi-value attribute values; 'append' adds to them.")
|
|
1997
|
+
}),
|
|
1998
|
+
z.object({ action: z.literal("remove_entry").describe("Remove an entry from a list. The parent record itself is untouched."), listIdOrSlug: z.string(), entryId: z.string() })
|
|
1999
|
+
]);
|
|
2000
|
+
export const attioMeetingsRequestSchema = z.discriminatedUnion("action", [
|
|
2001
|
+
z.object({
|
|
2002
|
+
action: z.literal("list").describe("List meetings, optionally filtered by linked record, participants or time range. Uses cursor pagination."),
|
|
2003
|
+
linkedObjectSlug: z.string().nullable().optional(),
|
|
2004
|
+
linkedRecordId: z.string().nullable().optional(),
|
|
2005
|
+
participants: z.string().nullable().optional().describe("Comma-separated participant email addresses."),
|
|
2006
|
+
startsBefore: z.string().nullable().optional().describe("Only meetings starting before this ISO timestamp."),
|
|
2007
|
+
endsFrom: z.string().nullable().optional().describe("Only meetings ending at/after this ISO timestamp."),
|
|
2008
|
+
limit: z.number().int().nullable().optional().describe("Maximum meetings to return (max 200)."),
|
|
2009
|
+
cursor: z.string().nullable().optional().describe("Pagination cursor from a previous response's nextCursor.")
|
|
2010
|
+
}),
|
|
2011
|
+
z.object({ action: z.literal("get").describe("Fetch a single meeting by ID."), meetingId: z.string() }),
|
|
2012
|
+
z.object({
|
|
2013
|
+
action: z.literal("list_recordings").describe("List call recordings for a meeting."),
|
|
2014
|
+
meetingId: z.string(),
|
|
2015
|
+
limit: z.number().int().nullable().optional(),
|
|
2016
|
+
cursor: z.string().nullable().optional()
|
|
2017
|
+
}),
|
|
2018
|
+
z.object({
|
|
2019
|
+
action: z.literal("get_transcript").describe("Fetch the transcript of a call recording."),
|
|
2020
|
+
meetingId: z.string(),
|
|
2021
|
+
callRecordingId: z.string(),
|
|
2022
|
+
cursor: z.string().nullable().optional()
|
|
2023
|
+
})
|
|
2024
|
+
]);
|
|
2025
|
+
export const attioFilesRequestSchema = z.discriminatedUnion("action", [
|
|
2026
|
+
z.object({
|
|
2027
|
+
action: z.literal("list").describe("List files attached to a record."),
|
|
2028
|
+
objectSlug: z.string().describe("Object slug of the record."),
|
|
2029
|
+
recordId: z.string().describe("Record ID."),
|
|
2030
|
+
limit: z.number().int().nullable().optional(),
|
|
2031
|
+
cursor: z.string().nullable().optional()
|
|
2032
|
+
}),
|
|
2033
|
+
z.object({ action: z.literal("get").describe("Fetch a file's metadata by ID."), fileId: z.string() }),
|
|
2034
|
+
z.object({
|
|
2035
|
+
action: z.literal("upload").describe("Upload a file to a record (native Attio storage, max 50 MB)."),
|
|
2036
|
+
objectSlug: z.string(),
|
|
2037
|
+
recordId: z.string(),
|
|
2038
|
+
fileName: z.string().describe("File name including extension."),
|
|
2039
|
+
contentBase64: z.string().describe("The file content, base64-encoded."),
|
|
2040
|
+
contentType: z.string().nullable().optional().describe("MIME type. Defaults to application/octet-stream.")
|
|
2041
|
+
}),
|
|
2042
|
+
z.object({ action: z.literal("get_download_url").describe("Get a signed download URL for a file."), fileId: z.string() }),
|
|
2043
|
+
z.object({ action: z.literal("delete").describe("Permanently delete a file (deleting a folder deletes its descendants)."), fileId: z.string() })
|
|
2044
|
+
]);
|
|
2045
|
+
const attioSchemaTargetFields = {
|
|
2046
|
+
target: z.enum(["objects", "lists"]).describe("Whether the attribute lives on an object or a list."),
|
|
2047
|
+
identifier: z.string().describe("The object slug (e.g. 'deals') or list ID/slug the attribute belongs to.")
|
|
2048
|
+
};
|
|
2049
|
+
export const attioSchemaRequestSchema = z.discriminatedUnion("action", [
|
|
2050
|
+
z.object({ action: z.literal("list_objects").describe("List all object types in the workspace with their attributes and field definitions. Call this before creating or updating records.") }),
|
|
2051
|
+
z.object({ action: z.literal("get_object").describe("Fetch one object's configuration."), objectSlug: z.string() }),
|
|
2052
|
+
z.object({
|
|
2053
|
+
action: z.literal("create_object").describe("Create a custom object type. This changes the workspace schema for every user."),
|
|
2054
|
+
apiSlug: z.string().describe("Unique slug (snake_case)."),
|
|
2055
|
+
singularNoun: z.string().describe("Singular display name (e.g. 'Ticket')."),
|
|
2056
|
+
pluralNoun: z.string().describe("Plural display name (e.g. 'Tickets').")
|
|
2057
|
+
}),
|
|
2058
|
+
z.object({
|
|
2059
|
+
action: z.literal("update_object").describe("Update an object's slug or display names."),
|
|
2060
|
+
objectSlug: z.string(),
|
|
2061
|
+
newApiSlug: z.string().nullable().optional(),
|
|
2062
|
+
singularNoun: z.string().nullable().optional(),
|
|
2063
|
+
pluralNoun: z.string().nullable().optional()
|
|
2064
|
+
}),
|
|
2065
|
+
z.object({ action: z.literal("list_attributes").describe("List the attributes defined on an object or list."), ...attioSchemaTargetFields }),
|
|
2066
|
+
z.object({
|
|
2067
|
+
action: z.literal("create_attribute").describe("Create a new attribute on an object or list. This changes the workspace schema for every user."),
|
|
2068
|
+
...attioSchemaTargetFields,
|
|
2069
|
+
title: z.string().describe("Display name of the attribute."),
|
|
2070
|
+
apiSlug: z.string().describe("Unique attribute slug (snake_case)."),
|
|
2071
|
+
attributeType: z
|
|
2072
|
+
.string()
|
|
2073
|
+
.describe("Attio attribute type, e.g. 'text', 'number', 'checkbox', 'currency', 'date', 'timestamp', 'rating', 'status', 'select', 'record-reference', 'actor-reference', 'location', 'domain', 'email-address', 'phone-number'."),
|
|
2074
|
+
isRequired: z.boolean().nullable().optional().describe("Whether a value is required. Defaults to false."),
|
|
2075
|
+
isUnique: z.boolean().nullable().optional().describe("Whether values must be unique. Defaults to false."),
|
|
2076
|
+
isMultiselect: z.boolean().nullable().optional().describe("Whether the attribute holds multiple values. Defaults to false."),
|
|
2077
|
+
config: z.string().nullable().optional().describe('Optional JSON object string for type-specific config, e.g. \'{"record_reference":{"allowed_objects":["people"]}}\'.')
|
|
2078
|
+
}),
|
|
2079
|
+
z.object({
|
|
2080
|
+
action: z.literal("update_attribute").describe("Update an attribute's title or constraints."),
|
|
2081
|
+
...attioSchemaTargetFields,
|
|
2082
|
+
attributeSlug: z.string(),
|
|
2083
|
+
title: z.string().nullable().optional(),
|
|
2084
|
+
isRequired: z.boolean().nullable().optional()
|
|
2085
|
+
}),
|
|
2086
|
+
z.object({ action: z.literal("list_statuses").describe("List the statuses of a status attribute (e.g. deal stages)."), ...attioSchemaTargetFields, attributeSlug: z.string() }),
|
|
2087
|
+
z.object({
|
|
2088
|
+
action: z.literal("create_status").describe("Add a new status to a status attribute. Rerun terse generate afterwards to refresh generated constants."),
|
|
2089
|
+
...attioSchemaTargetFields,
|
|
2090
|
+
attributeSlug: z.string(),
|
|
2091
|
+
title: z.string().describe("The status title.")
|
|
2092
|
+
}),
|
|
2093
|
+
z.object({
|
|
2094
|
+
action: z.literal("update_status").describe("Rename or archive a status."),
|
|
2095
|
+
...attioSchemaTargetFields,
|
|
2096
|
+
attributeSlug: z.string(),
|
|
2097
|
+
statusId: z.string().describe("The status ID (UUID)."),
|
|
2098
|
+
title: z.string().nullable().optional(),
|
|
2099
|
+
isArchived: z.boolean().nullable().optional()
|
|
2100
|
+
}),
|
|
2101
|
+
z.object({ action: z.literal("list_select_options").describe("List the options of a select attribute."), ...attioSchemaTargetFields, attributeSlug: z.string() }),
|
|
2102
|
+
z.object({
|
|
2103
|
+
action: z.literal("create_select_option").describe("Add an option to a select attribute. Rerun terse generate afterwards to refresh generated constants."),
|
|
2104
|
+
...attioSchemaTargetFields,
|
|
2105
|
+
attributeSlug: z.string(),
|
|
2106
|
+
title: z.string().describe("The option title.")
|
|
2107
|
+
}),
|
|
2108
|
+
z.object({
|
|
2109
|
+
action: z.literal("update_select_option").describe("Rename or archive a select option."),
|
|
2110
|
+
...attioSchemaTargetFields,
|
|
2111
|
+
attributeSlug: z.string(),
|
|
2112
|
+
optionId: z.string().describe("The option ID (UUID)."),
|
|
2113
|
+
title: z.string().nullable().optional(),
|
|
2114
|
+
isArchived: z.boolean().nullable().optional()
|
|
2115
|
+
})
|
|
2116
|
+
]);
|
|
2117
|
+
export const attioListWorkspaceMembersRequestSchema = z.object({
|
|
2118
|
+
action: z
|
|
2119
|
+
.literal("list")
|
|
2120
|
+
.describe("List every workspace member (name, email address, access level). Use to resolve a record's owner to a person, or to find the ID/email to write into an actor-reference attribute.")
|
|
2121
|
+
});
|
|
2122
|
+
export const attioGetWorkspaceMemberRequestSchema = z.object({
|
|
2123
|
+
action: z.literal("get").describe("Fetch a single workspace member by ID (e.g. the referenced_actor_id of a record's owner value)."),
|
|
2124
|
+
workspaceMemberId: z.string().describe("The workspace member ID (UUID).")
|
|
2125
|
+
});
|
|
2126
|
+
export const attioWorkspaceMembersRequestSchema = z.discriminatedUnion("action", [attioListWorkspaceMembersRequestSchema, attioGetWorkspaceMemberRequestSchema]);
|
|
2127
|
+
export const attioWorkspaceMembersInputSchema = z.object({
|
|
2128
|
+
integrationId: z.string().describe("The integration ID of the Attio workspace to use."),
|
|
2129
|
+
request: attioWorkspaceMembersRequestSchema.describe("The workspace-member operation to perform and its arguments.")
|
|
1676
2130
|
});
|
|
1677
2131
|
// WorkOS input schemas
|
|
1678
2132
|
export const listWorkOSUsersInputSchema = z.object({
|
|
@@ -1734,33 +2188,115 @@ export const webSearchOutputSchema = z.object({
|
|
|
1734
2188
|
answer: z.string().optional(),
|
|
1735
2189
|
results: z.array(webSearchResultItemSchema)
|
|
1736
2190
|
});
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
2191
|
+
const attioToolInput = (request) => z.object({
|
|
2192
|
+
integrationId: z.string().describe("The integration ID of the Attio workspace to use."),
|
|
2193
|
+
request: request.describe("The operation to perform and its arguments.")
|
|
2194
|
+
});
|
|
2195
|
+
export const attioTasksInputSchema = attioToolInput(attioTasksRequestSchema);
|
|
2196
|
+
export const attioNotesInputSchema = attioToolInput(attioNotesRequestSchema);
|
|
2197
|
+
export const attioCommentsInputSchema = attioToolInput(attioCommentsRequestSchema);
|
|
2198
|
+
export const attioListsInputSchema = attioToolInput(attioListsRequestSchema);
|
|
2199
|
+
export const attioMeetingsInputSchema = attioToolInput(attioMeetingsRequestSchema);
|
|
2200
|
+
export const attioFilesInputSchema = attioToolInput(attioFilesRequestSchema);
|
|
2201
|
+
export const attioSchemaInputSchema = attioToolInput(attioSchemaRequestSchema);
|
|
2202
|
+
const attioToolOutputBaseSchema = toolOutputBaseSchema.omit({ success: true });
|
|
2203
|
+
export const attioTasksTool = defineTool({
|
|
2204
|
+
name: "attio_tasks",
|
|
2205
|
+
inputSchema: attioTasksInputSchema,
|
|
2206
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
2207
|
+
tasks: z.array(attioTaskSchema).optional(),
|
|
2208
|
+
task: attioTaskSchema.optional(),
|
|
2209
|
+
count: z.number().int().optional()
|
|
1743
2210
|
})
|
|
1744
2211
|
});
|
|
1745
|
-
export const
|
|
1746
|
-
name: "
|
|
1747
|
-
inputSchema:
|
|
1748
|
-
outputSchema:
|
|
1749
|
-
|
|
1750
|
-
|
|
2212
|
+
export const attioNotesTool = defineTool({
|
|
2213
|
+
name: "attio_notes",
|
|
2214
|
+
inputSchema: attioNotesInputSchema,
|
|
2215
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
2216
|
+
notes: z.array(attioNoteSchema).optional(),
|
|
2217
|
+
note: attioNoteSchema.optional(),
|
|
2218
|
+
count: z.number().int().optional()
|
|
1751
2219
|
})
|
|
1752
2220
|
});
|
|
1753
|
-
export const
|
|
1754
|
-
name: "
|
|
1755
|
-
inputSchema:
|
|
1756
|
-
outputSchema:
|
|
2221
|
+
export const attioCommentsTool = defineTool({
|
|
2222
|
+
name: "attio_comments",
|
|
2223
|
+
inputSchema: attioCommentsInputSchema,
|
|
2224
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
2225
|
+
comment: attioCommentSchema.optional(),
|
|
2226
|
+
threads: z.array(attioThreadSchema).optional(),
|
|
2227
|
+
thread: attioThreadSchema.optional(),
|
|
2228
|
+
count: z.number().int().optional()
|
|
2229
|
+
})
|
|
2230
|
+
});
|
|
2231
|
+
export const attioListsTool = defineTool({
|
|
2232
|
+
name: "attio_lists",
|
|
2233
|
+
inputSchema: attioListsInputSchema,
|
|
2234
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
2235
|
+
lists: z.array(attioListSchema).optional(),
|
|
2236
|
+
list: attioListSchema.optional(),
|
|
2237
|
+
entries: z.array(attioListEntrySchema).optional(),
|
|
2238
|
+
entry: attioListEntrySchema.optional(),
|
|
2239
|
+
count: z.number().int().optional(),
|
|
2240
|
+
offset: z.number().int().optional()
|
|
2241
|
+
})
|
|
2242
|
+
});
|
|
2243
|
+
export const attioMeetingsTool = defineTool({
|
|
2244
|
+
name: "attio_meetings",
|
|
2245
|
+
inputSchema: attioMeetingsInputSchema,
|
|
2246
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
2247
|
+
meetings: z.array(attioMeetingSchema).optional(),
|
|
2248
|
+
meeting: attioMeetingSchema.optional(),
|
|
2249
|
+
recordings: z.array(attioCallRecordingSchema).optional(),
|
|
2250
|
+
transcript: attioTranscriptSchema.optional(),
|
|
2251
|
+
count: z.number().int().optional(),
|
|
2252
|
+
nextCursor: z.string().nullable().optional()
|
|
2253
|
+
})
|
|
2254
|
+
});
|
|
2255
|
+
export const attioFilesTool = defineTool({
|
|
2256
|
+
name: "attio_files",
|
|
2257
|
+
inputSchema: attioFilesInputSchema,
|
|
2258
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
2259
|
+
files: z.array(attioFileSchema).optional(),
|
|
2260
|
+
file: attioFileSchema.optional(),
|
|
2261
|
+
downloadUrl: z.string().optional(),
|
|
2262
|
+
count: z.number().int().optional(),
|
|
2263
|
+
nextCursor: z.string().nullable().optional()
|
|
2264
|
+
})
|
|
2265
|
+
});
|
|
2266
|
+
export const attioSchemaTool = defineTool({
|
|
2267
|
+
name: "attio_schema",
|
|
2268
|
+
inputSchema: attioSchemaInputSchema,
|
|
2269
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
2270
|
+
objects: z.array(attioObjectWithAttributesSchema).optional(),
|
|
2271
|
+
object: attioObjectSchema.optional(),
|
|
2272
|
+
attributes: z.array(attioAttributeSchema).optional(),
|
|
2273
|
+
attribute: attioAttributeSchema.optional(),
|
|
2274
|
+
statuses: z.array(attioStatusSchema).optional(),
|
|
2275
|
+
status: attioStatusSchema.optional(),
|
|
2276
|
+
selectOptions: z.array(attioSelectOptionEntitySchema).optional(),
|
|
2277
|
+
selectOption: attioSelectOptionEntitySchema.optional(),
|
|
2278
|
+
count: z.number().int().optional()
|
|
2279
|
+
})
|
|
2280
|
+
});
|
|
2281
|
+
export const attioWorkspaceMembersTool = defineTool({
|
|
2282
|
+
name: "attio_workspace_members",
|
|
2283
|
+
inputSchema: attioWorkspaceMembersInputSchema,
|
|
2284
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
2285
|
+
members: z.array(attioWorkspaceMemberSchema).optional(),
|
|
2286
|
+
member: attioWorkspaceMemberSchema.optional(),
|
|
2287
|
+
count: z.number().int().optional()
|
|
2288
|
+
})
|
|
2289
|
+
});
|
|
2290
|
+
export const attioRecordsTool = defineTool({
|
|
2291
|
+
name: "attio_records",
|
|
2292
|
+
inputSchema: attioRecordsInputSchema,
|
|
2293
|
+
outputSchema: attioToolOutputBaseSchema.extend({
|
|
1757
2294
|
records: z.array(attioRecordSchema).optional(),
|
|
2295
|
+
record: attioRecordSchema.optional(),
|
|
2296
|
+
matches: z.array(attioSearchMatchSchema).optional(),
|
|
2297
|
+
history: z.array(attioAttributeHistoryEntrySchema).optional(),
|
|
1758
2298
|
count: z.number().int().optional(),
|
|
1759
|
-
|
|
1760
|
-
successCount: z.number().int().optional(),
|
|
1761
|
-
failureCount: z.number().int().optional(),
|
|
1762
|
-
partial: z.boolean().optional(),
|
|
1763
|
-
errors: z.array(attioUpsertErrorSchema).optional()
|
|
2299
|
+
offset: z.number().int().optional()
|
|
1764
2300
|
})
|
|
1765
2301
|
});
|
|
1766
2302
|
export const listWorkOSUsersTool = defineTool({
|
|
@@ -1929,9 +2465,15 @@ export const ToolDefinitions = {
|
|
|
1929
2465
|
[getPosthogSessionEventsTool.name]: getPosthogSessionEventsTool,
|
|
1930
2466
|
[listPosthogEventNamesTool.name]: listPosthogEventNamesTool,
|
|
1931
2467
|
[searchPosthogEventsTool.name]: searchPosthogEventsTool,
|
|
1932
|
-
[
|
|
1933
|
-
[
|
|
1934
|
-
[
|
|
2468
|
+
[attioRecordsTool.name]: attioRecordsTool,
|
|
2469
|
+
[attioWorkspaceMembersTool.name]: attioWorkspaceMembersTool,
|
|
2470
|
+
[attioTasksTool.name]: attioTasksTool,
|
|
2471
|
+
[attioNotesTool.name]: attioNotesTool,
|
|
2472
|
+
[attioCommentsTool.name]: attioCommentsTool,
|
|
2473
|
+
[attioListsTool.name]: attioListsTool,
|
|
2474
|
+
[attioMeetingsTool.name]: attioMeetingsTool,
|
|
2475
|
+
[attioFilesTool.name]: attioFilesTool,
|
|
2476
|
+
[attioSchemaTool.name]: attioSchemaTool,
|
|
1935
2477
|
[listWorkOSUsersTool.name]: listWorkOSUsersTool,
|
|
1936
2478
|
[listWorkOSOrganizationsTool.name]: listWorkOSOrganizationsTool,
|
|
1937
2479
|
[getWorkOSUserTool.name]: getWorkOSUserTool,
|