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,17 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AuditSiteInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
url: str = Field(..., alias="url", description="Public website URL or domain for a full technical SEO audit (issues, link graph, indexability, headings, images). For plain content use extract_site instead.")
|
|
9
|
+
max_pages: int | None = Field(None, alias="maxPages", description="Maximum pages to crawl and audit. Always writes a folder of analysis files plus per-page content, returning a summary plus the folder path.")
|
|
10
|
+
rotate_proxies: bool | None = Field(None, alias="rotateProxies", description="Route page fetches through rotating residential proxies to defeat rate-limiting and bot blocks. Slower/pricier — use only when a site blocks normal crawling.")
|
|
11
|
+
rotate_proxy_every: int | None = Field(None, alias="rotateProxyEvery", description="When rotateProxies is on, pages fetched per proxy before rotating. Default 30.")
|
|
12
|
+
background: bool | None = Field(None, alias="background", description="Run the audit as a background job instead of blocking this call, returning a jobId immediately — poll it with check_site_export to get a downloadable zip (full audit report, all page content, plus real image files if downloadImages is set) once ready. Use for large sites where a synchronous call would be slow.")
|
|
13
|
+
download_images: bool | None = Field(None, alias="downloadImages", description="Download every discovered image as a real file into the export bundle (not just image URLs/stats). OFF by default — must be explicitly set true. Implies background regardless of the background flag, since downloading a whole site's images is too slow to run synchronously. Capped at 20 images/page and 500 images/site.")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AuditSiteOutput(BaseModel):
|
|
17
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class BrowserClickInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
x: float = Field(..., alias="x", description="X coordinate to click, in screenshot pixels. Use only coordinates from the latest browser_screenshot, browser_read, or browser_locate result; do not guess.")
|
|
10
|
+
y: float = Field(..., alias="y", description="Y coordinate to click, in screenshot pixels. Use only coordinates from the latest browser_screenshot, browser_read, or browser_locate result; do not guess.")
|
|
11
|
+
button: Literal["left", "right", "middle"] | None = Field(None, alias="button", description="Mouse button.")
|
|
12
|
+
num_clicks: int | None = Field(None, alias="num_clicks", description="Number of clicks, e.g. 2 for double-click.")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class BrowserClickOutput(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 BrowserCloseInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BrowserCloseOutput(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 BrowserExtensionDeleteInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
name: str = Field(..., alias="name", description="Name of the extension to remove, as returned by browser_extension_list.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BrowserExtensionDeleteOutput(BaseModel):
|
|
12
|
+
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 BrowserExtensionImportInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
store_url: str = Field(..., alias="store_url", description="Chrome Web Store URL of the extension to add, e.g. https://chromewebstore.google.com/detail/<slug>/<id>.")
|
|
9
|
+
name: str = Field(..., alias="name", description="Short name to save this extension under, e.g. \"ani-ai\". Reuse it later in extension_names on browser_open.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BrowserExtensionImportOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class BrowserExtensionListInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class BrowserExtensionListOutput(BaseModel):
|
|
10
|
+
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 BrowserGotoInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
url: str = Field(..., alias="url", description="URL to navigate the browser to.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BrowserGotoOutput(BaseModel):
|
|
13
|
+
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 BrowserListReplaysInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BrowserListReplaysOutput(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 BrowserListSessionsInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
include_closed: bool | None = Field(None, alias="include_closed", description="Include closed sessions in the list.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BrowserListSessionsOutput(BaseModel):
|
|
12
|
+
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 BrowserLocateInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
targets: list[dict[str, Any]] = Field(..., alias="targets", description="DOM targets to locate in the current viewport. Use selectors for exact elements, or text for visible text ranges.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BrowserLocateOutput(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 BrowserOpenInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
label: str | None = Field(None, alias="label", description="Optional human label for this session, shown in the watch console.")
|
|
9
|
+
url: str | None = Field(None, alias="url", description="Optional URL to navigate to immediately after opening.")
|
|
10
|
+
profile: str | None = Field(None, alias="profile", description="Optional saved hosted profile name to load a logged-in session for a site.")
|
|
11
|
+
save_profile_changes: bool | None = Field(None, alias="save_profile_changes", description="Persist cookies/storage back to the named profile on close. Avoid parallel sessions writing to the same profile.")
|
|
12
|
+
timeout_seconds: int | None = Field(None, alias="timeout_seconds", description="Session lifetime before auto-termination. Defaults to 600.")
|
|
13
|
+
extension_names: list[str] | None = Field(None, alias="extension_names", description="Names of extensions previously added with browser_extension_import (see browser_extension_list for what's available) to load into this session. Loading extensions restarts the browser, adding a few seconds to startup.")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class BrowserOpenOutput(BaseModel):
|
|
17
|
+
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 BrowserPressInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
keys: list[str] = Field(..., alias="keys", description="Keys or combinations to press, e.g. [\"Return\"], [\"Ctrl+a\"], [\"Ctrl+Shift+Tab\"].")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BrowserPressOutput(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 BrowserProfileConnectInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
email: str | None = Field(None, alias="email", description="Account email for the login. Derives a stable profile name and is recorded as a note. Does NOT import existing cookies — the user signs in fresh.")
|
|
9
|
+
profile: str | None = Field(None, alias="profile", description="Profile to add this login to. Omit to derive from email. A single profile holds MANY logins — pass the same name with a different domain to stack accounts.")
|
|
10
|
+
domain: str | None = Field(None, alias="domain", description="Site to log into, e.g. chatgpt.com, claude.ai, reddit.com. Defaults to chatgpt.com.")
|
|
11
|
+
login_url: str | None = Field(None, alias="login_url", description="Login page for the domain. Defaults to https://<domain>/.")
|
|
12
|
+
url: str | None = Field(None, alias="url", description="Deprecated alias for login_url.")
|
|
13
|
+
note: str | None = Field(None, alias="note", description="Free-text note describing this login. Surfaced by browser_profile_list.")
|
|
14
|
+
label: str | None = Field(None, alias="label", description="Optional human label for this sign-in setup session.")
|
|
15
|
+
timeout_seconds: int | None = Field(None, alias="timeout_seconds", description="Sign-in session lifetime before auto-termination. Defaults to 600.")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BrowserProfileConnectOutput(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 BrowserProfileListInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
profile: str | None = Field(None, alias="profile", description="Profile whose saved logins to list. Omit to derive from email.")
|
|
9
|
+
email: str | None = Field(None, alias="email", description="Account email used to derive the profile name when profile is not given.")
|
|
10
|
+
domain: str | None = Field(None, alias="domain", description="Restrict to one site login, e.g. chatgpt.com. Use this to poll a single login until its status reads AUTHENTICATED.")
|
|
11
|
+
connection_id: str | None = Field(None, alias="connection_id", description="A specific login connection id returned by browser_profile_connect, to poll just that one.")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class BrowserProfileListOutput(BaseModel):
|
|
15
|
+
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 BrowserReadInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BrowserReadOutput(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 BrowserReplayAnnotateInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
replay_id: str = Field(..., alias="replay_id", description="The replay id returned by browser_replay_start or browser_list_replays.")
|
|
10
|
+
annotations: list[dict[str, Any]] = Field(..., alias="annotations", description="Timed overlay annotations. Prefer ones from browser_replay_mark; otherwise use exact DOM bounds from browser_locate.")
|
|
11
|
+
filename: str | None = Field(None, alias="filename", description="Optional output MP4 filename. Defaults to a timestamped filename.")
|
|
12
|
+
source_width: float | None = Field(None, alias="source_width", description="Width of the screenshot coordinate space used for annotations. Defaults to the replay video width.")
|
|
13
|
+
source_height: float | None = Field(None, alias="source_height", description="Height of the annotation coordinate space; if smaller than the replay video height, the browser chrome offset is inferred.")
|
|
14
|
+
source_left_offset: float | None = Field(None, alias="source_left_offset", description="Explicit X offset from annotation to replay video coordinates. Usually omitted.")
|
|
15
|
+
source_top_offset: float | None = Field(None, alias="source_top_offset", description="Explicit Y offset from annotation to replay video coordinates. Usually omitted.")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BrowserReplayAnnotateOutput(BaseModel):
|
|
19
|
+
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 BrowserReplayDownloadInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
replay_id: str = Field(..., alias="replay_id", description="The replay id returned by browser_replay_start or browser_list_replays.")
|
|
10
|
+
filename: str | None = Field(None, alias="filename", description="Optional local MP4 filename. Defaults to a timestamped replay filename.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class BrowserReplayDownloadOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class BrowserReplayMarkInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions. A replay must already be recording.")
|
|
9
|
+
target: dict[str, Any] = Field(..., alias="target", description="The exact DOM element or text range to mark in the current viewport.")
|
|
10
|
+
type: Literal["box", "circle", "underline", "arrow"] | None = Field(None, alias="type", description="Annotation style to generate.")
|
|
11
|
+
label: str | None = Field(None, alias="label", description="Optional callout text to render near the target.")
|
|
12
|
+
color: str | None = Field(None, alias="color", description="Annotation color as hex, e.g. #ff3b30.")
|
|
13
|
+
thickness: float | None = Field(None, alias="thickness", description="Stroke thickness in pixels. Defaults to 5.")
|
|
14
|
+
padding: float | None = Field(None, alias="padding", description="Pixels to expand the DOM bounds so the highlight does not touch the text edge.")
|
|
15
|
+
start_offset_seconds: float | None = Field(None, alias="start_offset_seconds", description="Offset from the current replay time; negative appears just before the mark action.")
|
|
16
|
+
duration_seconds: float | None = Field(None, alias="duration_seconds", description="How long the annotation should remain visible.")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class BrowserReplayMarkOutput(BaseModel):
|
|
20
|
+
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 BrowserReplayStartInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BrowserReplayStartOutput(BaseModel):
|
|
12
|
+
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 BrowserReplayStopInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
replay_id: str = Field(..., alias="replay_id", description="The replay id returned by browser_replay_start or browser_list_replays.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BrowserReplayStopOutput(BaseModel):
|
|
13
|
+
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 BrowserScreenshotInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BrowserScreenshotOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class BrowserScrollInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
delta_y: float | None = Field(None, alias="delta_y", description="Vertical scroll in wheel units. Positive scrolls down, negative up.")
|
|
10
|
+
delta_x: float | None = Field(None, alias="delta_x", description="Horizontal scroll in wheel units.")
|
|
11
|
+
x: float | None = Field(None, alias="x", description="X position to scroll at. Defaults to screen center.")
|
|
12
|
+
y: float | None = Field(None, alias="y", description="Y position to scroll at. Defaults to screen center.")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class BrowserScrollOutput(BaseModel):
|
|
16
|
+
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 BrowserTypeInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
session_id: str = Field(..., alias="session_id", description="The session id returned by browser_open or browser_list_sessions.")
|
|
9
|
+
text: str = Field(..., alias="text", description="Text to type at the current focus. Click a field first to focus it.")
|
|
10
|
+
delay: int | None = Field(None, alias="delay", description="Optional per-keystroke delay in ms for human-like typing.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class BrowserTypeOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class BulkDeleteNotesInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
vault: str | None = Field(None, alias="vault", description="Vault to delete from. Optional; defaults to the session active vault, then the first vault the caller is entitled to.")
|
|
9
|
+
filters: list[dict[str, Any]] | None = Field(None, alias="filters", description="Filters to AND together. At least one of filters/tags is required.")
|
|
10
|
+
tags: list[str] | None = Field(None, alias="tags", description="Match notes carrying ANY of these tags (ORed among themselves, ANDed with filters). At least one of filters/tags is required.")
|
|
11
|
+
dry_run: bool | None = Field(None, alias="dryRun", description="When true (default), previews matches without deleting anything. Pass false to actually delete.")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class BulkDeleteNotesOutput(BaseModel):
|
|
15
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
16
|
+
|
|
17
|
+
ok: bool = Field(..., alias="ok", description="True on success; false on auth/scope/validation error.")
|
|
18
|
+
vault: str | None = Field(None, alias="vault", description="The vault operated on (after defaulting). Present when ok is true.")
|
|
19
|
+
dry_run: bool | None = Field(None, alias="dryRun", description="Echoes whether this call was a preview or a real delete.")
|
|
20
|
+
match_count: float | None = Field(None, alias="matchCount", description="Number of notes matching the filters. Present on a dry run.")
|
|
21
|
+
sample: list[dict[str, Any]] | None = Field(None, alias="sample", description="Up to 20 matching notes, most-recently-updated first. Present on a dry run.")
|
|
22
|
+
deleted: float | None = Field(None, alias="deleted", description="Number of notes actually deleted. Present when dryRun is false.")
|
|
23
|
+
deleted_paths: list[str] | None = Field(None, alias="deletedPaths", description="Paths of the deleted notes. Present when dryRun is false.")
|
|
24
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CallServiceConnectionActionInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
connection_id: str = Field(..., alias="connectionId", description="A connectionId from list_service_connections with actionsEnabled true.")
|
|
9
|
+
tool: str = Field(..., alias="tool", description="One exact tool name from that connection's actionTools. Arbitrary provider action names and adminBlockedTools are rejected server-side.")
|
|
10
|
+
args: dict[str, Any] = Field(..., alias="args", description="Arguments required by the selected action. The provider action validates its own typed input before execution.")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CallServiceConnectionActionOutput(BaseModel):
|
|
14
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CaptureSerpPageSnapshotsInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
urls: list[str] | None = Field(None, alias="urls", description="Public HTTP/HTTPS URLs to capture. Provide exactly one of urls or targets. Do not pass localhost, private IPs, file URLs, or internal admin URLs.")
|
|
9
|
+
targets: list[dict[str, Any]] | None = Field(None, alias="targets", description="Structured targets. Provide exactly one of targets or urls; use targets when source kind or position should be preserved.")
|
|
10
|
+
max_concurrency: int | None = Field(None, alias="maxConcurrency", description="Parallel page captures.")
|
|
11
|
+
timeout_ms: int | None = Field(None, alias="timeoutMs", description="Per-page capture timeout in milliseconds; timeouts return as structured capture failures.")
|
|
12
|
+
debug: bool | None = Field(None, alias="debug", description="Include sanitized browser/proxy diagnostics.")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class CaptureSerpPageSnapshotsOutput(BaseModel):
|
|
16
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CaptureSerpSnapshotInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
query: str = Field(..., alias="query", description="Search query to capture. KEEP the place in the query text for localized captures (e.g. \"botox clinic austin tx\") and also set location.")
|
|
9
|
+
location: str | None = Field(None, alias="location", description="City, region, country, or service area for localized Google results.")
|
|
10
|
+
gl: str | None = Field(None, alias="gl", description="Google country code inferred from the requested market.")
|
|
11
|
+
hl: str | None = Field(None, alias="hl", description="Google interface/content language inferred from the user request.")
|
|
12
|
+
device: Literal["desktop", "mobile"] | None = Field(None, alias="device", description="SERP device context. Use mobile only for mobile rankings/evidence.")
|
|
13
|
+
proxy_mode: Literal["location", "configured", "none"] | None = Field(None, alias="proxyMode", description="Leave unset (clean egress). Do NOT set \"location\" just because a city was named — that comes from city-in-query wording. \"location\" forces residential geo-IP, is frequently CAPTCHA-blocked, and accepts failures.")
|
|
14
|
+
proxy_zip: str | None = Field(None, alias="proxyZip", description="US ZIP for residential geo-IP targeting. Only meaningful with proxyMode \"location\".")
|
|
15
|
+
pages: int | None = Field(None, alias="pages", description="Google result pages to capture. Use 2 only for deeper ranking evidence.")
|
|
16
|
+
debug: bool | None = Field(None, alias="debug", description="Include sanitized browser/proxy/location diagnostics.")
|
|
17
|
+
include_page_snapshots: bool | None = Field(None, alias="includePageSnapshots", description="Also capture ranking-page snapshots for selected SERP URLs. Each attempted snapshot adds 1 Credit.")
|
|
18
|
+
page_snapshot_limit: int | None = Field(None, alias="pageSnapshotLimit", description="Maximum ranking-page snapshots when includePageSnapshots is true. This capacity is held up front and unused capacity is refunded.")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class CaptureSerpSnapshotOutput(BaseModel):
|
|
22
|
+
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 CheckSiteExportInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
job_id: str = Field(..., alias="jobId", description="The jobId returned by extract_site or audit_site when called with background (or downloadImages) set — poll this until status is \"complete\" (or \"failed\").")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CheckSiteExportOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CostUsageInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
period: str | None = Field(None, alias="period", description="Billing month as YYYY-MM. Optional; defaults to the current month.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CostUsageOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
13
|
+
|
|
14
|
+
ok: bool = Field(..., alias="ok", description="True when usage was computed; false on auth/scope error.")
|
|
15
|
+
identity: str | None = Field(None, alias="identity", description="The caller identity the costs are scoped to.")
|
|
16
|
+
period: str | None = Field(None, alias="period", description="Billing month the figures cover (YYYY-MM).")
|
|
17
|
+
plan: str | None = Field(None, alias="plan", description="Caller plan.")
|
|
18
|
+
cost_usd: float | None = Field(None, alias="costUsd", description="Total metered cost this period in USD.")
|
|
19
|
+
by_source: dict[str, Any] | None = Field(None, alias="bySource", description="Cost breakdown by source (llm/embed/storage/compute).")
|
|
20
|
+
free_cap_usd: float | None = Field(None, alias="freeCapUsd", description="The free-tier monthly processing cap in USD.")
|
|
21
|
+
free_cap_reached: bool | None = Field(None, alias="freeCapReached", description="True when a free caller is at/over the cap (embeds/optimization paused).")
|
|
22
|
+
pro_budget_usd: float | None = Field(None, alias="proBudgetUsd", description="The Pro soft fair-use budget (price / 3) in USD.")
|
|
23
|
+
total_bytes: float | None = Field(None, alias="totalBytes", description="Total stored bytes for the caller.")
|
|
24
|
+
total_gb: float | None = Field(None, alias="totalGb", description="Total stored GB for the caller.")
|
|
25
|
+
quota_gb: Any | None = Field(None, alias="quotaGb", description="Storage quota in GB for the caller plan. Null when the plan is unlimited.")
|
|
26
|
+
unlimited: bool | None = Field(None, alias="unlimited", description="True when the caller is on the unlimited plan (no storage ceiling, exempt from the free cost cap).")
|
|
27
|
+
by_tier: list[dict[str, Any]] | None = Field(None, alias="byTier", description="Operator-only: blended cost-per-user per plan for the current period.")
|
|
28
|
+
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 CreateChannelInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
name: str = Field(..., alias="name", description="Channel name. Must match ^[A-Za-z0-9 _-]{1,48}$.")
|
|
9
|
+
invite_members: list[dict[str, Any]] | None = Field(None, alias="inviteMembers", description="Members to invite at creation. Optional; you can also invite later with share-vault.")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CreateChannelOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
14
|
+
|
|
15
|
+
ok: bool = Field(..., alias="ok", description="True when the channel was created; false on auth/scope/validation error.")
|
|
16
|
+
channel: str | None = Field(None, alias="channel", description="The channel (vault) name. Present when ok is true.")
|
|
17
|
+
created: bool | None = Field(None, alias="created", description="True if newly created; false if a vault with this name already existed for you (idempotent).")
|
|
18
|
+
members: list[dict[str, Any]] | None = Field(None, alias="members", description="Per-member invite result. A member entry with ok:false did NOT block channel creation; invite them again later once approved.")
|
|
19
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CreateScheduledActionInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
description: str = Field(..., alias="description", description="Free-text description of what this action should do each time it runs.")
|
|
9
|
+
vault: str = Field(..., alias="vault", description="The vault this action writes its results into. You must already have write access to it.")
|
|
10
|
+
cadence: Literal["once", "daily", "weekly", "monthly"] = Field(..., alias="cadence", description="How often this action runs. \"once\" fires a single time and then completes.")
|
|
11
|
+
execution_mode: Literal["agent", "connection_sync"] | None = Field(None, alias="executionMode", description="How to execute each run. \"agent\" (default) lets an agent follow the description. \"connection_sync\" deterministically ingests data from the schedule's bound connections using only their approved read-only tools; bind at least one connection before it runs. Search Console connection_sync also maintains a typed table exposed as the connection tableName.")
|
|
12
|
+
time_of_day: str | None = Field(None, alias="timeOfDay", description="24-hour HH:MM clock time to run at, in the given timezone. Optional — omit to run at any time during the period (matches prior default behavior).")
|
|
13
|
+
timezone: str | None = Field(None, alias="timezone", description="IANA timezone name, e.g. \"America/Denver\". Only meaningful together with timeOfDay or deployDate. Omit to use the account's default timezone (set via set-schedule-defaults), falling back to UTC.")
|
|
14
|
+
deploy_date: str | None = Field(None, alias="deployDate", description="Calendar date (YYYY-MM-DD, in the given timezone) this action should first become eligible to run — its deployment/start date. For recurring cadences, the first occurrence lands on or after this date; every later occurrence still follows the normal cadence. For cadence \"once\", this (combined with timeOfDay if given) is exactly what day it fires. Omit to start immediately.")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class CreateScheduledActionOutput(BaseModel):
|
|
18
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
19
|
+
|
|
20
|
+
ok: bool = Field(..., alias="ok", description="True when the scheduled action was created.")
|
|
21
|
+
id: str | None = Field(None, alias="id", description="The new scheduled action id.")
|
|
22
|
+
next_run_at: str | None = Field(None, alias="nextRunAt", description="When it will first run.")
|
|
23
|
+
execution_mode: Literal["agent", "connection_sync"] | None = Field(None, alias="executionMode", description="The stored execution mode. Defaults to agent when omitted from the request.")
|
|
24
|
+
error: str | None = Field(None, alias="error", description="Human-readable failure reason when ok is false.")
|
|
25
|
+
code: str | None = Field(None, alias="code", description="Machine-readable denial code when creation is refused.")
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CreateSecureVaultInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
name: str = Field(..., alias="name", description="Vault name. Must match ^[A-Za-z0-9 _-]{1,48}$. Defaults to a name like \"Passwords\" if the caller has no preference.")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CreateSecureVaultOutput(BaseModel):
|
|
12
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
13
|
+
|
|
14
|
+
ok: bool = Field(..., alias="ok", description="True when the vault was created; false on auth/scope/validation error.")
|
|
15
|
+
vault: str | None = Field(None, alias="vault", description="The vault name. Present when ok is true.")
|
|
16
|
+
created: bool | None = Field(None, alias="created", description="True if newly created; false if a vault with this name already existed for you (idempotent) — note this does NOT confirm the existing vault is secure-kind; check list-vaults if unsure.")
|
|
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 CreateWebhookInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
vault: str | None = Field(None, alias="vault", description="Vault this webhook writes into. Optional; defaults to \"Issues\".")
|
|
9
|
+
label: str | None = Field(None, alias="label", description="Optional human-readable label to help you remember what this webhook is for, e.g. \"Website contact form\".")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CreateWebhookOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
14
|
+
|
|
15
|
+
ok: bool = Field(..., alias="ok", description="")
|
|
16
|
+
id: str | None = Field(None, alias="id", description="Webhook id, for listing/revoking later.")
|
|
17
|
+
url: str | None = Field(None, alias="url", description="The full webhook URL — POST here to write a note.")
|
|
18
|
+
vault: str | None = Field(None, alias="vault", description="")
|
|
19
|
+
error: str | None = Field(None, alias="error", description="")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CreditsInfoInput(BaseModel):
|
|
6
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
|
7
|
+
|
|
8
|
+
item: str | None = Field(None, alias="item", description="Optional tool, action, or feature to look up, e.g. \"maps reviews\", \"extract_url\", \"YouTube transcription\", or \"concurrency\"")
|
|
9
|
+
include_ledger: bool | None = Field(None, alias="includeLedger", description="Whether to include recent credit ledger entries")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class CreditsInfoOutput(BaseModel):
|
|
13
|
+
model_config = ConfigDict(populate_by_name=True, extra="allow")
|