mcpscraper-memory-sdk 0.13.0__py3-none-any.whl
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.
- mcpscraper_memory/__init__.py +9 -0
- mcpscraper_memory/_generated_client.py +588 -0
- mcpscraper_memory/_mcp_generated_client.py +1111 -0
- mcpscraper_memory/client.py +115 -0
- mcpscraper_memory/errors.py +17 -0
- mcpscraper_memory/mcp_client.py +136 -0
- mcpscraper_memory/mcp_models/__init__.py +0 -0
- mcpscraper_memory/mcp_models/access_accept_share.py +17 -0
- mcpscraper_memory/mcp_models/access_approve_sender.py +16 -0
- mcpscraper_memory/mcp_models/access_decline_share.py +16 -0
- mcpscraper_memory/mcp_models/access_inbox_settings.py +16 -0
- mcpscraper_memory/mcp_models/access_invite_account.py +21 -0
- mcpscraper_memory/mcp_models/access_issue_key.py +26 -0
- mcpscraper_memory/mcp_models/access_list_approved_senders.py +15 -0
- mcpscraper_memory/mcp_models/access_list_keys.py +17 -0
- mcpscraper_memory/mcp_models/access_note_inbox.py +14 -0
- mcpscraper_memory/mcp_models/access_remove_approved_sender.py +17 -0
- mcpscraper_memory/mcp_models/access_revoke_key.py +17 -0
- mcpscraper_memory/mcp_models/access_revoke_share.py +16 -0
- mcpscraper_memory/mcp_models/access_set_scope.py +19 -0
- mcpscraper_memory/mcp_models/access_share_note.py +26 -0
- mcpscraper_memory/mcp_models/access_share_vault.py +20 -0
- mcpscraper_memory/mcp_models/access_swap_vault.py +17 -0
- mcpscraper_memory/mcp_models/access_switch_account.py +18 -0
- mcpscraper_memory/mcp_models/access_unlink_share.py +16 -0
- mcpscraper_memory/mcp_models/add_vault.py +18 -0
- mcpscraper_memory/mcp_models/audit_site.py +17 -0
- mcpscraper_memory/mcp_models/browser_click.py +16 -0
- mcpscraper_memory/mcp_models/browser_close.py +12 -0
- mcpscraper_memory/mcp_models/browser_extension_delete.py +12 -0
- mcpscraper_memory/mcp_models/browser_extension_import.py +13 -0
- mcpscraper_memory/mcp_models/browser_extension_list.py +10 -0
- mcpscraper_memory/mcp_models/browser_goto.py +13 -0
- mcpscraper_memory/mcp_models/browser_list_replays.py +12 -0
- mcpscraper_memory/mcp_models/browser_list_sessions.py +12 -0
- mcpscraper_memory/mcp_models/browser_locate.py +13 -0
- mcpscraper_memory/mcp_models/browser_open.py +17 -0
- mcpscraper_memory/mcp_models/browser_press.py +13 -0
- mcpscraper_memory/mcp_models/browser_profile_connect.py +19 -0
- mcpscraper_memory/mcp_models/browser_profile_list.py +15 -0
- mcpscraper_memory/mcp_models/browser_read.py +12 -0
- mcpscraper_memory/mcp_models/browser_replay_annotate.py +19 -0
- mcpscraper_memory/mcp_models/browser_replay_download.py +14 -0
- mcpscraper_memory/mcp_models/browser_replay_mark.py +20 -0
- mcpscraper_memory/mcp_models/browser_replay_start.py +12 -0
- mcpscraper_memory/mcp_models/browser_replay_stop.py +13 -0
- mcpscraper_memory/mcp_models/browser_screenshot.py +12 -0
- mcpscraper_memory/mcp_models/browser_scroll.py +16 -0
- mcpscraper_memory/mcp_models/browser_type.py +14 -0
- mcpscraper_memory/mcp_models/bulk_delete_notes.py +24 -0
- mcpscraper_memory/mcp_models/call_service_connection_action.py +14 -0
- mcpscraper_memory/mcp_models/capture_serp_page_snapshots.py +16 -0
- mcpscraper_memory/mcp_models/capture_serp_snapshot.py +22 -0
- mcpscraper_memory/mcp_models/check_site_export.py +12 -0
- mcpscraper_memory/mcp_models/cost_usage.py +28 -0
- mcpscraper_memory/mcp_models/create_channel.py +19 -0
- mcpscraper_memory/mcp_models/create_scheduled_action.py +25 -0
- mcpscraper_memory/mcp_models/create_secure_vault.py +17 -0
- mcpscraper_memory/mcp_models/create_webhook.py +19 -0
- mcpscraper_memory/mcp_models/credits_info.py +13 -0
- mcpscraper_memory/mcp_models/delete_note.py +23 -0
- mcpscraper_memory/mcp_models/delete_scheduled_action.py +16 -0
- mcpscraper_memory/mcp_models/delete_vault.py +18 -0
- mcpscraper_memory/mcp_models/describe_service_connection_tool.py +14 -0
- mcpscraper_memory/mcp_models/diff_page.py +14 -0
- mcpscraper_memory/mcp_models/directory_workflow.py +24 -0
- mcpscraper_memory/mcp_models/export_connected_service_data.py +20 -0
- mcpscraper_memory/mcp_models/export_search_console_table_data.py +15 -0
- mcpscraper_memory/mcp_models/extract_site.py +18 -0
- mcpscraper_memory/mcp_models/extract_url.py +20 -0
- mcpscraper_memory/mcp_models/facebook_ad_search.py +14 -0
- mcpscraper_memory/mcp_models/facebook_ad_transcribe.py +12 -0
- mcpscraper_memory/mcp_models/facebook_page_intel.py +16 -0
- mcpscraper_memory/mcp_models/facebook_video_transcribe.py +13 -0
- mcpscraper_memory/mcp_models/fact_history.py +18 -0
- mcpscraper_memory/mcp_models/g2_reviews.py +13 -0
- mcpscraper_memory/mcp_models/get_chat_link.py +15 -0
- mcpscraper_memory/mcp_models/get_message_note.py +17 -0
- mcpscraper_memory/mcp_models/get_schedule_link.py +16 -0
- mcpscraper_memory/mcp_models/get_schedule_status.py +22 -0
- mcpscraper_memory/mcp_models/get_vault_app_link.py +15 -0
- mcpscraper_memory/mcp_models/get_vault_contract.py +17 -0
- mcpscraper_memory/mcp_models/gmail_send_message.py +15 -0
- mcpscraper_memory/mcp_models/google_ads_page_intel.py +15 -0
- mcpscraper_memory/mcp_models/google_ads_search.py +14 -0
- mcpscraper_memory/mcp_models/google_ads_transcribe.py +12 -0
- mcpscraper_memory/mcp_models/google_calendar_create_event.py +20 -0
- mcpscraper_memory/mcp_models/harvest_paa.py +20 -0
- mcpscraper_memory/mcp_models/import_service_connection_to_memory.py +17 -0
- mcpscraper_memory/mcp_models/instagram_media_download.py +19 -0
- mcpscraper_memory/mcp_models/instagram_profile_content.py +19 -0
- mcpscraper_memory/mcp_models/library_ingest.py +31 -0
- mcpscraper_memory/mcp_models/list_channel_members.py +18 -0
- mcpscraper_memory/mcp_models/list_channel_messages.py +17 -0
- mcpscraper_memory/mcp_models/list_memory_tags.py +16 -0
- mcpscraper_memory/mcp_models/list_scheduled_actions.py +14 -0
- mcpscraper_memory/mcp_models/list_service_connections.py +10 -0
- mcpscraper_memory/mcp_models/list_shared_with_me.py +14 -0
- mcpscraper_memory/mcp_models/list_vaults.py +16 -0
- mcpscraper_memory/mcp_models/list_webhooks.py +14 -0
- mcpscraper_memory/mcp_models/map_site_urls.py +13 -0
- mcpscraper_memory/mcp_models/maps_place_intel.py +18 -0
- mcpscraper_memory/mcp_models/maps_search.py +20 -0
- mcpscraper_memory/mcp_models/memory_backlinks.py +18 -0
- mcpscraper_memory/mcp_models/memory_capture.py +31 -0
- mcpscraper_memory/mcp_models/memory_export.py +18 -0
- mcpscraper_memory/mcp_models/memory_get.py +18 -0
- mcpscraper_memory/mcp_models/memory_graph_path.py +21 -0
- mcpscraper_memory/mcp_models/memory_graph_universe.py +23 -0
- mcpscraper_memory/mcp_models/memory_list.py +20 -0
- mcpscraper_memory/mcp_models/memory_put.py +26 -0
- mcpscraper_memory/mcp_models/memory_questions.py +18 -0
- mcpscraper_memory/mcp_models/memory_search.py +39 -0
- mcpscraper_memory/mcp_models/memory_suggest.py +17 -0
- mcpscraper_memory/mcp_models/memory_upload.py +22 -0
- mcpscraper_memory/mcp_models/meta_ad_creative_media.py +15 -0
- mcpscraper_memory/mcp_models/my_mentions.py +16 -0
- mcpscraper_memory/mcp_models/pause_scheduled_action.py +15 -0
- mcpscraper_memory/mcp_models/poll_channel.py +21 -0
- mcpscraper_memory/mcp_models/post_message.py +20 -0
- mcpscraper_memory/mcp_models/prepare_memory_write.py +26 -0
- mcpscraper_memory/mcp_models/propose_scheduled_action.py +21 -0
- mcpscraper_memory/mcp_models/provision_defaults.py +23 -0
- mcpscraper_memory/mcp_models/query_fanout_workflow.py +17 -0
- mcpscraper_memory/mcp_models/rank_tracker_workflow.py +26 -0
- mcpscraper_memory/mcp_models/react_message.py +21 -0
- mcpscraper_memory/mcp_models/read_service_connection.py +14 -0
- mcpscraper_memory/mcp_models/record_fact.py +22 -0
- mcpscraper_memory/mcp_models/reddit_thread.py +13 -0
- mcpscraper_memory/mcp_models/remove_channel_member.py +17 -0
- mcpscraper_memory/mcp_models/renew_connected_data_download.py +12 -0
- mcpscraper_memory/mcp_models/reply_message.py +21 -0
- mcpscraper_memory/mcp_models/report_artifact_read.py +14 -0
- mcpscraper_memory/mcp_models/resolve_memory_tags.py +16 -0
- mcpscraper_memory/mcp_models/resume_scheduled_action.py +17 -0
- mcpscraper_memory/mcp_models/revoke_chat_link.py +14 -0
- mcpscraper_memory/mcp_models/revoke_schedule_link.py +14 -0
- mcpscraper_memory/mcp_models/revoke_vault_app_link.py +14 -0
- mcpscraper_memory/mcp_models/revoke_webhook.py +16 -0
- mcpscraper_memory/mcp_models/route_memory.py +22 -0
- mcpscraper_memory/mcp_models/search_serp.py +20 -0
- mcpscraper_memory/mcp_models/set_agent_identity.py +16 -0
- mcpscraper_memory/mcp_models/set_schedule_defaults.py +16 -0
- mcpscraper_memory/mcp_models/set_schedule_entitlement.py +18 -0
- mcpscraper_memory/mcp_models/set_scheduled_action_connections.py +13 -0
- mcpscraper_memory/mcp_models/slack_send_message.py +14 -0
- mcpscraper_memory/mcp_models/storage_usage.py +19 -0
- mcpscraper_memory/mcp_models/table_create.py +19 -0
- mcpscraper_memory/mcp_models/table_delete_rows.py +17 -0
- mcpscraper_memory/mcp_models/table_describe.py +17 -0
- mcpscraper_memory/mcp_models/table_drop.py +16 -0
- mcpscraper_memory/mcp_models/table_insert_rows.py +17 -0
- mcpscraper_memory/mcp_models/table_list.py +14 -0
- mcpscraper_memory/mcp_models/table_query.py +22 -0
- mcpscraper_memory/mcp_models/temporal_recall.py +22 -0
- mcpscraper_memory/mcp_models/test_service_connection.py +13 -0
- mcpscraper_memory/mcp_models/trustpilot_reviews.py +13 -0
- mcpscraper_memory/mcp_models/upsert_memory_tag.py +19 -0
- mcpscraper_memory/mcp_models/validate_memory_write.py +22 -0
- mcpscraper_memory/mcp_models/video_analyze_start.py +21 -0
- mcpscraper_memory/mcp_models/video_analyze_status.py +22 -0
- mcpscraper_memory/mcp_models/video_frame_analysis.py +16 -0
- mcpscraper_memory/mcp_models/video_frame_analysis_status.py +12 -0
- mcpscraper_memory/mcp_models/workflow_artifact_read.py +14 -0
- mcpscraper_memory/mcp_models/workflow_list.py +12 -0
- mcpscraper_memory/mcp_models/workflow_run.py +14 -0
- mcpscraper_memory/mcp_models/workflow_status.py +12 -0
- mcpscraper_memory/mcp_models/workflow_step.py +12 -0
- mcpscraper_memory/mcp_models/workflow_suggest.py +19 -0
- mcpscraper_memory/mcp_models/youtube_harvest.py +15 -0
- mcpscraper_memory/mcp_models/youtube_transcribe.py +13 -0
- mcpscraper_memory/mcp_models/zoom_create_meeting.py +17 -0
- mcpscraper_memory/models/__init__.py +0 -0
- mcpscraper_memory/models/access_accept_share.py +19 -0
- mcpscraper_memory/models/access_approve_sender.py +18 -0
- mcpscraper_memory/models/access_decline_share.py +18 -0
- mcpscraper_memory/models/access_inbox_settings.py +18 -0
- mcpscraper_memory/models/access_invite_account.py +23 -0
- mcpscraper_memory/models/access_issue_key.py +28 -0
- mcpscraper_memory/models/access_list_approved_senders.py +18 -0
- mcpscraper_memory/models/access_list_keys.py +19 -0
- mcpscraper_memory/models/access_note_inbox.py +17 -0
- mcpscraper_memory/models/access_remove_approved_sender.py +19 -0
- mcpscraper_memory/models/access_revoke_key.py +19 -0
- mcpscraper_memory/models/access_revoke_share.py +18 -0
- mcpscraper_memory/models/access_set_scope.py +21 -0
- mcpscraper_memory/models/access_share_note.py +28 -0
- mcpscraper_memory/models/access_share_vault.py +22 -0
- mcpscraper_memory/models/access_swap_vault.py +19 -0
- mcpscraper_memory/models/access_switch_account.py +20 -0
- mcpscraper_memory/models/access_unlink_share.py +18 -0
- mcpscraper_memory/models/add_vault.py +20 -0
- mcpscraper_memory/models/cost_usage.py +30 -0
- mcpscraper_memory/models/create_channel.py +21 -0
- mcpscraper_memory/models/create_scheduled_action.py +27 -0
- mcpscraper_memory/models/create_secure_vault.py +19 -0
- mcpscraper_memory/models/create_webhook.py +21 -0
- mcpscraper_memory/models/delete_note.py +25 -0
- mcpscraper_memory/models/delete_scheduled_action.py +18 -0
- mcpscraper_memory/models/delete_vault.py +20 -0
- mcpscraper_memory/models/fact_history.py +20 -0
- mcpscraper_memory/models/get_chat_link.py +18 -0
- mcpscraper_memory/models/get_message_note.py +19 -0
- mcpscraper_memory/models/get_schedule_link.py +19 -0
- mcpscraper_memory/models/get_schedule_status.py +25 -0
- mcpscraper_memory/models/get_vault_contract.py +19 -0
- mcpscraper_memory/models/library_ingest.py +33 -0
- mcpscraper_memory/models/list_channel_members.py +20 -0
- mcpscraper_memory/models/list_channel_messages.py +19 -0
- mcpscraper_memory/models/list_memory_tags.py +18 -0
- mcpscraper_memory/models/list_scheduled_actions.py +17 -0
- mcpscraper_memory/models/list_shared_with_me.py +17 -0
- mcpscraper_memory/models/list_vaults.py +19 -0
- mcpscraper_memory/models/list_webhooks.py +17 -0
- mcpscraper_memory/models/memory_backlinks.py +20 -0
- mcpscraper_memory/models/memory_capture.py +33 -0
- mcpscraper_memory/models/memory_export.py +20 -0
- mcpscraper_memory/models/memory_get.py +20 -0
- mcpscraper_memory/models/memory_graph_path.py +23 -0
- mcpscraper_memory/models/memory_graph_universe.py +25 -0
- mcpscraper_memory/models/memory_list.py +22 -0
- mcpscraper_memory/models/memory_put.py +28 -0
- mcpscraper_memory/models/memory_questions.py +20 -0
- mcpscraper_memory/models/memory_search.py +24 -0
- mcpscraper_memory/models/memory_suggest.py +19 -0
- mcpscraper_memory/models/memory_upload.py +24 -0
- mcpscraper_memory/models/my_mentions.py +18 -0
- mcpscraper_memory/models/pause_scheduled_action.py +17 -0
- mcpscraper_memory/models/poll_channel.py +23 -0
- mcpscraper_memory/models/post_message.py +22 -0
- mcpscraper_memory/models/prepare_memory_write.py +28 -0
- mcpscraper_memory/models/propose_scheduled_action.py +21 -0
- mcpscraper_memory/models/provision_defaults.py +25 -0
- mcpscraper_memory/models/react_message.py +23 -0
- mcpscraper_memory/models/record_fact.py +24 -0
- mcpscraper_memory/models/remove_channel_member.py +19 -0
- mcpscraper_memory/models/reply_message.py +23 -0
- mcpscraper_memory/models/resolve_memory_tags.py +18 -0
- mcpscraper_memory/models/resume_scheduled_action.py +19 -0
- mcpscraper_memory/models/revoke_chat_link.py +17 -0
- mcpscraper_memory/models/revoke_schedule_link.py +17 -0
- mcpscraper_memory/models/revoke_webhook.py +18 -0
- mcpscraper_memory/models/route_memory.py +24 -0
- mcpscraper_memory/models/set_agent_identity.py +18 -0
- mcpscraper_memory/models/set_schedule_entitlement.py +20 -0
- mcpscraper_memory/models/storage_usage.py +22 -0
- mcpscraper_memory/models/table_create.py +21 -0
- mcpscraper_memory/models/table_delete_rows.py +19 -0
- mcpscraper_memory/models/table_describe.py +19 -0
- mcpscraper_memory/models/table_drop.py +18 -0
- mcpscraper_memory/models/table_insert_rows.py +19 -0
- mcpscraper_memory/models/table_list.py +17 -0
- mcpscraper_memory/models/table_query.py +24 -0
- mcpscraper_memory/models/temporal_recall.py +24 -0
- mcpscraper_memory/models/upsert_memory_tag.py +21 -0
- mcpscraper_memory/models/validate_memory_write.py +24 -0
- mcpscraper_memory/models/video_analyze_start.py +23 -0
- mcpscraper_memory/models/video_analyze_status.py +24 -0
- mcpscraper_memory_sdk-0.13.0.dist-info/METADATA +61 -0
- mcpscraper_memory_sdk-0.13.0.dist-info/RECORD +261 -0
- mcpscraper_memory_sdk-0.13.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TableListInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class TableListOutput(BaseModel):
|
|
10
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
11
|
+
|
|
12
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth error.")
|
|
13
|
+
tables: list[str] | None = Field(None, alias="tables", description="Table names owned by the caller. Present when ok is true; may be empty.")
|
|
14
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TableQueryInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
table_name: str = Field(..., alias="tableName", description="Table name, from table-list.")
|
|
9
|
+
filters: list[dict[str, Any]] | None = Field(None, alias="filters", description="Filters to AND together. Optional; omit to match every row.")
|
|
10
|
+
sort: dict[str, Any] | None = Field(None, alias="sort", description="Column to sort by. Optional; defaults to id ascending (insertion order).")
|
|
11
|
+
limit: int | None = Field(None, alias="limit", description="Max rows to return. Optional; default 100, max 2000.")
|
|
12
|
+
offset: int | None = Field(None, alias="offset", description="Rows to skip, for pagination. Optional; default 0.")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class TableQueryOutput(BaseModel):
|
|
16
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
17
|
+
|
|
18
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth/validation error.")
|
|
19
|
+
table_name: str | None = Field(None, alias="tableName", description="The table name.")
|
|
20
|
+
rows: list[dict[str, Any]] | None = Field(None, alias="rows", description="Matching rows, each an object of column name to value.")
|
|
21
|
+
count: float | None = Field(None, alias="count", description="Total rows matching the filters, before limit/offset — use for pagination.")
|
|
22
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TemporalRecallInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
vault: str | None = Field(None, alias="vault", description="Vault to recall from. Optional; defaults to the session active vault, then the first vault the caller is entitled to.")
|
|
9
|
+
query: str | None = Field(None, alias="query", description="Optional natural-language query; when present, a semantic search is blended into the results.")
|
|
10
|
+
days_ago: int | None = Field(None, alias="daysAgo", description="Recall a single calendar day this many days ago (0 = today). Optional; ignored when from/to are given.")
|
|
11
|
+
from_: str | None = Field(None, alias="from", description="Start of an explicit window (ISO-8601 / parseable date). Use together with \"to\". Overrides daysAgo.")
|
|
12
|
+
to: str | None = Field(None, alias="to", description="End of an explicit window (ISO-8601 / parseable date). Use together with \"from\".")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class TemporalRecallOutput(BaseModel):
|
|
16
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
17
|
+
|
|
18
|
+
ok: bool = Field(..., alias="ok", description="True when recall succeeded; false on auth/scope error.")
|
|
19
|
+
range: dict[str, Any] | None = Field(None, alias="range", description="The actual time window used after resolving daysAgo/from/to (default: last 7 days).")
|
|
20
|
+
items: list[dict[str, Any]] | None = Field(None, alias="items", description="Captures within the window, newest-first. Present when ok is true.")
|
|
21
|
+
search_results: list[dict[str, Any]] | None = Field(None, alias="searchResults", description="Blended semantic-search hits for the query. Present only when a query was supplied.")
|
|
22
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TestServiceConnectionInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
connection_id: str = Field(..., alias="connectionId", description="A tenant-owned connectionId from list_service_connections.")
|
|
9
|
+
provider_config_key: str | None = Field(None, alias="providerConfigKey", description="Optional provider hint from list_service_connections.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class TestServiceConnectionOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TrustpilotReviewsInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
domain: str = Field(..., alias="domain", description="The business's domain as it appears in its Trustpilot URL, e.g. \"www.bhphotovideo.com\" (include the www. if the site uses it — pass the domain as-is, do not guess).")
|
|
9
|
+
max_pages: int | None = Field(None, alias="maxPages", description="Review pages to fetch (~20 reviews per page). Default 5 (~100 reviews). Maximum 50 — large companies can have 1,000+ pages; this tool is for sampling, not full-corpus export.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class TrustpilotReviewsOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class UpsertMemoryTagInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
tag: str = Field(..., alias="tag", description="")
|
|
9
|
+
description: str | None = Field(None, alias="description", description="")
|
|
10
|
+
aliases: list[str] | None = Field(None, alias="aliases", description="")
|
|
11
|
+
status: Literal["active", "deprecated"] | None = Field(None, alias="status", description="")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class UpsertMemoryTagOutput(BaseModel):
|
|
15
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
16
|
+
|
|
17
|
+
ok: bool = Field(..., alias="ok", description="")
|
|
18
|
+
tag: dict[str, Any] | None = Field(None, alias="tag", description="")
|
|
19
|
+
error: str | None = Field(None, alias="error", description="")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ValidateMemoryWriteInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
vault: str = Field(..., alias="vault", description="")
|
|
9
|
+
title: str = Field(..., alias="title", description="")
|
|
10
|
+
content: str = Field(..., alias="content", description="")
|
|
11
|
+
props: dict[str, Any] = Field(..., alias="props", description="")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ValidateMemoryWriteOutput(BaseModel):
|
|
15
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
16
|
+
|
|
17
|
+
ok: bool = Field(..., alias="ok", description="")
|
|
18
|
+
valid: bool | None = Field(None, alias="valid", description="")
|
|
19
|
+
errors: list[str] | None = Field(None, alias="errors", description="")
|
|
20
|
+
warnings: list[str] | None = Field(None, alias="warnings", description="")
|
|
21
|
+
normalized_tags: list[str] | None = Field(None, alias="normalizedTags", description="")
|
|
22
|
+
error: str | None = Field(None, alias="error", description="")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class VideoAnalyzeStartInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
source_url: str = Field(..., alias="sourceUrl", description="A YouTube, Facebook, Instagram, TikTok, or Vimeo URL (downloaded automatically), or a direct video file URL (.mp4/.webm/.mov/.gif).")
|
|
9
|
+
interval_s: float | None = Field(None, alias="intervalS", description="Preferred seconds between sampled frames (1-30). Default 2. For long videos the interval is automatically widened so the whole video is covered within the frame budget. Lower = denser sampling where the video is short enough to allow it.")
|
|
10
|
+
max_frames: int | None = Field(None, alias="maxFrames", description="Hard cap on frames analyzed (≤480). Default 120. Frames are spread across the whole duration; lowest sampling interval is 1 second, so short videos cannot use more frames than their length in seconds.")
|
|
11
|
+
detail: Literal["fast", "standard", "deep"] | None = Field(None, alias="detail", description="Analysis depth. Default standard.")
|
|
12
|
+
vault: str | None = Field(None, alias="vault", description="Vault to write the final breakdown note into. Default \"Library\". You must have write access.")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class VideoAnalyzeStartOutput(BaseModel):
|
|
16
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
17
|
+
|
|
18
|
+
ok: bool = Field(..., alias="ok", description="")
|
|
19
|
+
run_id: str | None = Field(None, alias="runId", description="")
|
|
20
|
+
poll: dict[str, Any] | None = Field(None, alias="poll", description="")
|
|
21
|
+
error: str | None = Field(None, alias="error", description="")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class VideoAnalyzeStatusInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
run_id: str = Field(..., alias="runId", description="The runId returned by video-analyze-start.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class VideoAnalyzeStatusOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
13
|
+
|
|
14
|
+
ok: bool = Field(..., alias="ok", description="")
|
|
15
|
+
status: str | None = Field(None, alias="status", description="")
|
|
16
|
+
progress: dict[str, Any] | None = Field(None, alias="progress", description="")
|
|
17
|
+
frame_count: float | None = Field(None, alias="frameCount", description="")
|
|
18
|
+
max_frames: float | None = Field(None, alias="maxFrames", description="")
|
|
19
|
+
cost_usd: float | None = Field(None, alias="costUsd", description="")
|
|
20
|
+
artifact_path: str | None = Field(None, alias="artifactPath", description="")
|
|
21
|
+
report: str | None = Field(None, alias="report", description="")
|
|
22
|
+
error: str | None = Field(None, alias="error", description="")
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class VideoFrameAnalysisInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
source_url: str = Field(..., alias="sourceUrl", description="A YouTube, Facebook, Instagram, TikTok, or Vimeo URL (downloaded automatically), or a direct video file URL (.mp4/.webm/.mov). Videos up to 30 minutes are supported.")
|
|
9
|
+
interval_s: float | None = Field(None, alias="intervalS", description="Preferred seconds between sampled frames (1-30, default 2). Automatically widened for long videos so the whole duration is covered within the frame budget.")
|
|
10
|
+
max_frames: int | None = Field(None, alias="maxFrames", description="Max frames analyzed (<=480, default 120). $1 per 120 frames requested — 120=$1 … 480=$4 — automatically refunded down if the video cannot use them (minimum 1s between frames). Frames are spread evenly across the whole video.")
|
|
11
|
+
detail: Literal["fast", "standard", "deep"] | None = Field(None, alias="detail", description="Analysis depth. Default standard.")
|
|
12
|
+
vault: str | None = Field(None, alias="vault", description="Memory vault to save the finished breakdown into. Default \"Library\".")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class VideoFrameAnalysisOutput(BaseModel):
|
|
16
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class VideoFrameAnalysisStatusInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
run_id: str = Field(..., alias="runId", description="The runId returned by video_frame_analysis.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class VideoFrameAnalysisStatusOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class WorkflowArtifactReadInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
run_id: str = Field(..., alias="runId", description="Workflow run id returned by workflow_run, workflow_step, or workflow_status. Use only a returned runId; do not construct one yourself.")
|
|
9
|
+
artifact_id: str = Field(..., alias="artifactId", description="Artifact id from the run artifact list returned by workflow_run, workflow_step, or workflow_status. Use only a returned artifactId; do not construct one yourself.")
|
|
10
|
+
max_bytes: int | None = Field(None, alias="maxBytes", description="Maximum bytes of artifact text to return inline.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class WorkflowArtifactReadOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class WorkflowListInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
include_recipes: bool | None = Field(None, alias="includeRecipes", description="Include high-level AI-facing recipes (market analysis, ICP research, CRO audits, content gaps, etc).")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class WorkflowListOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class WorkflowRunInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
workflow_id: Literal["directory", "get-leads", "agent-packet", "local-competitive-audit", "map-comparison", "serp-comparison", "paa-expansion-brief", "ai-overview-language"] = Field(..., alias="workflowId", description="Workflow to run. Call workflow_list or workflow_suggest first when unsure.")
|
|
9
|
+
input: dict[str, Any] | None = Field(None, alias="input", description="Workflow-specific input object; shape depends on workflowId. Call workflow_list or workflow_suggest to see required fields.")
|
|
10
|
+
webhook_url: str | None = Field(None, alias="webhookUrl", description="Optional HTTPS webhook to receive the completed hosted workflow run event.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class WorkflowRunOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class WorkflowStatusInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
run_id: str = Field(..., alias="runId", description="Workflow run id returned by workflow_run, workflow_step, or workflow_status. Use only a returned runId; do not construct one yourself.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class WorkflowStatusOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class WorkflowStepInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
run_id: str = Field(..., alias="runId", description="Workflow run id returned by workflow_run/workflow_step/workflow_status. Advances the run by exactly one step.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class WorkflowStepOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class WorkflowSuggestInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
goal: str = Field(..., alias="goal", description="The user goal or job to route, e.g. \"market analysis for roofers in Tennessee\", \"ICP research for med spas\", \"CRO audit for this URL\", or \"brand design briefing\".")
|
|
9
|
+
query: str | None = Field(None, alias="query", description="Business category, niche, or Maps query when known.")
|
|
10
|
+
keyword: str | None = Field(None, alias="keyword", description="Search keyword, audience problem, or content topic when known.")
|
|
11
|
+
domain: str | None = Field(None, alias="domain", description="Target domain or brand domain when known.")
|
|
12
|
+
url: str | None = Field(None, alias="url", description="Target URL when the workflow should inspect a specific page.")
|
|
13
|
+
location: str | None = Field(None, alias="location", description="City/region/country for localized research, e.g. Denver, CO.")
|
|
14
|
+
state: str | None = Field(None, alias="state", description="US state abbreviation or name for state-wide market research.")
|
|
15
|
+
max_suggestions: int | None = Field(None, alias="maxSuggestions", description="Number of matching workflow recipes to return.")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class WorkflowSuggestOutput(BaseModel):
|
|
19
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class YoutubeHarvestInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
mode: Literal["search", "channel"] = Field(..., alias="mode", description="Use search for topic/keyword requests. Use channel when the user provides @handle, channel ID, or channel URL.")
|
|
9
|
+
query: str | None = Field(None, alias="query", description="Required when mode is search. The YouTube search topic in the user’s words.")
|
|
10
|
+
channel_handle: str | None = Field(None, alias="channelHandle", description="YouTube channel handle, channel ID, or URL. Examples: @mkbhd, UC..., https://youtube.com/@mkbhd.")
|
|
11
|
+
max_videos: int | None = Field(None, alias="maxVideos", description="Number of videos to return. Default 50, maximum 500.")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class YoutubeHarvestOutput(BaseModel):
|
|
15
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class YoutubeTranscribeInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
video_id: str | None = Field(None, alias="videoId", description="YouTube video ID, e.g. dQw4w9WgXcQ. Use only an ID returned by youtube_harvest or visible in a YouTube URL; do not invent one.")
|
|
9
|
+
url: str | None = Field(None, alias="url", description="Full YouTube URL. Use when the user pasted a URL instead of an ID. Provide videoId or url.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class YoutubeTranscribeOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ZoomCreateMeetingInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
connection_id: str = Field(..., alias="connectionId", description="A Zoom connectionId from list_service_connections, with actionsEnabled true.")
|
|
9
|
+
topic: str = Field(..., alias="topic", description="Meeting topic/title.")
|
|
10
|
+
start_date_time: str = Field(..., alias="startDateTime", description="Start time, ISO 8601, e.g. \"2026-07-15T09:00:00-06:00\".")
|
|
11
|
+
duration_minutes: int | None = Field(None, alias="durationMinutes", description="Meeting duration in minutes. Default 30.")
|
|
12
|
+
timezone: str | None = Field(None, alias="timezone", description="IANA timezone, e.g. \"America/Denver\".")
|
|
13
|
+
agenda: str = Field(..., alias="agenda", description="Required meeting description or agenda. Preserve the purpose and context supplied by the user.")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ZoomCreateMeetingOutput(BaseModel):
|
|
17
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessAcceptShareInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
share_id: str = Field(..., alias="shareId", description="The shareId from note-inbox to accept.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AccessAcceptShareOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
15
|
+
|
|
16
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth/scope/lookup error.")
|
|
17
|
+
share_id: str | None = Field(None, alias="shareId", description="The accepted share.")
|
|
18
|
+
owner: str | None = Field(None, alias="owner", description="Identity who shared the note.")
|
|
19
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessApproveSenderInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
sender_identity: str = Field(..., alias="senderIdentity", description="Identity (email or user id) to approve as a sender.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AccessApproveSenderOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
15
|
+
|
|
16
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth error.")
|
|
17
|
+
sender: str | None = Field(None, alias="sender", description="The identity that was approved.")
|
|
18
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessDeclineShareInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
share_id: str = Field(..., alias="shareId", description="The shareId from note-inbox to decline.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AccessDeclineShareOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
15
|
+
|
|
16
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth/scope/lookup error.")
|
|
17
|
+
share_id: str | None = Field(None, alias="shareId", description="The declined share.")
|
|
18
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessInboxSettingsInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
allow_unapproved_senders: bool = Field(..., alias="allowUnapprovedSenders", description="Set true to accept invites/shares from anyone; false to require approval.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AccessInboxSettingsOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
15
|
+
|
|
16
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth error.")
|
|
17
|
+
allow_unapproved_senders: bool | None = Field(None, alias="allowUnapprovedSenders", description="The setting now in effect.")
|
|
18
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessInviteAccountInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
grantee_identity: str = Field(..., alias="granteeIdentity", description="Identity (email or user id) to invite into your full account.")
|
|
11
|
+
scope: dict[str, Any] | None = Field(None, alias="scope", description="Permissions to grant across your account. Optional; defaults to read+write (read, write, export, index, swap).")
|
|
12
|
+
revoke: bool | None = Field(None, alias="revoke", description="Set true to revoke an existing account invite for this grantee instead of granting one.")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class AccessInviteAccountOutput(BaseModel):
|
|
16
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
17
|
+
|
|
18
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth/scope error.")
|
|
19
|
+
grantee: str | None = Field(None, alias="grantee", description="The identity that was invited or revoked.")
|
|
20
|
+
granted: dict[str, Any] | None = Field(None, alias="granted", description="The permissions now in effect for the grantee. Absent on revoke.")
|
|
21
|
+
revoked: bool | None = Field(None, alias="revoked", description="True when an existing invite was removed.")
|
|
22
|
+
note: str | None = Field(None, alias="note", description="Guidance on next steps for the grantee.")
|
|
23
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessIssueKeyInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier used to resolve the active vault and per-session state. Optional; defaults to the current MCP session.")
|
|
10
|
+
grantee_identity: str = Field(..., alias="granteeIdentity", description="Identity that will own the newly issued key (e.g. an email or user id).")
|
|
11
|
+
vaults: list[str] = Field(..., alias="vaults", description="Vaults the new key is entitled to; the caller must already hold each. At least one required.")
|
|
12
|
+
scope: dict[str, Any] | None = Field(None, alias="scope", description="Scope grant (read/write/export/index/admin/swap). Optional; omit for least-privilege read-only.")
|
|
13
|
+
plan: Literal["free", "pro", "team", "enterprise"] | None = Field(None, alias="plan", description="Subscription plan carried by the key. Optional; defaults to free.")
|
|
14
|
+
expires_in_days: int | None = Field(None, alias="expiresInDays", description="Days until the key expires (1-3650). Optional; omit for a non-expiring key.")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class AccessIssueKeyOutput(BaseModel):
|
|
18
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
19
|
+
|
|
20
|
+
ok: bool = Field(..., alias="ok", description="True when the key was issued; false on auth/scope error.")
|
|
21
|
+
key_id: str | None = Field(None, alias="keyId", description="Stable identifier of the issued key (safe to store/log).")
|
|
22
|
+
secret: str | None = Field(None, alias="secret", description="The key secret — RETURNED ONCE and never retrievable again. Capture it immediately.")
|
|
23
|
+
grantee: str | None = Field(None, alias="grantee", description="Identity the key was issued to.")
|
|
24
|
+
vaults: list[str] | None = Field(None, alias="vaults", description="Vaults the issued key is entitled to.")
|
|
25
|
+
scope: dict[str, Any] | None = Field(None, alias="scope", description="Normalized scope actually granted on the key.")
|
|
26
|
+
plan: str | None = Field(None, alias="plan", description="Subscription plan assigned to the key.")
|
|
27
|
+
expires_at: Any | None = Field(None, alias="expiresAt", description="ISO-8601 expiry timestamp, or null when the key does not expire.")
|
|
28
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessListApprovedSendersInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AccessListApprovedSendersOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
14
|
+
|
|
15
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth error.")
|
|
16
|
+
approved_senders: list[str] | None = Field(None, alias="approvedSenders", description="Identities approved to reach you.")
|
|
17
|
+
allow_unapproved_senders: bool | None = Field(None, alias="allowUnapprovedSenders", description="True if your inbox is open to anyone regardless of this list.")
|
|
18
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessListKeysInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier used to resolve the active vault and per-session state. Optional; defaults to the current MCP session.")
|
|
10
|
+
vault: str | None = Field(None, alias="vault", description="Filter to keys entitled to this vault. Optional; omit to list across all vaults.")
|
|
11
|
+
plan: str | None = Field(None, alias="plan", description="Filter to keys on this plan (free/pro/team/enterprise). Optional; omit to list all plans.")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AccessListKeysOutput(BaseModel):
|
|
15
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
16
|
+
|
|
17
|
+
ok: bool = Field(..., alias="ok", description="True when the listing succeeded; false on auth/scope error.")
|
|
18
|
+
keys: list[dict[str, Any]] | None = Field(None, alias="keys", description="Key metadata for the caller identity. NEVER includes secrets. Present when ok is true.")
|
|
19
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessNoteInboxInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AccessNoteInboxOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
14
|
+
|
|
15
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth error.")
|
|
16
|
+
pending: list[dict[str, Any]] | None = Field(None, alias="pending", description="Pending offers, oldest first. Present when ok is true.")
|
|
17
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessRemoveApprovedSenderInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
sender_identity: str = Field(..., alias="senderIdentity", description="Identity to remove from your approved-senders list.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AccessRemoveApprovedSenderOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
15
|
+
|
|
16
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth error.")
|
|
17
|
+
sender: str | None = Field(None, alias="sender", description="The identity that was removed.")
|
|
18
|
+
removed: bool | None = Field(None, alias="removed", description="True when an existing approval was found and removed.")
|
|
19
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessRevokeKeyInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier used to resolve the active vault and per-session state. Optional; defaults to the current MCP session.")
|
|
10
|
+
key_id: str = Field(..., alias="keyId", description="Identifier of the key to revoke (from access-list-keys). Must be a key the caller owns or fully covers.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AccessRevokeKeyOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
15
|
+
|
|
16
|
+
ok: bool = Field(..., alias="ok", description="True when the revoke operation completed; false on auth/scope error or not-found.")
|
|
17
|
+
key_id: str | None = Field(None, alias="keyId", description="The key that was targeted for revocation.")
|
|
18
|
+
revoked: bool | None = Field(None, alias="revoked", description="True if the key is now revoked.")
|
|
19
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false (e.g. \"key not found\").")
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AccessRevokeShareInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
api_key: str | None = Field(None, alias="apiKey", description="Caller API key (Bearer secret). Optional when the MCP session is already authenticated; the server resolves auth from the session.")
|
|
9
|
+
session_id: str | None = Field(None, alias="sessionId", description="Session identifier. Optional; defaults to the current MCP session.")
|
|
10
|
+
share_id: str = Field(..., alias="shareId", description="The shareId to revoke.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AccessRevokeShareOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
15
|
+
|
|
16
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth/scope/lookup error.")
|
|
17
|
+
share_id: str | None = Field(None, alias="shareId", description="The revoked share.")
|
|
18
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|