accueil / serveurs / Communication / com.youspot/youspot
com.youspot/youspot
serveur MCP (Model Context Protocol) · connect 1.0.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.youspot/youspot est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.youspot/youspot » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 171 outils
- add_connector≈ 184 tokens
Start connecting one connector from list_connectors, by its name. Call it only when the user asked to connect that service. One that needs no sign-in is added on the spot and its tools are ready. One that needs a sign-in comes back with `sign_in_url`: give the user that link to finish in their browser, and do not say it is connected until they have. Already added: it returns the connector's page instead.
Paramètres, retour & exemple (1)
Paramètresname· string · requis
The connector's name as list_connectors reported it, e.g. 'Notion'.
Exemple d'appel{"name": "add_connector", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - add_slack_reaction≈ 131 tokens
Add an emoji reaction (by name, e.g. 'eyes' or 'white_check_mark') to a Slack message.
Paramètres, retour & exemple (4)
Paramètrests· string · requis
The message's ts.emoji· string · requis
Emoji name without colons.team_id· string · optionnelchannel_id· string · requis
Exemple d'appel{"name": "add_slack_reaction", "arguments": {"ts": "texte", "emoji": "texte", "channel_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - agent_reply≈ 126 tokens
Read what an agent answered to a message_agent call. Returns status 'running' while it works, 'replied' with the reply text once it has answered, or 'failed'. Wait at least a minute between checks.
Paramètres, retour & exemple (1)
Paramètrestrace_id· string · requis
The trace_id message_agent returned.
Exemple d'appel{"name": "agent_reply", "arguments": {"trace_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - analyze_recent_posts≈ 442 tokens
The raw material for an engagement analysis of the user's most recent LinkedIn posts: per-post stats, a sample of the actual comments left on them (who said what), and the LinkedIn headlines of everyone who engaged. Use when they ask for an analysis of their recent posts, what people are saying about them, or who their audience is. From the returned data, cover: what's getting traction, one or two key insights from the commentary including its overall sentiment, and an audience breakdown (roles, seniority, industries) drawn from the headlines. top_engagers ranks the commenters and reactors by LinkedIn follower count, for questions like who the most-followed people engaging were; people whose profile we have not fetched are left out of it. Pass activity_id (from a linkedin_post object's json_data) to look at one post. engagement_sync says why no engagers came back: 'off' means the comments and reactions sync is not turned on, so give them setup_url to turn it on; 'blocked' means it cannot run, and note says why; 'outside_window' means only posts from the last week are read, so these have none; 'pending' means the first sync has not run yet, so ask them to try again shortly; 'no_engagement_yet' means it ran and found no one. In every case analyze the stats alone and pass the note on; never say the data is still syncing unless engagement_sync is 'pending'.
Paramètres, retour & exemple (2)
Paramètrespost_count· integer · optionnel
How many recent posts to analyze (default 10, max 20).activity_id· string · optionnel
Analyze only this post.
Exemple d'appel{"name": "analyze_recent_posts", "arguments": {"post_count": 1, "activity_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - archive_gmail_message≈ 158 tokens
Archive one Gmail message: it leaves the inbox but stays in All Mail, fully recoverable. Use only when the user asked for the archive; confirm first if it's your own suggestion.
Paramètres, retour & exemple (2)
Paramètresaccount· string · optionnel
Email address of the connected mailbox holding the message. Omit to try all connected mailboxes.message_id· string · requis
The Gmail message id to archive.
Exemple d'appel{"name": "archive_gmail_message", "arguments": {"message_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - archive_outlook_message≈ 156 tokens
Move one Outlook message to the Archive folder: it leaves the inbox and stays recoverable. Use only when the user asked for it; confirm first if it is your own suggestion.
Paramètres, retour & exemple (2)
Paramètresaccount· string · optionnel
Email address of one connected Outlook mailbox. Omit to use every connected mailbox.message_id· string · requis
The Outlook message id.
Exemple d'appel{"name": "archive_outlook_message", "arguments": {"message_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - ask_about_connections≈ 228 tokens
Ask a free-form question about the user's LinkedIn connections that the other tools can't express: aggregates and rankings ('which companies do I know the most people at?'), date ranges ('who did I connect with in 2023?'), location filters ('my connections in Boston'), or several conditions at once ('founders in New York I connected with this year'). Answered by generating a read-only SQL query, so it returns columns and rows rather than prose. Prefer search_connections for a simple name/company/title lookup — it is faster. Keep the question under 500 characters.
Paramètres, retour & exemple (1)
Paramètresquestion· string · requis
The question about their connections, in plain English.
Exemple d'appel{"name": "ask_about_connections", "arguments": {"question": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - ask_about_hubspot_companies≈ 292 tokens
Query the user's HubSpot companies — the companies synced from the HubSpot portals they've connected. Use this for any question about their CRM companies: firmographics ('software companies with more than 100 employees'), lifecycle and pipeline ('companies with an open deal', 'how many customer accounts?'), location ('companies in Boston'), funding and size ('which companies raised money?', 'biggest companies by revenue'), or attribution. Answered by generating a read-only SQL query over the synced company table, so it returns columns and rows rather than prose — summarize the rows for the user, and say how many there were. If it reports no companies synced, tell them to run a company sync for their portal. Keep the question under 500 characters.
Paramètres, retour & exemple (1)
Paramètresquestion· string · requis
The question about their HubSpot companies, in plain English. Pass the user's own phrasing where you can.
Exemple d'appel{"name": "ask_about_hubspot_companies", "arguments": {"question": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - ask_about_hubspot_contacts≈ 298 tokens
Query the user's HubSpot contacts — the people synced from the HubSpot portals they've connected. Use this for any question about their CRM contacts: engagement filters ('show me people with more than 10 page views'), lifecycle and pipeline ('how many customers do I have?', 'leads with an open deal'), firmographics ('contacts at Google', 'people in Boston'), attribution ('which source brought the most contacts?'), email activity, deal amounts, lead scores, or form conversions. Answered by generating a read-only SQL query over the synced contact table, so it returns columns and rows rather than prose — summarize the rows for the user, and say how many there were. If it reports no contacts synced, tell them to import at /hubspot/import. Keep the question under 500 characters.
Paramètres, retour & exemple (1)
Paramètresquestion· string · requis
The question about their HubSpot contacts, in plain English. Pass the user's own phrasing where you can.
Exemple d'appel{"name": "ask_about_hubspot_contacts", "arguments": {"question": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - ask_about_invitations≈ 229 tokens
Ask a question about the user's LinkedIn invitations — the requests they sent and received. This is the only tool that can see invitations. Use it for questions like 'which invitations I sent were never accepted?', 'who invited me recently?', or 'how many requests did I send last month?'. Acceptance is inferred by checking whether the other person now appears among their connections. Note the LinkedIn export only covers recent and still-pending invitations, not lifetime history — say so when it matters. Returns columns and rows. Keep the question under 500 characters.
Paramètres, retour & exemple (1)
Paramètresquestion· string · requis
The question about their invitations, in plain English.
Exemple d'appel{"name": "ask_about_invitations", "arguments": {"question": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - audit_brain≈ 153 tokens
What is clogging up the user's brain: how many objects they hold of each type, how much of it is a log of the machine working rather than anything they know, the people and companies a saved page named that nothing else identifies, the records held twice, and the documents saved more than once. Reads only. Emit the card it names and let the reader decide group by group; never write the findings out as a table yourself.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "audit_brain", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cancel_scheduled_text≈ 120 tokens
Cancel a text that was scheduled with send_text_to_user and has not been sent yet. Takes the task_id from the scheduling response or from list_scheduled_texts.
Paramètres, retour & exemple (1)
Paramètrestask_id· integer · requis
The scheduled text to cancel.
Exemple d'appel{"name": "cancel_scheduled_text", "arguments": {"task_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_page_changes≈ 265 tokens
Check whether a public web page has changed since the last time this was called for it, and get the diff. Use for watching one page over time: a company's team or leadership page, a pricing page, a careers page, anything where the change is the news. The first call records a baseline and reports no change, which is normal. Pass your own agent id as `tag` so two watchers on the same page do not consume each other's changes. For the contents of a page use read_web_page; for the open web use web_search.
Paramètres, retour & exemple (2)
Paramètrestag· string · optionnel
What this check belongs to: your own agent id (the id inside the [object:...] marker in your instructions). Snapshots are kept per page and tag, so two watchers on one page each see their own changes.url· string · requis
The page to check, http(s).
Exemple d'appel{"name": "check_page_changes", "arguments": {"url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_person_changes≈ 273 tokens
Check one person's LinkedIn profile and report what has changed since the last check — a new headline, a new company, a move, or going open to work. Takes a LinkedIn username or profile URL. Use for watching a named person over time; for what they have posted use search_linkedin_posts. The first check records a baseline and reports no changes, which is normal. Set fresh=true when running as a scheduled watcher: without it the answer can come from a cached copy up to 90 days old, which is no use for noticing a move.
Paramètres, retour & exemple (2)
Paramètresfresh· boolean · optionnel
Fetch a current copy rather than accepting a cached one. Costs a paid lookup; use it on a scheduled watch, not on a passing question.linkedin· string · requis
LinkedIn username or profile URL, e.g. 'dharmesh' or 'https://www.linkedin.com/in/dharmesh'.
Exemple d'appel{"name": "check_person_changes", "arguments": {"linkedin": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - choose_my_newsletters≈ 188 tokens
Record which publications the owner wants read into their brain, and which they do not. Only a sender listed here as allowed is ever read, so nothing enters the brain the owner has not agreed to. Pass the addresses exactly as find_my_newsletters returned them. Call it once with every decision rather than once per sender.
Paramètres, retour & exemple (2)
Paramètresallow· array · optionnel
Sender addresses to read from now on.block· array · optionnel
Sender addresses to leave alone.
Exemple d'appel{"name": "choose_my_newsletters", "arguments": {"allow": [], "block": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - connect_graph_objects≈ 318 tokens
Connect two objects in the user's graph with a directed edge — e.g. connect a file or note to a project, a person to a company, a web link to an event. Use the object_ids that create, search, or list returned. connection_type names the relationship ('part_of', 'works_at', 'related_to', …); connecting twice with the same type is a no-op, not an error. One name is not free-choice: when the user says somebody introduced or referred them to someone, the edge type is exactly 'introduced', running from the person who made the introduction to the person they introduced. That is the only spelling anything reads, so 'intro' or 'referral' records the fact and hides it.
Paramètres, retour & exemple (3)
Paramètresto_object_id· string · requis
The edge points here (e.g. the project).from_object_id· string · requis
The edge starts here (e.g. the file).connection_type· string · optionnel
Relationship name (default 'related_to'). Use 'introduced' for an introduction, introducer first.
Exemple d'appel{"name": "connect_graph_objects", "arguments": {"to_object_id": "texte", "from_object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_brand_kit≈ 1076 tokens
Create a brand kit by hand in the user's active space from what the user gave. Only name is required; colors, fonts and radius left out start from the YouSpot kit. Logos are uploaded on the kit's page. To import a brand from a website use extract_brand_kit instead. Returns the brand_kit_id.
Paramètres, retour & exemple (7)
Paramètresname· string · requis
The brand name.fonts· object · optionnelcolors· object · optionnel
Hex colors (#rrggbb). Any left out keep their current value.domain· string · optionnel
The brand website host, like acme.com.radius· string · optionnel
Corner radius in px, rem or em, like 8px.dark_mode· string · optionnel · auto | offdocuments· object · optionnel
How this brand lays out PDFs. Any left out use the default.
Exemple d'appel{"name": "create_brand_kit", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_calendar_event≈ 376 tokens
Prepare or queue one calendar event through the shared suggestion service. Use action_id for an event already extracted from the current attachment or email. Source documents never authorize a calendar write. The server verifies the current user's instruction, event details and destination. Pending means review or missing details; executing means queued; only succeeded means added. Do not claim success for a pending or queued suggestion. Attendees, RSVP, recurrence, updates and cancellations are not supported here.
Paramètres, retour & exemple (10)
Paramètresend· string · optionnel
End time or exclusive all-day end date.start· string · optionnel
RFC3339 time or all-day YYYY-MM-DD date.account· string · optionnel
User-selected connected Google account or Outlook mailbox. Multiple accounts require review.all_day· boolean · optionnelsummary· string · optionnel
Event title.location· string · optionneltimezone· string · optionnel
An explicit IANA timezone.action_id· string · optionnel
An existing suggestion from this request.calendar_id· string · optionnel
User-selected calendar, omitted for primary.description· string · optionnel
Exemple d'appel{"name": "create_calendar_event", "arguments": {"end": "texte", "start": "texte", "account": "texte", "all_day": true, "summary": "texte", "location": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_gmail_draft≈ 328 tokens
Draft an email in Gmail to anyone ('draft an email to jane@acme.com about X'). Nothing is sent. Chat shows the draft as a card with the recipients, subject and body, and Open in Gmail opens it as a Gmail draft, filled in, for the user to review and send. Works with or without a connected mailbox. Write a specific subject and a plain-text body in the user's voice: short paragraphs separated by a blank line, '- ' for a list, no markdown emphasis or headings. Use this whenever the user wants an email written to someone else; send_email remains only for mailing the user their own address.
Paramètres, retour & exemple (5)
Paramètrescc· string · optionnel
Optional cc address(es), comma-separated.to· string · requis
The recipient's email address (comma-separate several).body· string · requis
The plain-text body of the draft.account· string · optionnel
Email address of the connected mailbox to create the draft in. Omit to use the first connected mailbox.subject· string · requis
The email subject line.
Exemple d'appel{"name": "create_gmail_draft", "arguments": {"to": "texte", "body": "texte", "subject": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_graph_object≈ 483 tokens
Create a new object in the user's graph. Use when they ask to add something — a project, note, fact, web link, person, company, product, event, group, tag, or prompt. If an object of the same type and name already exists it is returned instead of duplicated; pass allow_duplicate=true only when the user confirms they want a second one. Set any of the type's own fields at creation with 'fields' (a domain_name's asking_price and source, a contact's phone); a name the type does not have is reported back with the names it accepts. Returns the object with its object_id for follow-up connecting.
Paramètres, retour & exemple (8)
Paramètresurl· string · optionnel
Optional URL (the link itself for web_link).name· string · requis
The object's name (e.g. 'UNBOUND26 Keynote').type· string · requis · contact | company | product | event | group | project | note | fact
What kind of object to create.email· string · optionnel
For contacts: their email address. Dedupes per address, and fills the address in on a contact of the same name that has none.domain· string · optionnel
For company objects: the company's website domain (e.g. 'openai.com'). Connects the company to its shared enrichment profile and dedupes per domain.fields· object · optionnel
The type's own fields to set on the new object, e.g. {'asking_price': 75000, 'source': 'GritBrokerage.com'}.description· string · optionnel
Optional longer description.allow_duplicate· boolean · optionnel
Create even if the same type+name exists.
Exemple d'appel{"name": "create_graph_object", "arguments": {"name": "texte", "type": "contact"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_outlook_draft≈ 382 tokens
Create a DRAFT in the user's connected Outlook mailbox. Nothing is sent: the draft waits in Outlook's Drafts folder, and chat shows it as a card with Open in Outlook. For a new email pass to, subject and body; to reply, pass reply_to_message_id and body (reply_all=true to answer everyone). Write a plain-text body in the user's voice: short paragraphs separated by a blank line, '- ' for a list, no markdown emphasis or headings. Use this whenever the user wants an email written to someone from their Outlook mailbox.
Paramètres, retour & exemple (8)
Paramètrescc· array · optionnel
Optional cc addresses.to· array · optionnel
Recipient addresses, for a new email.bcc· array · optionnel
Optional bcc addresses.body· string · requis
The plain-text body.account· string · optionnel
Email address of the Outlook mailbox to draft in. Omit to use the first connected mailbox.subject· string · optionnel
Subject line, for a new email.reply_all· boolean · optionnel
Reply to every recipient.reply_to_message_id· string · optionnel
The id of the message to reply to, for a reply draft.
Exemple d'appel{"name": "create_outlook_draft", "arguments": {"body": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_tracker≈ 389 tokens
Set up a standing search the user wants watched — 'track LinkedIn posts that mention hubspot', 'track tweets mentioning @dharmesh', 'watch acme.com/pricing for changes'. query is what to watch for; tracker_type says where to watch (LinkedIn posts unless they ask for tweets/X or a specific page URL — a URL to watch means web_page, with the URL in url and query as a short label for it). linkedin_post and twitter_search requests become a daily cloud agent that emails a digest of new posts; web_page creates a tracker in their brain that runs daily and emails changes, filtered by the prompt. Always give the user the returned page_url as a link — that page is where they review and manage it.
Paramètres, retour & exemple (4)
Paramètresurl· string · optionnel
web_page trackers only: the page URL to watch for changes.query· string · requis
The search keywords to watch for (e.g. 'hubspot').prompt· string · requis
The user's tracking request in their own words, verbatim, filters included (e.g. 'Track linkedin posts that mention hubspot and have more than 10 likes'). Stored on the tracker and later applied as a filter to what the search returns.tracker_type· string · optionnel · linkedin_post | twitter_search | web_page
Where to watch. Defaults to linkedin_post.
Exemple d'appel{"name": "create_tracker", "arguments": {"query": "texte", "prompt": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_graph_object≈ 225 tokens
Delete an object from the user's graph. Use only when the user explicitly asks to delete or remove a specific object — never to tidy up on your own initiative. The delete is soft: the object disappears from lists, search, and chat, but its data is retained and a restore is possible later. Identify the object by object_id (search_graph_objects returns it). Only objects the user owns can be deleted, and never their root user node. In chat, this tool does not delete directly — it returns instructions for showing the user a confirmation card, and the card performs the delete.
Paramètres, retour & exemple (1)
Paramètresobject_id· string · requis
The object_id of the object to delete.
Exemple d'appel{"name": "delete_graph_object", "arguments": {"object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_graph_objects≈ 403 tokens
Delete EVERY object of one type from the user's graph, however many there are: what to reach for when they ask to clear out a whole category ('delete all my HubSpot contacts') rather than one record. Pass import_id instead to delete everything one import added (its contacts, companies, notes and files, the uploaded file and the import itself); imports are graph objects of type 'import_run'. Pass source 'linkedin_import' instead to delete every connection a LinkedIn export loaded and the people made from them. Deleting one object is delete_graph_object instead. This delete is permanent, and at this scale it is the only kind that helps: a synced portal can be millions of records. Use only when the user explicitly asked for these to go, never on your own initiative, and name one type, import or source per call. In chat this tool deletes nothing: it counts the records and returns what to tell the user, and their click starts the deletion.
Paramètres, retour & exemple (3)
Paramètressource· string · optionnel · linkedin_import
'linkedin_import': every connection a LinkedIn export import loaded.import_id· string · optionnel
The object_id of one import (type 'import_run'), to delete what it added.object_type· string · optionnel
The type to clear out, e.g. 'hubspot_contact'. search_graph_objects and the brain's type counts both report types.
Exemple d'appel{"name": "delete_graph_objects", "arguments": {"source": "linkedin_import", "import_id": "texte", "object_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_selected_graph_objects≈ 250 tokens
Delete a given list of objects from the user's graph, up to 200 object_ids in one call. Use only when the user explicitly asked for these particular objects to go, never to tidy up on your own initiative. The delete is soft and reversible: the objects drop out of lists, search and chat, and restore_graph_objects with the returned deleted_ids brings them back. One object is delete_graph_object; every object of a type is delete_graph_objects. Only objects the user owns are deleted, never their root user node; the rest come back as skipped. Not available in the YouSpot chat, where the user ticks the rows in their lists instead.
Paramètres, retour & exemple (1)
Paramètresobject_ids· array · requis
The object_ids, at most 200.
Exemple d'appel{"name": "delete_selected_graph_objects", "arguments": {"object_ids": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - disconnect_graph_objects≈ 209 tokens
Delete one connection between two objects in the user's graph — the edge from_object_id -> to_object_id of the given connection_type, nothing else; both objects stay. Use get_graph_object to see an object's connections and their types and directions first.
Paramètres, retour & exemple (3)
Paramètresto_object_id· string · requis
The edge points here (exact object_id).from_object_id· string · requis
The edge starts here (exact object_id).connection_type· string · requis
The relationship name of the edge to delete.
Exemple d'appel{"name": "disconnect_graph_objects", "arguments": {"to_object_id": "texte", "from_object_id": "texte", "connection_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - disconnect_integration≈ 190 tokens
Disconnect one connected account. Destructive and not undoable: disconnecting a HubSpot portal also deletes every record it synced. Never call this to check anything; call list_integrations for that. Only call it when the user has asked to disconnect, in their own words, naming what.
Paramètres, retour & exemple (2)
Paramètreskey· string · requis
Which integration, e.g. 'gmail' or 'hubspot'.account· string · optionnel
Which account, by the exact label list_integrations reported. Required when more than one is connected.
Exemple d'appel{"name": "disconnect_integration", "arguments": {"key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - draft_cloud_agent≈ 530 tokens
In the YouSpot chat only: draft a standing errand the user asked for, so they can turn it on with one tap. Use this whenever they ask for something to happen on its own from now on: 'tell me when...', 'every morning...', 'notify me...', 'remind me each...', 'watch for...', 'let me know if...'. Never answer that you cannot set up a reminder, a watch or a recurring email; this is how you set one up. It creates nothing and turns nothing on, so it is safe to call as soon as the ask is clear. If the ask names a person for an email watch, look their address up first with search_graph_objects or search_connections and pass it as trigger.from; if two people match, ask which with the ask_user card instead of calling this. If they gave no address and none is on record, still draft it with trigger.from empty and say in your own words that it will watch the whole inbox. Pass the schedule or trigger fields only to override what the request plainly said; leave them out and the request is read for them.
Paramètres, retour & exemple (5)
Paramètresname· string · optionnel
Override the drafted name. Two to four words, sentence case.request· string · requis
What the user asked for, in their own words, plus anything the conversation has settled since (a name, an address, a time).trigger· object · optionnel
Override what it watches, with schedule_type 'trigger': {'event': 'email.received', 'from': '<address or domain, empty for any>', 'frequency': 'hourly'} or {'event': 'object.tagged', 'tag': '<tag>'}.schedule· object · optionnel
Override when it runs: {'time': 'HH:MM'} plus {'days': [0-6]} for daily (0=Sunday), {'day': 0-6} for weekly, {'minute': 0-59} for hourly.schedule_type· string · optionnel · once | hourly | daily | weekly | trigger
Override how it runs. 'trigger' means an event rather than a clock.
Exemple d'appel{"name": "draft_cloud_agent", "arguments": {"request": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - draft_email_in_gmail≈ 250 tokens
Put a generated email (an artifact_id from generate_email) in the user's Gmail drafts, addressed to the recipients they named. Nothing is sent. The email has to be unlocked first: a watermarked draft is refused and the user unlocks it from the card. Only works on mailboxes connected under a legacy modify grant; the tool says so if not. Returns a link to the draft.
Paramètres, retour & exemple (4)
Paramètrescc· string · optionnel
Optional cc address(es), comma-separated.to· string · requis
The recipient's email address (comma-separate several).account· string · optionnel
Email address of the connected mailbox to draft in. Omit for the first one.artifact_id· string · requis
The artifact_id generate_email returned.
Exemple d'appel{"name": "draft_email_in_gmail", "arguments": {"to": "texte", "artifact_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - draft_my_planned_posts≈ 270 tokens
Write every post in this week's post plan as a draft, in the user's own voice, saved to their brain as a note per post and linked to the plan. Posts that already have a draft are left as they are. Use for 'write the posts in my plan', 'draft this week's posts', 'write them all'. For one post from finished work that is not on a plan, use the restate skill instead. Nothing is posted to LinkedIn: the user copies the draft and posts it. error no_plan means there is no plan this week, so offer to make one first. Link each draft as [subject](/graph/object/<object_id> "note") and say they can edit anything, then end with [See your week](/linkedin/manager), the page where they can read, copy and schedule each one. When in_brand_brief is true, do not link the drafts or that page: say each one arrives on [Your day](/your-day?show=brand) on its morning.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "draft_my_planned_posts", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - draft_slack_message≈ 348 tokens
Write a Slack message for the user, to a person (`to`: their name, email or Slack id) or a channel (`channel_id`). Nothing posts: the draft is saved in the user's own Slack, in that DM or channel, for them to send from Slack. If their Slack install predates drafts, chat shows the message with Copy, Open in Slack and a Reconnect link, and for a channel the bot is in, a Send button posts it as YouSpot. Use this whenever the user asks you to write, draft or prepare a Slack message, and call it again with the revised text when they want changes. Write in the user's voice: short paragraphs, '- ' bullets, **bold** for the one thing that matters, [label](url) links, and <@U…> to mention someone by Slack id.
Paramètres, retour & exemple (5)
Paramètresto· string · optionnel
The person it is for: name, email or Slack user id (U…).text· string · requis
The message.team_id· string · optionnel
The workspace, when the user has more than one.thread_ts· string · optionnel
Reply in this thread of the channel.channel_id· string · optionnel
The channel it is for (C… id), from list_slack_channels.
Exemple d'appel{"name": "draft_slack_message", "arguments": {"text": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - enrich_graph_object≈ 352 tokens
Fill the empty fields of one company, contact or web link in the user's graph from public data, the same as the Enrich button on its page. A company is looked up by its website, a contact by its LinkedIn profile or email, and a web link is read again for its summary, topics and key facts. Only empty fields are filled; nothing the user wrote is replaced, so it needs no approval. Returns which fields it filled. Use it when the user asks to enrich, fill in or flesh out a specific record. A company with no website can take one in 'domain'. For several records at once, pass up to 200 ids in 'object_ids': cached data fills at once and the rest is looked up in the background, so tell the user the records fill in over the next few minutes. There is a daily limit, so do not run it across the whole graph unasked.
Paramètres, retour & exemple (3)
Paramètresdomain· string · optionnel
The company's website, only for a company that has none yet (e.g. 'saronic.com').object_id· string · optionnel
The company, contact or web link to enrich (exact id).object_ids· array · optionnel
Several records to enrich at once, in place of object_id.
Exemple d'appel{"name": "enrich_graph_object", "arguments": {"domain": "texte", "object_id": "texte", "object_ids": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - extract_brand_kit≈ 183 tokens
Read a public website and save its brand (colors, fonts, radius and logo) as a new brand kit that needs the user's review. Costs 3 credits, charged only when the kit is saved. Takes up to about a minute. Call list_brand_kits first and reuse a matching website's kit unless the user explicitly wants another extraction. Do not call this again to retry. Returns brand_kit_id, open_url and source_url.
Paramètres, retour & exemple (1)
Paramètreswebsite_url· string · requis
The website address, like acme.com.
Exemple d'appel{"name": "extract_brand_kit", "arguments": {"website_url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - extract_web_page≈ 211 tokens
Read up to five public pages at once and get back the passages that answer an objective, e.g. 'the price of each plan' or 'who is on the leadership team'. Faster and cheaper than read_web_page for pulling specific facts, and handles PDFs. Pass full_content=true for the whole page as Markdown. Costs 1 credit per call.
Paramètres, retour & exemple (3)
Paramètresurls· array · requis
The http(s) pages to read.objective· string · optionnel
What to pull out of the pages.full_content· boolean · optionnel
Also return each whole page.
Exemple d'appel{"name": "extract_web_page", "arguments": {"urls": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_companies≈ 286 tokens
Search for companies by describing them in plain English — the same engine behind the ProspectFinder app. Handles industry, size, location, funding stage and investors in one query: 'CRM software companies with more than 1,000 employees', 'Series A AI startups in Boston', 'YC-funded fintechs'. Returns name, domain, employee count and description per company. Use this for discovering companies out in the world; for companies/people the user already knows, use their graph and connection tools instead. Results can then be added to the user's graph with the graph tools if they ask. The result includes a result_id that chat surfaces can use to render the list as a live prospect_list card.
Paramètres, retour & exemple (2)
Paramètreslimit· integer · optionnel
Max companies to return (default 10, max 25).query· string · requis
Plain-English description of the companies to find (industry, size, location, funding, investors).
Exemple d'appel{"name": "find_companies", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_linkedin_from_x_handle≈ 236 tokens
The LinkedIn profile of the person behind any X (Twitter) handle, not just the user's own. Use when they give an @handle or an x.com link and ask for that person's LinkedIn, or who they are professionally. Pass context (who they likely are, e.g. 'VC at a16z') when the handle could belong to several people. confidence is out of 10; present linkedin_url as a match only when confident is true, and otherwise say it is a guess or that no match was found.
Paramètres, retour & exemple (2)
Paramètreshandle· string · requis
The X handle, with or without @, or an x.com / twitter.com profile URL.context· string · optionnel
Optional hint about who the person is, to tell apart common handles.
Exemple d'appel{"name": "find_linkedin_from_x_handle", "arguments": {"handle": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_my_newsletters≈ 231 tokens
Look through the connected mailboxes for newsletters and list the publications sending them, with how many arrived and how many the owner opened. Reads no bodies and changes nothing: this is the question, not the answer. Each sender comes back with a `status` — 'undecided' means the owner has never said, 'allowed' means read it, 'blocked' means do not. Our guess at what each one is rides on `classification`: 'newsletter' for something written, 'promotion' for a retailer. The guess only sorts the list; the owner decides. Show them the undecided ones, most frequent first, say which look like promotions, and ask which they want read.
Paramètres, retour & exemple (1)
Paramètresdays· integer · optionnel
How far back to look. Default 30.
Exemple d'appel{"name": "find_my_newsletters", "arguments": {"days": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_paths≈ 212 tokens
How two objects in the user's graph are connected: the shortest chain of real relationships between them, up to 3 hops, e.g. person -[worked_with]- person -[works_at]- company. Only deliberate relationships count — bulk-import and system-inferred edges are excluded, so a path is evidence. Returns the path as a list of hops, and an EMPTY list when there is no connection: report that honestly, never invent a path.
Paramètres, retour & exemple (2)
Paramètresto_object_id· string · requis
Where the path ends (exact object_id).from_object_id· string · requis
Where the path starts (exact object_id).
Exemple d'appel{"name": "find_paths", "arguments": {"to_object_id": "texte", "from_object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_email≈ 850 tokens
Render one branded email in a brand kit and save it to the user's files: any email the user describes, from a cold intro or a follow-up to a newsletter, an invitation, a launch note or a receipt. Nothing is sent. Drafts are limited to 20 per day. Templates: 'letter' takes preheader, signoff, footer_note; 'announcement' takes headline (required), preheader, cta_label, cta_url, signoff, footer_note; 'newsletter' takes issue_label, headline (required), preheader, cta_label, cta_url, signoff, footer_note; 'invitation' takes invite_label, event_name (required), when, where, preheader, cta_label, cta_url, signoff, footer_note; 'notification' takes status_label, headline (required), cta_label, cta_url, footer_note; 'onboarding' takes headline (required), preheader, cta_label, cta_url, signoff, footer_note; 'receipt' takes headline (required), order_label, order_date, cta_label, cta_url, footer_note. Pick the template whose shape fits the job and write the subject, props and body yourself in the user's voice; the template is a layout, not a limit on what the email can say. Write the body as markdown (paragraphs, lists, links, tables) or as blocks, never both. header 'band' paints the header in the brand color, 'plain' keeps it white; align is left or center; both default to the template's layout. Leave brand_kit_id out to use the space's default brand. It costs 1 credit, or nothing on a Solo or Pro plan. Returns the artifact id; call draft_email_in_gmail with it. Do not call this again to retry.
Paramètres, retour & exemple (9)
Paramètresalign· string · optionnel · left | centerprops· object · optionnel
Text fields for the template, all strings.blocks· array · optionnel
The body as blocks.header· string · optionnel · band | plainsubject· string · optionnel
The subject line.markdown· string · optionnel
The body as markdown.template_id· string · requis · letter | announcement | newsletter | invitation | notification | onboarding | receiptbrand_kit_id· string · optionnel
A brand_kit_id from list_brand_kits.saved_template_id· string · optionnel
A saved_template_id from list_templates; its inputs seed the ones you pass.
Exemple d'appel{"name": "generate_email", "arguments": {"template_id": "letter"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_image_background≈ 364 tokens
Generate a photo for 1 credit to go behind a social image, from a description of the scene. Only when the user asks for a photo, picture or background. Describe the scene, the light and where to leave empty space for the headline; never ask for text, words or logos in it. size is the canvas it will go on. Returns a file_id for generate_og_image's background_file_id.
Paramètres, retour & exemple (2)
Paramètressize· string · optionnel · og | square | portrait | story | landscape | facebook_cover | linkedin_banner | x_header
Where the image will be posted. Sizes: 'og' 1200x630 (The card X, LinkedIn, Slack and iMessage show under a link); 'square' 1080x1080 (An Instagram, LinkedIn or Facebook feed post); 'portrait' 1080x1350 (A taller Instagram or LinkedIn feed post); 'story' 1080x1920 (An Instagram or Facebook story, or a Reels cover); 'landscape' 1280x720 (A YouTube thumbnail or a 16:9 slide); 'facebook_cover' 1640x624 (A Facebook page or profile cover photo, shown at 820 by 312); 'linkedin_banner' 1584x396 (The background image on a LinkedIn profile); 'x_header' 1500x500 (The header image on an X profile). Left out it is 'og'.prompt· string · requis
The scene, in a sentence or two.
Exemple d'appel{"name": "generate_image_background", "arguments": {"prompt": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_markdown≈ 283 tokens
Write one document in the user's brand and save it to their files: anything they want to read in chat rather than print or send, from a to-do list or a checklist to a plan, notes, a brief or a summary they asked to keep. Takes the markdown, an optional title (the first heading otherwise) and an optional brand_kit_id. The card renders the whole document in the brand, so never paste the markdown into the reply as well. Nothing renders to a file the user has to open: there is no watermark, nothing to unlock and nothing to pay. Use generate_pdf instead when they want a document to print, attach or send. Do not call this again to retry.
Paramètres, retour & exemple (3)
Paramètrestitle· string · optionnel
The document title. The first heading otherwise.markdown· string · requis
The whole document as markdown.brand_kit_id· string · optionnel
A brand_kit_id from list_brand_kits.
Exemple d'appel{"name": "generate_markdown", "arguments": {"markdown": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_og_image≈ 820 tokens
Render one branded image in a brand kit for 1 credit, or nothing on a Solo or Pro plan, and save it to the user's files: a link preview card, a social post, a story, a cover photo, a profile banner or a thumbnail. Drafts are limited to 20 per day. template_id 'simple' takes props label, title and description; 'blog' takes category, title, excerpt, author and meta; 'image' draws only the background and takes title, a name for the image. title is required. size picks the canvas for where it will be posted: 'og' 1200x630 (The card X, LinkedIn, Slack and iMessage show under a link); 'square' 1080x1080 (An Instagram, LinkedIn or Facebook feed post); 'portrait' 1080x1350 (A taller Instagram or LinkedIn feed post); 'story' 1080x1920 (An Instagram or Facebook story, or a Reels cover); 'landscape' 1280x720 (A YouTube thumbnail or a 16:9 slide); 'facebook_cover' 1640x624 (A Facebook page or profile cover photo, shown at 820 by 312); 'linkedin_banner' 1584x396 (The background image on a LinkedIn profile); 'x_header' 1500x500 (The header image on an X profile). Write the text yourself from what the user said and their brand; never leave a field blank because they did not dictate it. Leave brand_kit_id out to use the space's default brand. background_file_id puts a photo behind the text: an id from generate_image_background or an image the user uploaded. Do not call this again to retry. Returns the artifact id.
Paramètres, retour & exemple (9)
Paramètressize· string · optionnel · og | square | portrait | story | landscape | facebook_cover | linkedin_banner | x_header
Where the image will be posted. Sizes: 'og' 1200x630 (The card X, LinkedIn, Slack and iMessage show under a link); 'square' 1080x1080 (An Instagram, LinkedIn or Facebook feed post); 'portrait' 1080x1350 (A taller Instagram or LinkedIn feed post); 'story' 1080x1920 (An Instagram or Facebook story, or a Reels cover); 'landscape' 1280x720 (A YouTube thumbnail or a 16:9 slide); 'facebook_cover' 1640x624 (A Facebook page or profile cover photo, shown at 820 by 312); 'linkedin_banner' 1584x396 (The background image on a LinkedIn profile); 'x_header' 1500x500 (The header image on an X profile). Left out it is 'og'.align· string · optionnel · left | center | right
Text and brand alignment. Defaults to the template's layout.props· object · optionnel
Text fields for the template, all strings.gradient· boolean · optionnel
Brand gradient background (default true); false uses a flat background.appearance· string · optionnel · light | darktemplate_id· string · requis · simple | blog | imagebrand_kit_id· string · optionnel
A brand_kit_id from list_brand_kits.saved_template_id· string · optionnel
A saved_template_id from list_templates; its inputs seed the ones you pass.background_file_id· string · optionnel
A photo to put behind the text, by file id.
Exemple d'appel{"name": "generate_og_image", "arguments": {"template_id": "simple"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_pdf≈ 944 tokens
Render one branded PDF in a brand kit and save it to the user's files: any document the user describes, from an invoice or a statement to a one-pager, a proposal, a memo, a case study, an agenda or a report. Drafts are limited to 20 per day. Templates: 'invoice' takes items of description, quantity, unit_price, up to 30 plus props invoice_number, issued_on, due_on, bill_to, currency, tax_rate, notes; 'statement' takes items of description, date, amount, up to 30 plus props account, account_of, period_start, period_end, currency, opening_balance, notes; 'report' takes markdown or blocks plus props subtitle, author, dated; 'letter' takes markdown or blocks plus props recipient, dated, signoff; 'proposal' takes markdown or blocks plus props client, valid_until, prepared_by. A document template renders whatever markdown you give it, so an unfamiliar ask (a press release, a checklist, a brief) is still a report, letter or proposal with the right headings. Line item fields are all strings, and every date is YYYY-MM-DD. Write a document as markdown (headings, lists, tables) or as blocks, never both, and its first heading becomes the title unless you pass a title. Leave brand_kit_id out to use the space's default brand. Returns the artifact id and how many pages it came to. It costs 1 credit, or nothing on a Solo or Pro plan. Do not call this again to retry.
Paramètres, retour & exemple (11)
Paramètrespage· string · optionnel · letter | a4
Page size; left out it follows the brand kit.items· array · optionnel
Line items, in the fields the template names.props· object · optionnel
Text fields for the template, all strings.title· string · optionnel
The document title. Optional.blocks· array · optionnel
The document body as blocks.markdown· string · optionnel
The document body as markdown.footer_text· string · optionnel
The footer line. Empty string for no footer; left out it is the brand name.template_id· string · requis · invoice | statement | report | letter | proposalbrand_kit_id· string · optionnel
A brand_kit_id from list_brand_kits.page_numbers· string · optionnel · on | offsaved_template_id· string · optionnel
A saved_template_id from list_templates; its inputs seed the ones you pass.
Exemple d'appel{"name": "generate_pdf", "arguments": {"template_id": "invoice"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_substack_post≈ 458 tokens
Draft one Substack post and save it to the user's files, ready to paste into their Substack editor. Nothing is published and nothing is sent. Drafts are limited to 20 per day. Templates: 'post' takes signoff; 'digest' takes intro, signoff. Write the body as markdown (paragraphs, lists, links) or as blocks, never both. The title and subtitle are the post's own headline and standfirst. audience is everyone, paid or founding. It costs 1 credit, or nothing on a Solo or Pro plan. Do not call this again to retry. When Substack is connected, call get_my_substack_voice first and write the post in that voice.
Paramètres, retour & exemple (7)
Paramètresprops· object · optionnel
Text fields for the template, all strings.title· string · requis
The post's headline.blocks· array · optionnel
The body as blocks.audience· string · optionnel · everyone | paid | foundingmarkdown· string · optionnel
The body as markdown.subtitle· string · optionnel
The line under the headline.template_id· string · requis · post | digest
Exemple d'appel{"name": "generate_substack_post", "arguments": {"title": "texte", "template_id": "post"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_view≈ 294 tokens
Save a view the user wants to keep: a page in the view language that renders with live data, like a dashboard, a Markdown document, a feed of posts or a page of generated emails and images. Takes the source, the spec_version it was written against, an optional title and optional state. saved_template_id starts from a view template saved earlier; anything you pass replaces its value. Views are free: no watermark and nothing to unlock. Returns the artifact_id.
Paramètres, retour & exemple (5)
Paramètresstate· object · optionnel
The view's saved state values, keyed by name.title· string · optionnel
A short name the user would recognise.source· string · optionnel
The whole view in the view language, one statement per line.spec_version· string · optionnel
The view library version the source was written against.saved_template_id· string · optionnel
A saved_template_id from list_templates; its inputs seed the ones you pass.
Exemple d'appel{"name": "generate_view", "arguments": {"state": {}, "title": "texte", "source": "texte", "spec_version": "texte", "saved_template_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_artifact≈ 132 tokens
Read one generated image, email or PDF by artifact_id: its template, brand, status and, for the user's own drafts, the inputs it was made from, so an edit can call the generator again with them changed.
Paramètres, retour & exemple (1)
Paramètresartifact_id· string · requis
An artifact_id from list_artifacts or a generator.
Exemple d'appel{"name": "get_artifact", "arguments": {"artifact_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_brand_kit≈ 170 tokens
Read one brand kit with its colors, fonts, radius and domain, whether it is the space default and whether it still needs the user's review. Returns the logo, extraction source_url and canonical open_url, with an inline view for supported MCP hosts. Use those URLs rather than constructing a link. Call it when the user asks about one brand's details or before editing a kit.
Paramètres, retour & exemple (1)
Paramètresbrand_kit_id· string · requis
A brand_kit_id from list_brand_kits.
Exemple d'appel{"name": "get_brand_kit", "arguments": {"brand_kit_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_calendar_events≈ 725 tokens
List events from the user's connected calendars, Google and Outlook together, ordered by start time: summary, start/end, location, organizer, attendees and their RSVP status, a meeting link when there is one, and which provider and account each event came from (Outlook events carry a web_link that opens them in Outlook). With no time range it returns upcoming events from now. `time_min` and `time_max` are RFC3339 timestamps ('2026-08-19T00:00:00Z'), so 'what's on my calendar tomorrow' is time_min/time_max spanning that day; past ranges work too. `query` free-text matches event titles, descriptions, and attendees. For 'how many meetings' questions over long ranges (a quarter, a year), set count_only=true; it sweeps the whole range and returns the total plus a per-month breakdown instead of the events themselves, so a 12-month count is one call. By default this reads each account's main calendar. When a Google account can list its calendars, the result carries available_calendars (name, id, access role), shared calendars included: pass a calendar's name or id as calendar_id ('Family') to read it, or all_calendars=true to read every calendar at once. For an Outlook calendar, get its id from list_outlook_calendars. If the result says no calendar is connected (or the account lacks calendar access), show the user the message and link them to https://youspot.com/user/integrations/gmail.
Paramètres, retour & exemple (8)
Paramètresquery· string · optionnel
Free-text search over events (titles, descriptions, attendees). Omit to list everything in the range.account· string · optionnel
Email address of one connected Google account or Outlook mailbox. Omit to read all connected calendars.time_max· string · optionnel
Latest event start, RFC3339.time_min· string · optionnel
Earliest event end, RFC3339 ('2026-08-19T00:00:00Z'). Defaults to now when time_max is also omitted.count_only· boolean · optionnel
Return only counts (total and per calendar month) instead of the events. Sweeps far more of the range (up to 12,500 events) than an event listing can. Use for totals and "how many" questions.calendar_id· string · optionnel
Which calendar to read: a name or id from available_calendars, or an id from list_google_calendars or list_outlook_calendars. Omit for each account's main calendar.max_results· integer · optionnel
Max events to return (default 10, max 250).all_calendars· boolean · optionnel
Read every Google calendar the user can see events on, shared ones included, instead of just the main one. Each event then names its calendar.
Exemple d'appel{"name": "get_calendar_events", "arguments": {"query": "texte", "account": "texte", "time_max": "texte", "time_min": "texte", "count_only": true, "calendar_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_company_card≈ 98 tokens
The relationship card for one company, for a view drawing a company_card.
Paramètres, retour & exemple (2)
Paramètresdomain· string · optionnel
The company domain.object_id· string · optionnel
Exact node id.
Exemple d'appel{"name": "get_company_card", "arguments": {"domain": "texte", "object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_connection_details≈ 208 tokens
Get the full profile for one of the user's LinkedIn connections: work history, education, skills, and their About summary. Use this after search_connections when you need depth on a specific person. Identify them by name, or by linkedin_url for an exact match. A found:false response carries the user's imported-connection count: if no_imported_data is set, nothing was searched, so report the missing import rather than a missing person.
Paramètres, retour & exemple (2)
Paramètresname· string · optionnel
The connection's name (full or partial).linkedin_url· string · optionnel
Exact LinkedIn profile URL, if known.
Exemple d'appel{"name": "get_connection_details", "arguments": {"name": "texte", "linkedin_url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_connections_summary≈ 122 tokens
Overview of the user's imported LinkedIn data: how many connections, invitations and messages they have, when it was last imported, and the companies they know the most people at. Use this for questions about the shape of their network as a whole, or how much data is loaded.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_connections_summary", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_domain_info≈ 292 tokens
Look up the public registration (WHOIS) record for a website domain: who registered it, which registrar holds it, when it was created and last updated, when it expires, its nameservers, and its registry status codes. Use this ONLY when the user explicitly asks about the domain/WHOIS/DNS itself: 'who owns stripe.com?', 'when does our domain expire?', 'how old is this domain?', 'is this domain registered?'. Never call it for general questions about a company — this is public registrar data about a domain on the internet; it is not the user's own account data, and it says nothing about the company behind the domain. Registrant details are often masked by a privacy service, in which case the registrant fields name the proxy rather than the real owner; say so instead of presenting the proxy as the owner.
Paramètres, retour & exemple (1)
Paramètresdomain· string · requis
The domain to look up, e.g. "hubspot.com". A full URL is accepted and reduced to the domain.
Exemple d'appel{"name": "get_domain_info", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_domain_keywords≈ 284 tokens
The search keywords a website is buying ads on (paid, PPC, AdWords, Google Ads) and the ones it ranks for organically, with monthly search volume, cost per click, position, landing URL and share of the site's search traffic, plus domain totals: paid keyword count, paid traffic and estimated monthly ad spend, and the organic equivalents. Use this when the user asks what keywords a company is buying or bidding on, what it spends on search ads, what it ranks for, or wants to compare competitors' search strategies. Takes a domain (preferred) or a company name. US search data only.
Paramètres, retour & exemple (3)
Paramètreskind· string · optionnel · paid | organic | both
Which keywords to return. Default paid.limit· integer · optionnel
Keywords per kind, 1 to 100. Default 20.company· string · requis
The website domain ("monday.com", preferred) or company name.
Exemple d'appel{"name": "get_domain_keywords", "arguments": {"company": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_domain_value≈ 208 tokens
Estimate what a domain name is worth (the /domainvalue appraisal): an estimated market value in dollars with the signals behind it — comparable sales, marketplace listings, an appraisal model, SEO data. Use when the user asks what a domain is worth, whether one is a good buy, or to compare domain values. A fresh appraisal can take up to a minute; repeat lookups within 48 hours are cached and instant. Include the report_url in your reply so the user can open the full report.
Paramètres, retour & exemple (1)
Paramètresdomain· string · requis
The domain to appraise, e.g. "startup.com". A full URL is accepted and reduced to the domain.
Exemple d'appel{"name": "get_domain_value", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_gmail_message≈ 192 tokens
Fetch one Gmail message by its id from the user's connected mailbox, including the full plain-text body (rare header-only connections get headers and the snippet instead). Use this to read a message found via search_gmail_messages (which returns ids and snippets only), or when a triggering event hands you a Gmail message_id to analyze.
Paramètres, retour & exemple (2)
Paramètresaccount· string · optionnel
Email address of the connected mailbox holding the message. Omit to try all connected mailboxes.message_id· string · requis
The Gmail message id.
Exemple d'appel{"name": "get_gmail_message", "arguments": {"message_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_granola_note≈ 192 tokens
One Granola meeting in full: the summary Granola wrote (Markdown), who attended, when, the space, a link to Granola, and the start of the transcript. `note` is an object id from get_granola_notes, a Granola note id, or a title. Pass `transcript` true for the transcript rather than the summary when the user asks what exactly was said.
Paramètres, retour & exemple (2)
Paramètresnote· string · requis
Object id, Granola id, or title of the meeting.transcript· boolean · optionnel
Return the transcript instead of the summary.
Exemple d'appel{"name": "get_granola_note", "arguments": {"note": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_granola_notes≈ 263 tokens
The user's Granola meeting notes already synced into their brain, newest first: title, when the meeting was, who attended, the space, and a link. `days` bounds how far back (default 30); `query` keeps notes whose title, summary or attendees mention a word or name; `attendee` keeps meetings with that person. Fast, no Granola call. Follow up with get_granola_note for the summary and transcript of one meeting.
Paramètres, retour & exemple (4)
Paramètresdays· integer · optionnel
Meetings in the last N days (default 30). 0 for all time.limit· integer · optionnel
Max notes (default 10, max 50).query· string · optionnel
A word, phrase or name to look for in title, summary or attendees.attendee· string · optionnel
Only meetings this person attended (name or email fragment).
Exemple d'appel{"name": "get_granola_notes", "arguments": {"days": 1, "limit": 1, "query": "texte", "attendee": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_granola_status≈ 120 tokens
Whether Granola is connected and how the sync is doing: the account, the shared spaces the key can see, when it last synced, and how many notes are in the brain. Use it when a user asks why a meeting is missing or whether Granola is set up.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_granola_status", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_graph_object≈ 176 tokens
Get one object from the user's graph, with the objects connected to it (its edges, e.g. a person's spaces, a note's subject). Identify it by object_id (exact, preferred — search and list return it) or by name. Use this when the user asks about a specific thing in their graph, or to follow a connection you found on another object.
Paramètres, retour & exemple (2)
Paramètresname· string · optionnel
The object's name (full or partial).object_id· string · optionnel
Exact node id (e.g. web_aBc123), if known.
Exemple d'appel{"name": "get_graph_object", "arguments": {"name": "texte", "object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_hubspot_activity≈ 228 tokens
Read recorded notes, emails, calls, meetings, and tasks in the user's connected HubSpot portal. Use this for follow-ups, explicit next steps, and supporting activity. Select one portal when several are connected. Defaults to a bounded 30-day window; use contact_id to check later activity for a specific person. Cite the returned record URLs. Partial history or missing activity does not establish an unresolved request or an overdue task.
Paramètres, retour & exemple (5)
Paramètresdays· integer · optionnelkind· string · optionnel · notes | emails | calls | meetings | taskslimit· integer · optionnelportal_id· integer · optionnelcontact_id· string · optionnel
Exemple d'appel{"name": "get_hubspot_activity", "arguments": {"days": 1, "kind": "notes", "limit": 1, "portal_id": 1, "contact_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_hubspot_summary≈ 166 tokens
Overview of the user's synced HubSpot data: which portals they have connected, how many contacts and companies came from each, and when each was last synced. Use this for questions about how much HubSpot data they have, which portals are connected, or whether their data is up to date — and to check they have any data before promising an answer. For questions about the records themselves, use ask_about_hubspot_contacts or ask_about_hubspot_companies.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_hubspot_summary", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_integration_connect_url≈ 141 tokens
The URL that starts connecting one integration, for surfaces that cannot render a card (Slack, SMS, email). In chat, show the integrations_list card instead. Never claim to have connected anything: only the user can grant it, in their browser.
Paramètres, retour & exemple (1)
Paramètreskey· string · requis
Which integration, e.g. 'gmail' or 'hubspot'.
Exemple d'appel{"name": "get_integration_connect_url", "arguments": {"key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_linkedin_conversation≈ 237 tokens
Read the user's LinkedIn message history (DMs) with one person, from their imported LinkedIn export: every conversation that person is in, oldest first, with who sent each message and its full text. Use for 'what did I message Sander?', 'did she ever reply?', 'show me my LinkedIn thread with Tom' and before drafting a follow-up to someone the user has messaged. Pass a name or a LinkedIn profile URL. If the name matches several people it returns candidates to choose from.
Paramètres, retour & exemple (2)
Paramètreslimit· integer · optionnel
How many of the most recent messages to return (default 60, max 150).person· string · requis
The person's name as it appears on LinkedIn, or their profile URL.
Exemple d'appel{"name": "get_linkedin_conversation", "arguments": {"person": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_linkedin_post_comments≈ 290 tokens
Every comment on one LinkedIn post, fetched live: who commented (name, headline, profile_url, and followers, their LinkedIn follower count or null when unknown), what they said, and the replies under each comment. Works for any public post, not only the user's own. Use when they paste a LinkedIn post link and ask what people are saying, for a summary of the comments, or who commented. Pass the link exactly as given; feed/update links, share links and bare activity ids all work. When summarizing, cover the main themes, the overall sentiment, points of disagreement, and any notable commenters. If truncated is true, only the first comment_count comments were read, so say the summary covers those. In chat the comments also show as a sortable table under your reply, so never list them all out.
Paramètres, retour & exemple (1)
Paramètrespost· string · requis
The LinkedIn post URL, urn:li:activity URN, or numeric activity id.
Exemple d'appel{"name": "get_linkedin_post_comments", "arguments": {"post": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_messages_summary≈ 121 tokens
Overview of the user's imported LinkedIn messages (DMs): how many messages and conversations they have, the date range covered, and how many they sent versus received. Use for 'how many messages do I have?' and questions about the shape of their message history.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_messages_summary", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_my_bookmarks≈ 262 tokens
The posts the user bookmarked on X (Twitter), newest first: author @handle and avatar, text, date, engagement, and link, plus an author_counts rollup of how often each author appears across ALL their bookmarks (use it directly for questions like 'whose posts do I bookmark most?'). Reads the synced archive; bookmarks sync daily for accounts that granted bookmark access. `query` filters bookmark text, `author` narrows to one @handle. If it reports nothing synced, the account may need reconnecting to grant bookmark access; the result carries the link.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max bookmarks to return (default 50, max 200).query· string · optionnel
Case-insensitive substring to filter bookmark text.author· string · optionnel
Only bookmarks of posts by this @handle.
Exemple d'appel{"name": "get_my_bookmarks", "arguments": {"limit": 1, "query": "texte", "author": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_my_linkedin_posts≈ 421 tokens
The user's own LinkedIn posts with engagement numbers (reactions, likes, comments, shares): newest first by default, their earliest with sort='oldest', or their best-performing with sort='top'. sort='top' is what answers 'my top 10 posts', 'my best posts' and 'what performed well'. Answer those from here rather than from linkedin_analytics, which needs an OAuth grant this user may not have given. The response always includes total_posts_stored, so this also answers 'how many posts do I have?' and 'what was my first post?'. Use it for questions about their posting activity and performance — 'what did I post last week?', 'what's the average number of likes on my last 5 posts?', 'which recent post got the most comments?'. Compute averages and comparisons from the returned rows. like_count is the thumbs-up reaction alone; total_reaction_count is all reaction types combined. Pages: when has_more is true, call again with offset set to the next_offset from the response to continue through their history.
Paramètres, retour & exemple (3)
Paramètressort· string · optionnel · newest | oldest | top
'newest' (default), 'oldest' for the start of their posting history, or 'top' for the most engagement first (total reactions, then comments, then shares).limit· integer · optionnel
How many posts to return (default 20, max 200).offset· integer · optionnel
How many posts to skip, for paging through more than one call can return (default 0).
Exemple d'appel{"name": "get_my_linkedin_posts", "arguments": {"sort": "newest", "limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_my_plan≈ 144 tokens
The user's current YouSpot plan and credit balance, plus which plan they could move to. Call it before answering anything about pricing, plans, upgrading, credits or limits (brain cap, mailboxes, model, watched pages: Free 3 checked weekly, Solo and Pro unlimited). The response names the upgrade_plan value to emit; the card that renders from it does the purchase, so never say a payment happened.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_my_plan", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_my_substack_voice≈ 118 tokens
How the user writes, with their best-liked Substack posts in full as samples and the posts that drew the most likes and comments. Call it before drafting a Substack post or Note for them, or when they ask what to write next.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_my_substack_voice", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_my_tweets≈ 212 tokens
The user's own tweets, newest first, from their connected X (Twitter) accounts — text, engagement metrics (likes, replies, retweets, impressions), date, and link. Reads the synced archive, so it's fast; a brand-new connection may not have synced yet. `query` filters tweet text. If it reports no account connected, give the user the link it returns.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max tweets to return (default 20, max 100).query· string · optionnel
Case-insensitive substring to filter tweet text.handle· string · optionnel
One connected @handle to read. Omit to read all connected accounts.
Exemple d'appel{"name": "get_my_tweets", "arguments": {"limit": 1, "query": "texte", "handle": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_object_card≈ 84 tokens
One brain object by id, for a view drawing an object_card.
Paramètres, retour & exemple (1)
Paramètresobject_id· string · requis
Exact node id.
Exemple d'appel{"name": "get_object_card", "arguments": {"object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_obsidian_note≈ 240 tokens
Read one note from the user's Obsidian vault in full: its markdown, frontmatter, tags, the notes and brain objects its wikilinks point at, and the notes that link back to it. Identify it by object_id (from a search), by vault path ('Projects/Ada.md'), or by title. Use this whenever a search result looks like the answer — the search returns an excerpt, this returns the note. Follow the backlinks when the user asks how something connects to the rest of their thinking.
Paramètres, retour & exemple (3)
Paramètrespath· string · optionnel
Vault path ('Meetings/2026-08-20 Ada.md'), filename, or note title.vault_id· string · optionnel
Which vault to look in, when several are synced.object_id· string · optionnel
Exact note id, e.g. note_aBc123.
Exemple d'appel{"name": "get_obsidian_note", "arguments": {"path": "texte", "vault_id": "texte", "object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_outlook_message≈ 167 tokens
Fetch one Outlook message by its id, including the plain-text body and a web_link that opens it in Outlook. Use it to read a message found with search_outlook_messages, or when a triggering event hands you an Outlook message_id.
Paramètres, retour & exemple (2)
Paramètresaccount· string · optionnel
Email address of one connected Outlook mailbox. Omit to use every connected mailbox.message_id· string · requis
The Outlook message id.
Exemple d'appel{"name": "get_outlook_message", "arguments": {"message_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_person_card≈ 97 tokens
The relationship card for one person, for a view drawing a person_card.
Paramètres, retour & exemple (2)
Paramètresemail· string · optionnel
Their email address.object_id· string · optionnel
Exact node id.
Exemple d'appel{"name": "get_person_card", "arguments": {"email": "texte", "object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_slack_thread≈ 172 tokens
The saved messages of one Slack thread, oldest first: the parent and every reply the brain holds. Only threads from channels the user switched on are stored; an empty result means the thread was not captured, and the fix is enabling that channel on the Slack integrations page.
Paramètres, retour & exemple (2)
Paramètresthread_ts· string · requis
The thread's parent ts (from a search result).channel_id· string · requis
The channel id (C…/D…).
Exemple d'appel{"name": "get_slack_thread", "arguments": {"thread_ts": "texte", "channel_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_substack_comments≈ 160 tokens
Recent comments on the user's free Substack posts, newest first, with the post each is on. People the user already knows come with their object_id; everyone else is a name and a Substack handle. known_only keeps just the people they know.
Paramètres, retour & exemple (2)
Paramètreslimit· integer · optionnel
Max comments (default 20, max 100).known_only· boolean · optionnel
Only commenters already in the Brain.
Exemple d'appel{"name": "get_substack_comments", "arguments": {"limit": 1, "known_only": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_substack_post_stats≈ 143 tokens
Fresh stats for one Substack post, read from Substack right now and stored on the post: opens, clicks, views, recipients, new free and paid subscribers, estimated revenue. `url_slug` is the part of the post URL after /p/; get_substack_posts lists them.
Paramètres, retour & exemple (1)
Paramètresurl_slug· string · requis
The post slug, from its URL.
Exemple d'appel{"name": "get_substack_post_stats", "arguments": {"url_slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_substack_posts≈ 254 tokens
The user's Substack posts with likes, comments, restacks and word count, plus opens, clicks, views, recipients and the free and paid subscribers the post brought when a Publisher API key is connected. Newest first, from the last sync. `query` filters titles, `since` (YYYY-MM-DD) drops older posts, `type` narrows to newsletter, podcast or thread. If it reports nothing synced, give the user the link it returns rather than guessing.
Paramètres, retour & exemple (4)
Paramètrestype· string · optionnel · newsletter | podcast | thread
One post type.limit· integer · optionnel
Max posts (default 10, max 25).query· string · optionnel
Case-insensitive text to match in titles.since· string · optionnel
Only posts published on or after this date.
Exemple d'appel{"name": "get_substack_posts", "arguments": {"type": "newsletter", "limit": 1, "query": "texte", "since": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_substack_reading≈ 205 tokens
Recent free posts from the Substack publications the user reads, newest first, each with its writer, publication and text. `writer` matches a writer or publication name, `query` matches titles. Paid issues and publications the user gets by email are saved as newsletters, so read those with read_my_newsletters.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max posts (default 5, max 10).query· string · optionnel
Case-insensitive text to match in titles.writer· string · optionnel
Writer or publication name to match.
Exemple d'appel{"name": "get_substack_reading", "arguments": {"limit": 1, "query": "texte", "writer": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_substack_subscriber_counts≈ 155 tokens
How the user's Substack publication is growing: daily subscriber totals by plan over the last 7, 30, 90 or 365 days, with the change over the window. Reads the last sync. Use it for 'how many subscribers', 'how is my Substack growing' and 'paid subscribers this month'.
Paramètres, retour & exemple (1)
Paramètresdays· integer · optionnel · 7 | 30 | 90 | 365
The window, default 30.
Exemple d'appel{"name": "get_substack_subscriber_counts", "arguments": {"days": 7}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_substack_subscribers≈ 283 tokens
The user's Substack subscribers, as the contacts they were imported into: name, email, plan (free, paid, founding, comp, gift), status (active, inactive, lapsed) and when they subscribed. Reads the last import, so it is fast. `status` defaults to active; pass 'lapsed' for who dropped off the latest export, or 'any'. `plan` narrows to one plan. If it reports nothing imported, give the user the link it returns rather than guessing.
Paramètres, retour & exemple (4)
Paramètresplan· string · optionnel · free | paid | founding | comp | gift
Only subscribers on this plan.limit· integer · optionnel
Max rows (default 25, max 100).status· string · optionnel · active | inactive | lapsed | any
active (default), inactive, lapsed or any.publication· string · optionnel
The publication subdomain, when more than one is imported.
Exemple d'appel{"name": "get_substack_subscribers", "arguments": {"plan": "free", "limit": 1, "status": "active", "publication": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_twitter_following≈ 218 tokens
Accounts the user follows on X (Twitter), from the synced follow graph — name, @handle, and bio. `query` filters by name, handle, or bio text ('who do I follow in AI?'). Reads the last sync, so a just-followed account may be missing; total_followed is the synced total. If it reports no account connected, give the user the link it returns.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max accounts to return (default 50, max 200).query· string · optionnel
Case-insensitive filter on name, handle, or bio.handle· string · optionnel
One connected @handle whose follows to read. Omit for all connected accounts.
Exemple d'appel{"name": "get_twitter_following", "arguments": {"limit": 1, "query": "texte", "handle": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_twitter_profile≈ 134 tokens
Live profile stats for the user's connected X (Twitter) accounts — name, @handle, follower count, following count, and total tweets, fresh from the X API. If it reports no account connected, give the user the link it returns.
Paramètres, retour & exemple (1)
Paramètreshandle· string · optionnel
One connected @handle. Omit for all connected accounts.
Exemple d'appel{"name": "get_twitter_profile", "arguments": {"handle": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_web_watches≈ 380 tokens
Read this person's web watches and what they found. No arguments: every page and topic watch with what it watches, how often, its status and when it last checked and last found something. monitor_key alone: that watch and its ten latest changes. changes: true: the change and finding history, newest first, narrowed by monitor_key, domain (e.g. 'acme.com', every watched page there), since (YYYY-MM-DD), kind and limit; use it for 'what changed on competitor sites this week'. Topic findings carry their date, text and sources. change_id: one change in full, with its line diff (- removed, + added) or the fields' before and after values.
Paramètres, retour & exemple (7)
Paramètreskind· string · optionnel · page | topic
History only: page changes or topic findings.limit· integer · optionnel
History only: how many (default 20, max 50).since· string · optionnel
History only: on or after this date, YYYY-MM-DD.domain· string · optionnel
History only: a site's domain, e.g. 'acme.com'.changes· boolean · optionnel
true lists changes and findings instead of watches.change_id· integer · optionnel
One change or finding to read in full.monitor_key· string · optionnel
The watch key, pmon_..., from get_web_watches.
Exemple d'appel{"name": "get_web_watches", "arguments": {"kind": "page", "limit": 1, "since": "texte", "domain": "texte", "changes": true, "change_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - import_contacts_from_file≈ 302 tokens
Import every contact or company from a file the user uploaded — a CSV or spreadsheet export, a .vcf of contacts, or a zip. Use this whenever they want more than a couple of records created from a file: it reads the whole file at once, so never read a contact list with read_file and create the records one at a time. Find the file first with search_graph_objects (type 'file') and pass its object_id, or pass part of the filename as name. Pass a description of what the file holds when the user gave one — it is what tells the column mapper that 'Ref' is a phone number.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Part of the filename, when the object_id is unknown.object_id· string · optionnel
The file's graph object_id (from search_graph_objects).description· string · optionnel
The user's own description of what the file holds.target_type· string · optionnel · contact | company
What each row is. Defaults to contact.
Exemple d'appel{"name": "import_contacts_from_file", "arguments": {"name": "texte", "object_id": "texte", "description": "texte", "target_type": "contact"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - import_substack_subscribers≈ 245 tokens
Import a Substack subscriber export the user uploaded (the CSV from their publication's Subscribers page). Every row becomes or matches a contact tagged 'Substack subscriber' with plan and status. Find the file with search_graph_objects (type 'file') and pass its object_id, or part of the filename as name. `publication` is the publication's subdomain (the part before .substack.com); ask if you do not know it.
Paramètres, retour & exemple (3)
Paramètresname· string · optionnel
Part of the filename, when the object_id is unknown.object_id· string · optionnel
The file's graph object_id (from search_graph_objects).publication· string · requis
The publication subdomain, e.g. differentialfactor.
Exemple d'appel{"name": "import_substack_subscribers", "arguments": {"publication": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - job_changes≈ 276 tokens
People in the user's network who have moved to a different company since we last looked, newest first, with where they were and where they are now. Use when they ask who has changed jobs, who has moved recently, whether anything has changed at their contacts, or who is worth congratulating. Also the read behind a scheduled watcher: on a run with nothing new it says so and there is nothing to report. Reports a change of employer only, so a rewritten job title at the same company does not appear. NOT a list of who to contact, NOT the history with one person, NOT news about a company.
Paramètres, retour & exemple (3)
Paramètresdays· integer · optionnel
Only moves noticed in the last N days. Default 90. Use 1 for a daily watcher.limit· integer · optionnel
Max people (default 20, max 100).refresh· boolean · optionnel
Check the profiles for new moves before reading. Default true.
Exemple d'appel{"name": "job_changes", "arguments": {"days": 1, "limit": 1, "refresh": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - linkedin_analytics≈ 332 tokens
The user's LinkedIn post analytics from LinkedIn's own API (their connected account) — impressions, unique members reached, reactions, comments, and reshares. Use for questions like 'how many impressions did I get last month?' or 'how are my posts performing?'. Omit dates for lifetime totals; pass start_date/end_date for a window; set daily=true (with one specific metric) for a per-day series to describe trends. Numbers are live from LinkedIn, unlike get_my_linkedin_posts whose per-post counts come from a periodic sync.
Paramètres, retour & exemple (4)
Paramètresdaily· boolean · optionnel
Per-day time series instead of one total. Requires start_date and a specific metric (not 'all').metric· string · optionnel · all | impression | members_reached | reaction | comment | reshare
Which metric ('all' fetches every metric — the default). LinkedIn's API takes one metric per call, so 'all' costs five calls.end_date· string · optionnel
Window end, YYYY-MM-DD (defaults to today).start_date· string · optionnel
Window start, YYYY-MM-DD. Omit for lifetime.
Exemple d'appel{"name": "linkedin_analytics", "arguments": {"daily": true, "metric": "all", "end_date": "texte", "start_date": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - linkedin_follower_history≈ 209 tokens
The user's own LinkedIn follower count over time, from readings we record about twice a day. Use it for every follower question: 'how many followers do I have?', 'how many did I gain this week?', 'how has my follower count changed since June?'. Returns the latest count, the count at the start of the window, the change, and a series with one point per day (per week for windows over 90 days). linkedin_analytics has no follower metric, so never say follower growth is unavailable without calling this first.
Paramètres, retour & exemple (1)
Paramètresdays· integer · optionnel
How many days back to look (default 30, max 730).
Exemple d'appel{"name": "linkedin_follower_history", "arguments": {"days": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_artifacts≈ 140 tokens
List the images, emails, PDFs and documents generated in the user's active space, newest first, up to 50: the artifact_id, kind, title, status and brand. kind narrows it to one kind. Call it when the user asks what they have generated or refers to an earlier one.
Paramètres, retour & exemple (1)
Paramètreskind· string · optionnel · og_image | email | pdf | substack_post | markdown
Exemple d'appel{"name": "list_artifacts", "arguments": {"kind": "og_image"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_brand_kits≈ 183 tokens
List the brand kits in the user's active space: the name, domain, primary color, whether it was extracted from a website or entered by hand, whether it still needs their review, and which one artifacts render in when no kit is named. Call this before generating a social image, email or PDF for a brand other than the default, and when the user asks which brands they have set up. Returns fallback_if_omitted, which says what a generator uses when brand_kit_id is left out: the space default, the oldest kit, or the built-in YouSpot kit.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_brand_kits", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_connectors≈ 218 tokens
List connectors, the outside services whose tools join this chat over MCP, such as Notion, GitHub, Stripe, Linear, Figma, Calendly or Zapier. Returns the ones the user added with their status, and the directory of ones they can add, each with `steps` to connect it and a `page_url`. Call it when someone asks about a service list_integrations does not have, or what tools they could add. Pass `query` to narrow by name or purpose. To start connecting one, call add_connector. A service that is in neither list can still be added by its MCP server URL on `custom_server_url`.
Paramètres, retour & exemple (1)
Paramètresquery· string · optionnel
A name or what it is for, e.g. 'notion' or 'payments'.
Exemple d'appel{"name": "list_connectors", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_duplicate_suggestions≈ 176 tokens
List pairs of contacts in the user's graph that look like the same person, as found by the duplicate scan. status 'to_review' (default) is the pairs nobody has answered yet; 'linked' is the pairs the user said are the same person, each marked merged or not. Read-only. To merge a linked pair, call merge_graph_objects with preview=true first, then let the user confirm.
Paramètres, retour & exemple (1)
Paramètresstatus· string · optionnel · to_review | linked
'to_review' (default) or 'linked'.
Exemple d'appel{"name": "list_duplicate_suggestions", "arguments": {"status": "to_review"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_gmail_labels≈ 137 tokens
List the labels in the user's connected Gmail mailboxes: system labels (INBOX, STARRED, ...) and the user's own labels, with their ids. Use it when the user refers to one of their labels by name.
Paramètres, retour & exemple (1)
Paramètresaccount· string · optionnel
Email address of one connected mailbox. Omit to list labels for all connected mailboxes.
Exemple d'appel{"name": "list_gmail_labels", "arguments": {"account": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_google_calendars≈ 180 tokens
List the calendars in the user's connected Google account(s): name, id, whether it's the primary, and the user's access role. Use it to find a named calendar ('Family', 'Content schedule') before reading its events with get_calendar_events(calendar_id=…). If it says the account needs reconnecting, link the user to https://youspot.com/user/integrations/gmail.
Paramètres, retour & exemple (1)
Paramètresaccount· string · optionnel
Email address of one connected Google account. Omit to list calendars for all connected accounts.
Exemple d'appel{"name": "list_google_calendars", "arguments": {"account": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_graph_objects≈ 272 tokens
List objects in the user's graph, newest first, with counts by type. The graph is their personal CRM's object store: person, company, hubspot_contact, linkedin_connection, file, fact, web_link, note, connected spaces, and more. Filter by type to browse one kind ('what files do I have?', 'list my facts'), or omit it to see what the graph holds overall. Use type 'twitter_contact' for saved reciprocal X follows; a twitter_profile alone is public identity and does not establish a mutual follow. Page with offset to read past the newest results. For finding something by name, prefer search_graph_objects.
Paramètres, retour & exemple (3)
Paramètrestype· string · optionnel
Only objects of this type (e.g. 'fact', 'web_link').limit· integer · optionnel
Max results (default 20, max 50).offset· integer · optionnel
Skip this many results, for paging past the newest.
Exemple d'appel{"name": "list_graph_objects", "arguments": {"type": "texte", "limit": 1, "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_integrations≈ 349 tokens
What the user has connected, and what they could connect. Returns every integration available to this account with `connected` true/false, the accounts behind it, the tools it unlocks, and the URL to connect or manage it. Call this BEFORE telling anyone to connect anything, and before saying a source is unavailable: guessing is how the assistant has told people to connect accounts they already had. An integration missing from the list is not offered to this user at all, so do not suggest it. `suggested` is what is worth connecting next, best first, each with the payoff in the user's terms: use it when asked what would help, and lead with the first one rather than listing the shelf. Connecting is a browser grant: hand the user the URL, never claim to have done it. Each row's `steps` is how to connect it: when someone asks how, walk them through those steps and link `url`, which is that integration's page. Services that are not native integrations (Notion, GitHub, Stripe, Linear and dozens more) are connectors: call list_connectors.
Paramètres, retour & exemple (1)
Paramètreskey· string · optionnel
Ask about one integration only, e.g. 'linkedin', 'gmail', 'hubspot', 'slack', 'twitter', 'obsidian', 'sms'.
Exemple d'appel{"name": "list_integrations", "arguments": {"key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_obsidian_notes≈ 218 tokens
Browse the user's synced Obsidian notes without a search term — most recently changed first, optionally within one vault, one folder, or one tag. Use it to answer what a folder holds, what they have written lately, or to show them what came across. When they are looking for a specific thing, search_obsidian_notes is the better tool.
Paramètres, retour & exemple (4)
Paramètrestag· string · optionnel
Only notes carrying this tag.limit· integer · optionnel
Max results (default 15, max 50).folder· string · optionnel
Only notes under this vault folder, e.g. 'Daily'.vault_id· string · optionnel
Only this vault (from list_obsidian_vaults).
Exemple d'appel{"name": "list_obsidian_notes", "arguments": {"tag": "texte", "limit": 1, "folder": "texte", "vault_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_obsidian_vaults≈ 155 tokens
List the Obsidian vaults the user has synced into their Second Brain: note counts, the folders each vault holds, its most-used tags, and when it last synced. Call this before answering anything about their Obsidian setup — whether a vault is connected, how much of it is here, what it contains at the top level — rather than assuming either way. Returns an empty list with setup instructions when no vault is synced yet.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_obsidian_vaults", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_outlook_calendars≈ 151 tokens
List the calendars in the user's connected Outlook mailboxes: name, id, whether it is the default, and whether the user can add events. Use it to find a named calendar before reading it with get_calendar_events(calendar_id=..., account=...).
Paramètres, retour & exemple (1)
Paramètresaccount· string · optionnel
Email address of one connected Outlook mailbox. Omit to use every connected mailbox.
Exemple d'appel{"name": "list_outlook_calendars", "arguments": {"account": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_outlook_folders≈ 142 tokens
List the mail folders in the user's connected Outlook mailboxes, with their ids and message counts. Use it when the user names one of their folders, before searching it with search_outlook_messages(folder=...).
Paramètres, retour & exemple (1)
Paramètresaccount· string · optionnel
Email address of one connected Outlook mailbox. Omit to use every connected mailbox.
Exemple d'appel{"name": "list_outlook_folders", "arguments": {"account": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_scheduled_texts≈ 85 tokens
List the texts scheduled to be sent to the user's own phone that have not gone out yet, with the task_id needed to cancel each one.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_scheduled_texts", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_slack_channels≈ 110 tokens
The Slack channels and DMs the user's brain knows about, per connected workspace, with whether each one is being saved (ingest) and how many messages are stored. Use it to resolve a channel name to its id before searching or posting.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_slack_channels", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_templates≈ 141 tokens
List the templates the user has saved from earlier drafts, newest first: the saved_template_id, name, kind and which manifest template it was made from. kind narrows it to one kind. Pass a saved_template_id to a generator as saved_template_id to generate from it again.
Paramètres, retour & exemple (1)
Paramètreskind· string · optionnel · og_image | email | pdf | substack_post | markdown
Exemple d'appel{"name": "list_templates", "arguments": {"kind": "og_image"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - lookup_substack_subscriber≈ 177 tokens
Whether one email address subscribes to the user's Substack, read from Substack right now. A hit stamps the plan and status onto the matching contact; with `create` true a hit also becomes a new contact when nobody holds the address yet. Use it for 'is x@y.com a subscriber?'.
Paramètres, retour & exemple (2)
Paramètresemail· string · requis
The address to check.create· boolean · optionnel
Create the contact when the address is new. Default false.
Exemple d'appel{"name": "lookup_substack_subscriber", "arguments": {"email": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - mail_waiting_on_me≈ 134 tokens
People the user has written to before whose latest email came after the user's latest email to them, in the last two weeks, longest wait first: name, email, mailbox, when they last wrote, when the user last wrote, and the days waited.
Paramètres, retour & exemple (1)
Paramètreslimit· integer · optionnel
Max people (default 25, max 100).
Exemple d'appel{"name": "mail_waiting_on_me", "arguments": {"limit": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - manage_web_watch≈ 491 tokens
Change one of this person's web watches, named by monitor_key from get_web_watches. action check_now: check it right away instead of waiting for its schedule; anything new arrives as a change in a minute or two, read it with get_web_watches. A paused watch is not checked, and one still taking its first read answers status baseline. pause or resume: the watch and its agent together. stop: stop for good and pause its agent; what it found stays readable. update: a new frequency, or what is watched: watch for a page (a fresh first read follows; Pages only. What to watch: 'everything' (the default) for any meaningful change on the page, a preset (pricing, team, products, jobs, headline) for those fields only, or the person's own words, e.g. 'the number of open engineering roles'.), query or domains for a topic.
Paramètres, retour & exemple (6)
Paramètresquery· string · optionnel
Topics only: what to watch the web for.watch· string · optionnel
Pages only. What to watch: 'everything' (the default) for any meaningful change on the page, a preset (pricing, team, products, jobs, headline) for those fields only, or the person's own words, e.g. 'the number of open engineering roles'.action· string · requis · check_now | pause | resume | stop | updatedomains· array · optionnel
Topics only: just these sites, e.g. ['acme.com', 'acme.com/blog']. Leave out for the whole web.frequency· string · optionnel · hourly | daily | weekly
How often to check. Hourly needs a Pro plan; Free is weekly only.monitor_key· string · requis
The watch key, pmon_..., from get_web_watches.
Exemple d'appel{"name": "manage_web_watch", "arguments": {"action": "check_now", "monitor_key": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - mark_outlook_message≈ 157 tokens
Mark one Outlook message read, unread, flagged or unflagged. Use only when the user asked for it.
Paramètres, retour & exemple (3)
Paramètresmark· string · requis · flagged | read | unflagged | unreadaccount· string · optionnel
Email address of one connected Outlook mailbox. Omit to use every connected mailbox.message_id· string · requis
The Outlook message id.
Exemple d'appel{"name": "mark_outlook_message", "arguments": {"mark": "flagged", "message_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - match_my_network≈ 230 tokens
Given the author names from a page of posts, say which of them this user already knows. Ask in one call with every name, not one at a time. Each answer carries `standing`: 'dormant' means they know them and the correspondence stopped, which is the strongest reason to appear under a post; 'known' means they are still in touch; 'stranger' means they are not connected. Rank dormant first, known second, and keep a stranger only when the subject is squarely the user's own. `last_spoke` and `messages_exchanged` are there so you can say why this person is worth the reply.
Paramètres, retour & exemple (1)
Paramètresnames· array · requis
Author names exactly as the post search gave them.
Exemple d'appel{"name": "match_my_network", "arguments": {"names": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - merge_graph_objects≈ 255 tokens
Merge two duplicate records in the user's graph into one, person or company only. Every connection moves from the duplicate onto the kept record, fields the kept record lacks are copied over (never overwritten), and the duplicate is removed. Call with preview=true first and emit the merge_compare card it names: the card shows both records and merges when the user clicks, so never merge without an explicit yes. keep_id survives; merge_id goes. unmerge_graph_objects puts it back.
Paramètres, retour & exemple (3)
Paramètreskeep_id· string · requis
The record that survives (exact object_id).preview· boolean · optionnel
Return what the merge would do without doing it. Call this first.merge_id· string · requis
The duplicate to fold in and delete.
Exemple d'appel{"name": "merge_graph_objects", "arguments": {"keep_id": "texte", "merge_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - message_agent≈ 242 tokens
Send a message to one of the user's own agents by its handle (the name after the @ on its page) and start a run with it. Use this when the user asks you to hand something to a named agent: '@research, what changed at Acme?'. It returns at once with a trace_id; the agent's answer takes a minute or more, so read it later with agent_reply. Pass conversation_id to keep the exchange in one thread.
Paramètres, retour & exemple (3)
Paramètrestext· string · requis
What to ask the agent, in the user's own words.handle· string · requis
The agent's handle, with or without the leading @.conversation_id· string · optionnel
The chat thread to post into. Leave it out to start a new one; the result names the thread used.
Exemple d'appel{"name": "message_agent", "arguments": {"text": "texte", "handle": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - mutual_connections≈ 186 tokens
The objects in the user's graph directly connected to BOTH of two given objects — mutual contacts between two people, shared people between two companies. Only deliberate relationships count (bulk-import and system-inferred edges are excluded). Returns an empty list when there are none — report that honestly.
Paramètres, retour & exemple (2)
Paramètresobject_id_a· string · requis
The first object (exact object_id).object_id_b· string · requis
The second object (exact object_id).
Exemple d'appel{"name": "mutual_connections", "arguments": {"object_id_a": "texte", "object_id_b": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - my_day≈ 456 tokens
Today's Your day brief as it was written this morning: the Do list (each person, who they are to the user, why now, its state: 'ready' to send, 'question' waiting on one answer, or 'headsup' to read, the drafted note and what the user already decided on it), the Know lines, Coming up, What ran, and the page link, and `brand`: today's LinkedIn post and up to three conversations worth joining, each with a drafted comment, and when present `who_engaged`: who reacted to or commented on their posts this week, people they know with a note and first-timers with a profile link. Pass `date` (YYYY-MM-DD) for an earlier day. Pass `brief` to read one part of the day: 'relationship' (the people: Do, Know, Coming up) or 'branding' (the post, conversations and who engaged), as in 'what did my LinkedIn post say Tuesday?' or, from someone still using the old names, 'what did my branding brief say Tuesday?'; it reads only that part. Call it Your day, never two briefs. Pass `person` (a name, email or Brain object id) to get every item about that person from the last seven days of briefs instead. Call this for 'what do I need to do today?' and 'what's on my plate?' before anything else, and answer with the Do list first. Read-only: it never runs the brief again.
Paramètres, retour & exemple (3)
Paramètresdate· string · optionnel
The day, as YYYY-MM-DD. Omit for today.brief· string · optionnel · relationship | branding
Only this part of the day, when the user asked about one. Omit for the whole day.person· string · optionnel
A name, email or Brain object id; returns that person across the last week.
Exemple d'appel{"name": "my_day", "arguments": {"date": "texte", "brief": "relationship", "person": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - my_linkedin_week≈ 365 tokens
How this week is going on LinkedIn against the user's own post plan: the plan's subjects and whether each has a draft, what they posted this week and which plan subject each post was, the people they already know who reacted or commented (dormant first), and whether a nudge is due on Thursday. Use for 'how's my LinkedIn week going', 'did I post what I planned', 'who engaged with my post', 'who saw my post'. It never names strangers and has no impressions or follower counts; do not offer those. When plan is null, there is no plan for this week: offer to make one (the post-plan skill). When a subject has a draft_id, link it as [the draft](/graph/object/<draft_id> "note"). When plan is set, end with [See your week](/linkedin/manager), the page with the plan, its drafts, what went up and who noticed. switch says whether the daily LinkedIn manager is on, paused or off. When in_brand_brief is true, Your day keeps the week's subjects out of sight: tell them what is coming in plain words, never call it a plan page or the LinkedIn manager, never link /linkedin/manager or a plan object, say today's post arrives on [Your day](/your-day?show=brand) each morning, and offer a different post today (replace_todays_post). Use this for 'what's my post plan?'.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "my_linkedin_week", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - my_topics≈ 201 tokens
Work out what this user can speak to with authority, from what they have published, who is in their network, what they have been reading, and their profile — in that order of weight. Use this instead of asking them for keywords: they should never have to type a search query. Returns topics each carrying the source it came from and a short reason, plus `sentence`, one line naming what was picked and why, which you must show the user before anything you found. When `enough_to_go_on` is false there was too little to read and you should say so plainly and ask them what they care about, once — never guess.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "my_topics", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - parse_invoice_pdf≈ 328 tokens
Read an invoice PDF the user uploaded and return its fields: supplier, invoice number, dates, currency, subtotal, tax, total, PO number, payment terms, and every line item. Use it whenever someone asks what an invoice says, what they are being charged for, whether a bill adds up, or wants an invoice turned into data. Two parts of the result matter more than the fields. `unreadable` names what could not be read off the document — those are null, not guessed, and you must not fill them in yourself. `checks` lists where the document disagrees with itself: lines that do not sum to the subtotal, a total that is not subtotal plus tax, a quantity times a price that is not the line amount. Report every check to the user in plain language; they are the reason to read an invoice with a tool rather than an eye. Find the file first with search_graph_objects (type 'file') and pass its object_id, or pass part of the filename as name.
Paramètres, retour & exemple (2)
Paramètresname· string · optionnel
Part of the filename, when the object_id is unknown.object_id· string · optionnel
The file's graph object_id.
Exemple d'appel{"name": "parse_invoice_pdf", "arguments": {"name": "texte", "object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - plan_generation≈ 679 tokens
Work out what generating would use, rendering nothing and spending no draft or credit. Give it the kind (og_image for any image, email or pdf for any document) and whatever the user has said so far; it answers with the template it would use and that template's fields with their defaults, which required fields are still missing, the image sizes, the brand kit it would resolve to and the other kits with their ids, the page, orientation and footer a PDF would take from the kit, the templates the user has saved, the free drafts left, the unlock cost, and ready. Call it once before generate_og_image, generate_email or generate_pdf, then generate in the same turn unless one open choice would change the result.
Paramètres, retour & exemple (15)
Paramètreskind· string · requis · og_image | email | pdf | substack_post | markdownpage· string · optionnel · letter | a4size· string · optionnel · og | square | portrait | story | landscape | facebook_cover | linkedin_banner | x_header
Where the image will be posted. Sizes: 'og' 1200x630 (The card X, LinkedIn, Slack and iMessage show under a link); 'square' 1080x1080 (An Instagram, LinkedIn or Facebook feed post); 'portrait' 1080x1350 (A taller Instagram or LinkedIn feed post); 'story' 1080x1920 (An Instagram or Facebook story, or a Reels cover); 'landscape' 1280x720 (A YouTube thumbnail or a 16:9 slide); 'facebook_cover' 1640x624 (A Facebook page or profile cover photo, shown at 820 by 312); 'linkedin_banner' 1584x396 (The background image on a LinkedIn profile); 'x_header' 1500x500 (The header image on an X profile). Left out it is 'og'.align· string · optionnel · left | center | rightprops· object · optionneltitle· string · optionnel
The PDF title, if they gave one.header· string · optionnel · band | plainsubject· string · optionnel
The email subject, if they gave one.markdown· string · optionnelappearance· string · optionnel · light | darkfooter_text· string · optionneltemplate_id· string · optionnel
The template the user named, if any.brand_kit_id· string · optionnel
A brand_kit_id from list_brand_kits.page_numbers· string · optionnel · on | offsaved_template_id· string · optionnel
A saved_template_id from list_templates; its inputs seed the ones you pass.
Exemple d'appel{"name": "plan_generation", "arguments": {"kind": "og_image"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - purge_graph_object≈ 208 tokens
Permanently delete one object from the user's graph, along with every connection touching it. Hard delete, no undo — confirm with the user before calling, and only when they asked for the deletion. Prefer delete_graph_object, which is reversible and asks the user to confirm on a card; use this one only when they have said they want the data gone. Purging a file or image also deletes the stored file from their Files. To remove a single connection and keep both objects, use disconnect_graph_objects instead.
Paramètres, retour & exemple (1)
Paramètresobject_id· string · requis
The object to destroy (exact object_id).
Exemple d'appel{"name": "purge_graph_object", "arguments": {"object_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - query_graph_objects≈ 519 tokens
Read back objects a skill wrote earlier, filtered precisely. Use this when you need to know whether something is already recorded rather than to find something by name: has this engagement already been flagged, was this client surfaced today, is there a plan for this week. Filters on type, on the source that wrote the row, on text within the name or description, and on a created-at window in days. Sorts newest, oldest or by name, and pages with offset. For a keyword or semantic hunt across the graph use search_graph_objects; for browsing a whole type use list_graph_objects.
Paramètres, retour & exemple (10)
Paramètressort· string · optionnel · name | newest | oldest
Order of results. Default newest.type· string · optionnel
Only objects of this type (e.g. 'fact', 'note').limit· integer · optionnel
Max results (default 20, max 50).offset· integer · optionnel
Skip this many results, for paging.source· string · optionnel
Only rows written by this source. Matches either the source recorded on the row or the marker a skill sets on what it writes, so 'capture_understand' and 'extension' both find what capture wrote.name_contains· string · optionnel
Substring of the name, case-insensitive.text_contains· string · optionnel
Substring of the name or the description, case-insensitive.follow_up_due_by· string · optionnel
Only rows whose follow-up date falls on or before this day, as YYYY-MM-DD. This is what 'what is due this week' reads. Use today's date for what is due or overdue.created_before_days· integer · optionnel
Only rows created more than N days ago.created_within_days· integer · optionnel
Only rows created in the last N days. Use 1 for "already done today".
Exemple d'appel{"name": "query_graph_objects", "arguments": {"sort": "name", "type": "texte", "limit": 1, "offset": 1, "source": "texte", "name_contains": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - quiet_contacts≈ 175 tokens
People with no recorded contact in either direction for a while, quietest first, with the latest contact date. Use for relationships that have gone quiet, not as a ranking of who is worth contacting. Coverage is limited to covered connected sources and imported metadata. `days` sets the threshold; the default is six months.
Paramètres, retour & exemple (2)
Paramètresdays· integer · optionnel
Quiet for at least this many days. Default 182.limit· integer · optionnel
Max people (default 20, max 100).
Exemple d'appel{"name": "quiet_contacts", "arguments": {"days": 1, "limit": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
+ 51 autres outils (affichage limité à 120).
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».