YouSpot
REMOTE · YOUSPOT.COM · SCANNED SEP 20
Query one person's second brain: contacts, companies, notes, files and connected accounts.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 19417 tokens (~178/item across 109 items; 106 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management50
- Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage96
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 89% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "send_email" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 108 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities73
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
- Supports UI / widget rendering.Pass
How do I install the YouSpot MCP server?
YouSpot is a hosted endpoint at https://youspot.com/mcp/v1, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · youspot.com
claude mcp add --transport http com-youspot-youspot 'https://youspot.com/mcp/v1'
{
"mcpServers": {
"com-youspot-youspot": {
"url": "https://youspot.com/mcp/v1"
}
}
} {
"servers": {
"com-youspot-youspot": {
"type": "http",
"url": "https://youspot.com/mcp/v1"
}
}
} [mcp_servers.com-youspot-youspot] url = "https://youspot.com/mcp/v1"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-youspot-youspot": {
"type": "remote",
"url": "https://youspot.com/mcp/v1",
"enabled": true
}
}
} openclaw mcp add com-youspot-youspot --url 'https://youspot.com/mcp/v1' --transport streamable-http
mcp_servers:
com-youspot-youspot:
url: "https://youspot.com/mcp/v1" {
"McpServers": {
"com-youspot-youspot": {
"Transport": "http",
"Url": "https://youspot.com/mcp/v1"
}
}
} assistant mcp add com-youspot-youspot -t streamable-http -u 'https://youspot.com/mcp/v1'
{
"mcpServers": {
"com-youspot-youspot": {
"type": "http",
"url": "https://youspot.com/mcp/v1"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 0
- Tool “list_graph_objects” rewrote its description, which is the text the model reads security
- Tool “merge_graph_objects” rewrote its description, which is the text the model reads security
- New tool “audit_brain” functional
- New tool “draft_cloud_agent” functional
- New tool “unmerge_graph_objects” functional
- “list_graph_objects” added an optional parameter “offset” cosmetic
- “merge_graph_objects” added an optional parameter “preview” cosmetic
- “query_graph_objects” reworded the description of “source” cosmetic
- 19 Sept 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “extract_brand_kit” rewrote its description, which is the text the model reads security
- Tool “get_brand_kit” rewrote its description, which is the text the model reads security
- Tool “read_artifact” rewrote its description, which is the text the model reads security
- 18 Sept 26 0
- Tool “archive_gmail_message” rewrote its description, which is the text the model reads security
- Tool “create_gmail_draft” rewrote its description, which is the text the model reads security
- Tool “get_calendar_events” rewrote its description, which is the text the model reads security
- Tool “list_gmail_labels” rewrote its description, which is the text the model reads security
- Tool “list_google_calendars” rewrote its description, which is the text the model reads security
- Tool “search_gmail_messages” rewrote its description, which is the text the model reads security
- Tool “update_calendar_event” rewrote its description, which is the text the model reads security
- New resource “artifact” functional
- New resource “brand-kits” functional
- New tool “check_page_changes” functional
- New tool “check_person_changes” functional
- New tool “generate_markdown” functional
- New tool “get_domain_keywords” functional
- New tool “read_artifact” functional
- New tool “share_artifact” functional
- “get_calendar_events” reworded the description of “calendar_id” cosmetic
- “get_calendar_events” reworded the description of “count_only” cosmetic
- 17 Sept 26 +1
- A breaking change shipped without a version bump: still 1.0.0 ▼ security
- Tool “changelog_save_draft” was removed ▼ security
- Tool “changelog_sources” was removed ▼ security
- Tool “get_substack_post_stats” was removed ▼ security
- Tool “get_substack_posts” was removed ▼ security
- Tool “get_substack_subscriber_counts” was removed ▼ security
- Tool “get_substack_subscribers” was removed ▼ security
- Tool “import_substack_subscribers” was removed ▼ security
- Tool “intake_get_email” was removed ▼ security
- Tool “intake_record_decision” was removed ▼ security
- Tool “intake_reply” was removed ▼ security
- Tool “linear_comment_on_issue” was removed ▼ security
- Tool “linear_create_issue” was removed ▼ security
- Tool “linear_get_issue” was removed ▼ security
- Tool “linear_relate_issues” was removed ▼ security
- Tool “linear_routing_catalog” was removed ▼ security
- Tool “linear_search_issues” was removed ▼ security
- Tool “lookup_substack_subscriber” was removed ▼ security
- Tool “generate_email” rewrote its description, which is the text the model reads security
- Tool “generate_og_image” rewrote its description, which is the text the model reads security
- Tool “generate_pdf” rewrote its description, which is the text the model reads security
- Tool “get_artifact” rewrote its description, which is the text the model reads security
- Tool “get_calendar_events” rewrote its description, which is the text the model reads security
- Tool “get_my_bookmarks” rewrote its description, which is the text the model reads security
- Tool “get_my_tweets” rewrote its description, which is the text the model reads security
- Tool “get_slack_thread” rewrote its description, which is the text the model reads security
- Tool “get_twitter_following” rewrote its description, which is the text the model reads security
- Tool “get_twitter_profile” rewrote its description, which is the text the model reads security
- Tool “list_artifacts” rewrote its description, which is the text the model reads security
- Tool “list_google_calendars” rewrote its description, which is the text the model reads security
- Tool “plan_generation” rewrote its description, which is the text the model reads security
- Tool “save_as_template” rewrote its description, which is the text the model reads security
- Tool “search_gmail_messages” rewrote its description, which is the text the model reads security
- Tool “search_slack_messages” rewrote its description, which is the text the model reads security
- Tool “search_tweets” rewrote its description, which is the text the model reads security
- Tool “send_text_to_user” rewrote its description, which is the text the model reads security
- Tool coverage: 82% → 88% ▲ functional
- New tool “cancel_scheduled_text” functional
- New tool “list_scheduled_texts” functional
- “generate_og_image” added an optional parameter “size” cosmetic
- “plan_generation” added an optional parameter “size” cosmetic
- “send_text_to_user” added an optional parameter “send_at” cosmetic
- Tool “generate_og_image” changed its title: Generate social image → Generate image cosmetic
- 16 Sept 26 0
- A breaking change shipped without a version bump: still 1.0.0 ▼ security
- Tool “linear_completed_issues” was removed ▼ security
- Tool “changelog_save_draft” rewrote its description, which is the text the model reads security
- “changelog_save_draft” added a required parameter “day”, so existing callers break ▼ functional
- “changelog_save_draft” added a required parameter “items”, so existing callers break ▼ functional
- “changelog_save_draft” dropped the required parameter “sources” ▼ functional
- “changelog_save_draft” dropped the required parameter “week_start” ▼ functional
- New tool “changelog_sources” functional
- New tool “generate_substack_post” functional
- New tool “get_my_plan” functional
- New tool “get_substack_post_stats” functional
- New tool “get_substack_posts” functional
- New tool “get_substack_subscriber_counts” functional
- New tool “get_substack_subscribers” functional
- New tool “import_substack_subscribers” functional
- New tool “lookup_substack_subscriber” functional
- 15 Sept 26 +1
- Tool “draft_email_in_gmail” rewrote its description, which is the text the model reads security
- Tool “generate_email” rewrote its description, which is the text the model reads security
- Schema quality: 15809 → 17554 ▼ functional
- New tool “create_brand_kit” functional
- New tool “extract_brand_kit” functional
- New tool “generate_pdf” functional
- New tool “get_artifact” functional
- New tool “get_brand_kit” functional
- New tool “list_artifacts” functional
- New tool “list_templates” functional
- New tool “plan_generation” functional
- New tool “save_as_template” functional
- New tool “set_default_brand_kit” functional
- New tool “update_brand_kit” functional
- “generate_email” added an optional parameter “saved_template_id” cosmetic
- “generate_og_image” added an optional parameter “saved_template_id” cosmetic
- “generate_email” made “subject” optional cosmetic
- “generate_og_image” made “props” optional cosmetic
- 14 Sept 26 0
- New tool “draft_email_in_gmail” functional
- New tool “generate_email” functional
- New tool “generate_og_image” functional
- New tool “list_brand_kits” functional
- 13 Sept 26 0
- Tool “create_calendar_event” rewrote its description, which is the text the model reads security
- “create_calendar_event” added an optional parameter “action_id” cosmetic
- “create_calendar_event” added an optional parameter “all_day” cosmetic
- “create_calendar_event” added an optional parameter “timezone” cosmetic
- “create_calendar_event” reworded the description of “account” cosmetic
- “create_calendar_event” reworded the description of “calendar_id” cosmetic
- “create_calendar_event” reworded the description of “description” cosmetic
- “create_calendar_event” reworded the description of “end” cosmetic
- “create_calendar_event” reworded the description of “location” cosmetic
- “create_calendar_event” reworded the description of “start” cosmetic
- “create_calendar_event” reworded the description of “summary” cosmetic
- “create_calendar_event” made “end” optional cosmetic
- “create_calendar_event” made “start” optional cosmetic
- “create_calendar_event” made “summary” optional cosmetic
- Tool “create_calendar_event” changed its title: Create calendar event → Add event to calendar cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://youspot.com/mcp/v1
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=youspot.com | CN=WE1,O=Google Trust Services,C=US | 15 Aug 2026 | 13 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | 9a1e13268e4b1f610eb83d6e63fa2638 |
| SANs: youspot.com, *.youspot.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of youspot.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| youspot.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://youspot.com/.well-known/oauth-protected-resource/mcp/v1", error="invalid_token"
Bearer resource_metadata="https://youspot.com/.well-known/oauth-protected-resource/mcp/v1", error="invalid_token" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Protected resource metadata
| Document | https://youspot.com/.well-known/oauth-protected-resource/mcp/v1 |
|---|---|
| Retrieved | Yes |
| Resource | https://youspot.com/mcp/v1 |
| Authorisation server | https://youspot.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://youspot.com/mcp/v1 | Verified | 200 | |
| http (plaintext) | http://youspot.com/mcp/v1 | HTTPS enforced | 308 | https://youspot.com/mcp/v1 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_slack_thread Read Slack thread ~99
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | The channel id (C…/D…). |
| thread_ts | string | yes | The thread's parent ts (from a search result). |
No output schema declared.
No examples provided.
get_twitter_following Get X following ~152
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.
| Name | Type | Req | Description |
|---|---|---|---|
| handle | string | – | One connected @handle whose follows to read. Omit for all connected accounts. |
| limit | integer | – | Max accounts to return (default 50, max 200). |
| query | string | – | Case-insensitive filter on name, handle, or bio. |
No output schema declared.
No examples provided.
get_twitter_profile Get X profile ~77
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.
| Name | Type | Req | Description |
|---|---|---|---|
| handle | string | – | One connected @handle. Omit for all connected accounts. |
No output schema declared.
No examples provided.
import_contacts_from_file Import contacts ~208
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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | The user's own description of what the file holds. |
| name | string | – | Part of the filename, when the object_id is unknown. |
| object_id | string | – | The file's graph object_id (from search_graph_objects). |
| target_type | string | – | What each row is. Defaults to contact. |
No output schema declared.
No examples provided.
job_changes Who has changed jobs ~194
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Only moves noticed in the last N days. Default 90. Use 1 for a daily watcher. |
| limit | integer | – | Max people (default 20, max 100). |
| refresh | boolean | – | Check the profiles for new moves before reading. Default true. |
No output schema declared.
No examples provided.
linkedin_analytics Analyze LinkedIn posts ~222
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.
| Name | Type | Req | Description |
|---|---|---|---|
| daily | boolean | – | Per-day time series instead of one total. Requires start_date and a specific metric (not 'all'). |
| end_date | string | – | Window end, YYYY-MM-DD (defaults to today). |
| metric | string | – | Which metric ('all' fetches every metric — the default). LinkedIn's API takes one metric per call, so 'all' costs five calls. |
| start_date | string | – | Window start, YYYY-MM-DD. Omit for lifetime. |
No output schema declared.
No examples provided.
list_artifacts List generated items ~77
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.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
No output schema declared.
No examples provided.
list_brand_kits List brand kits ~128
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_gmail_labels List Gmail labels ~79
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Email address of one connected mailbox. Omit to list labels for all connected mailboxes. |
No output schema declared.
No examples provided.
list_google_calendars List calendars ~113
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Email address of one connected Google account. Omit to list calendars for all connected accounts. |
No output schema declared.
No examples provided.
list_graph_objects List brain objects ~167
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. Page with offset to read past the newest results. For finding something by name, prefer search_graph_objects.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (default 20, max 50). |
| offset | integer | – | Skip this many results, for paging past the newest. |
| type | string | – | Only objects of this type (e.g. 'fact', 'web_link'). |
No output schema declared.
No examples provided.
list_integrations Check connections ~210
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.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | – | Ask about one integration only, e.g. 'linkedin', 'gmail', 'hubspot', 'slack', 'twitter', 'obsidian', 'sms'. |
No output schema declared.
No examples provided.
list_obsidian_notes Browse vault ~148
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.
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | – | Only notes under this vault folder, e.g. 'Daily'. |
| limit | integer | – | Max results (default 15, max 50). |
| tag | string | – | Only notes carrying this tag. |
| vault_id | string | – | Only this vault (from list_obsidian_vaults). |
No output schema declared.
No examples provided.
list_obsidian_vaults Obsidian vaults ~101
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_scheduled_texts List scheduled texts ~40
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_slack_channels List Slack channels ~59
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_templates List saved templates ~72
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.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
No output schema declared.
No examples provided.
merge_graph_objects Merge brain objects ~155
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.
| Name | Type | Req | Description |
|---|---|---|---|
| keep_id | string | yes | The record that survives (exact object_id). |
| merge_id | string | yes | The duplicate to fold in and delete. |
| preview | boolean | – | Return what the merge would do without doing it. Call this first. |
No output schema declared.
No examples provided.
mutual_connections Find mutual connections ~95
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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_id_a | string | yes | The first object (exact object_id). |
| object_id_b | string | yes | The second object (exact object_id). |
No output schema declared.
No examples provided.
parse_invoice_pdf Read invoice PDF ~248
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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Part of the filename, when the object_id is unknown. |
| object_id | string | – | The file's graph object_id. |
No output schema declared.
No examples provided.
plan_generation Plan a generation ~505
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.
| Name | Type | Req | Description |
|---|---|---|---|
| align | string | – | – |
| appearance | string | – | – |
| brand_kit_id | string | – | A brand_kit_id from list_brand_kits. |
| footer_text | string | – | – |
| header | string | – | – |
| kind | string | yes | – |
| markdown | string | – | – |
| page | string | – | – |
| page_numbers | string | – | – |
| props | object | – | – |
| saved_template_id | string | – | A saved_template_id from list_templates; its inputs seed the ones you pass. |
| size | string | – | 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' 1080x1… |
| subject | string | – | The email subject, if they gave one. |
| template_id | string | – | The template the user named, if any. |
| title | string | – | The PDF title, if they gave one. |
No output schema declared.
No examples provided.
purge_graph_object Purge brain object ~112
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. To remove a single connection and keep both objects, use disconnect_graph_objects instead.
| Name | Type | Req | Description |
|---|---|---|---|
| object_id | string | yes | The object to destroy (exact object_id). |
No output schema declared.
No examples provided.
query_graph_objects Query brain objects ~371
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.
| Name | Type | Req | Description |
|---|---|---|---|
| created_before_days | integer | – | Only rows created more than N days ago. |
| created_within_days | integer | – | Only rows created in the last N days. Use 1 for "already done today". |
| follow_up_due_by | string | – | 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. |
| limit | integer | – | Max results (default 20, max 50). |
| name_contains | string | – | Substring of the name, case-insensitive. |
| offset | integer | – | Skip this many results, for paging. |
| sort | string | – | Order of results. Default newest. |
| source | string | – | 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. |
| text_contains | string | – | Substring of the name or the description, case-insensitive. |
| type | string | – | Only objects of this type (e.g. 'fact', 'note'). |
No output schema declared.
No examples provided.
quiet_contacts Who has gone quiet ~154
People the user has not written to in a while, quietest first, with the date of the last thing they sent. Use when a skill needs to know who has gone quiet rather than to rank who is worth contacting: which clients have drifted, who is overdue a note, has anyone been silent since a given point. Judged on sent mail, so it measures what the user did rather than what arrived. `days` sets the line; the default is six months, which is the corpus's dormancy line rather than a tuned one.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Quiet for at least this many days. Default 182. |
| limit | integer | – | Max people (default 20, max 100). |
No output schema declared.
No examples provided.
read_artifact Show generated item ~105
Return a generated item itself, for showing it where a YouSpot link cannot be opened: a social image comes back as the PNG, a PDF as an image of each page, an email, document or Substack post as its text. Takes an artifact_id from a generator or list_artifacts. A draft comes back watermarked; the user unlocks the clean copy for a credit.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | An artifact_id from a generator or list_artifacts. |
No output schema declared.
No examples provided.
read_file Read file ~127
Read the content of a file the user uploaded — use this when the answer may live in a document in their Second Brain: schedules, itineraries, contracts, exports, scans. PDFs and images are returned as the actual document, so tables and scanned pages read correctly. Find the file first with search_graph_objects (type 'file') and pass its object_id, or pass part of the filename as name.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Part of the filename, when the object_id is unknown. |
| object_id | string | – | The file's graph object_id (from search_graph_objects). |
No output schema declared.
No examples provided.
read_web_page Read web page ~214
Fetch and read the content of one public web page by URL — use when the user asks what a page or article says, or you need to read a prospect's or company's own site before a conversation. Reads the page as it renders in a real browser, so it works on JavaScript sites. Returns the page's readable text. Pass save=true to also keep the page in the user's graph as a web_link (searchable later); default is a one-off read that is not stored. Cannot read LinkedIn, social, or any sign-in-gated page — those are captured through the browser extension, and this tool says so rather than trying. Not for researching a company in general (that is research_company) or reading a file the user uploaded (that is read_file).
| Name | Type | Req | Description |
|---|---|---|---|
| save | boolean | – | Keep the page in the graph as a web_link for later search. Default false — a one-off read is not stored. |
| url | string | yes | The http(s) URL of the page to read. |
No output schema declared.
No examples provided.
record_interaction Log interaction ~218
Record one dated touchpoint with someone in the user's graph — an email exchanged, a call, a meeting, a LinkedIn touch, or a manually noted contact — so 'when did I last talk to them?' has an answer. Creates an interaction object connected to the person it happened with; get with_object_id from search_graph_objects. occurred_at is ISO 8601 ('2026-08-28T15:00:00Z') and may be in the future ('we're meeting next Tuesday'). direction is from the user's point of view: inbound means they reached out to the user.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | yes | How it happened. |
| direction | string | yes | 'inbound' when they contacted the user, 'outbound' when the user reached out. |
| occurred_at | string | yes | When it happened (ISO 8601; future is fine). |
| summary | string | yes | One or two sentences on what happened. |
| with_object_id | string | yes | Who it happened with (their exact object_id). |
No output schema declared.
No examples provided.
referral_paths Who introduced whom ~153
Who introduced the people in the user's graph, aggregated per introducer, so a skill can see which relationships actually produce work rather than which are warm. Returns each introducer with the people they introduced and how many of those became clients. Use for 'which relationships turn into work', 'who sends me business', 'what do my best clients have in common'. NOT a route to one stranger, which is find_paths, and not a warmth ranking, which is who has gone quiet.
| Name | Type | Req | Description |
|---|---|---|---|
| clients_only | boolean | – | Only count introductions that became clients, judged on a billed or worked_on edge. Default false, which counts all. |
| limit | integer | – | Max introducers (default 20, max 100). |
No output schema declared.
No examples provided.
research_company Research company ~160
Research one specific company in depth — the same engine behind the CompanyResearch.ai app. Takes a website domain (preferred) or a company name, and returns a profile: description, industry, size, revenue, funding history, founders, competitors, recent news, and answers to the user's saved research questions. Use this when the user asks to research, analyze, or get a briefing on a specific company. For discovering many companies by criteria, use find_companies instead; for a quick identity card, company_card markup is enough. The first run on an uncached company can take a while — that is normal.
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | yes | The company to research: a website domain ("hubspot.com", preferred) or a company name ("HubSpot"). |
No output schema declared.
No examples provided.
save_as_template Save as template ~103
Save a generated image, email or PDF as a template in the user's Second Brain, so the same inputs can be generated again from the generator or from chat. Takes the artifact_id a generator returned and a short name the user would recognise. Only the author's own draft can be saved. Returns the saved_template_id.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | An artifact_id from a generator or list_artifacts. |
| name | string | yes | A short name for the template. |
No output schema declared.
No examples provided.
save_file_from_url Save file from URL ~151
Download a file from a public http(s) URL and store it in the user's Second Brain as a file object — use when the user shares a direct link to a PDF, image, spreadsheet, or other file and asks to save, download, or keep it. The saved file shows up with their uploads and can be read afterwards with read_file. Not for web pages (that is read_web_page with save=true) and not for files behind a sign-in. Files over 50MB are refused.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | – | Name to store the file under. Default: the name the server or URL suggests. |
| url | string | yes | The http(s) URL of the file to download. |
No output schema declared.
No examples provided.
search_connections Search connections ~182
Search the user's own LinkedIn connections by name, company, or job title. Use this to answer questions like 'who do I know at Stripe?', 'which of my connections are founders?', or to look someone up by name. Returns matching people with their company, title, headline and location. Omit all filters to list the most recent connections. On a miss the response also reports how many connections the user has imported at all: if no_imported_data is set, their connections are simply not loaded — say that, and never conclude from an empty result that they don't know the person.
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | – | Match against the company name. |
| limit | integer | – | Max results (default 20, max 50). |
| query | string | – | Match against the person's full name. |
| title | string | – | Match against the person's job title. |
No output schema declared.
No examples provided.
search_gmail_messages Search Gmail ~318
Search the user's connected Gmail mailboxes and return matching messages, newest first: from, to, subject, date, and a short snippet of the body. `query` uses Gmail search syntax: 'in:sent to:jane@acme.com' for messages the user sent to someone, 'from:jane@acme.com' for messages they received, plus operators like subject:, newer_than:7d, and has:attachment. So 'show me the last 5 messages I sent to jane@acme.com' is query 'in:sent to:jane@acme.com' with max_results 5. Each result carries a `starred` flag; a message the user starred matters to them, so weight it accordingly; 'is:starred' finds starred mail directly. For 'how many' questions, use total_matches_estimate in the result (it is Gmail's estimate of ALL matches, beyond the messages returned). If it reports no Gmail account connected, give the user the link it returns. Rare header-only connections cannot run query search; the tool says so. Answer correspondence questions from the brain for those.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Email address of one connected mailbox to search. Omit to search all connected mailboxes. |
| max_results | integer | – | Max messages to return (default 10, max 100). |
| query | string | yes | The search in Gmail query syntax, e.g. 'in:sent to:jane@acme.com newer_than:30d'. |
No output schema declared.
No examples provided.
search_graph_objects Search brain ~162
Search the user's graph by matching a term against object names and descriptions — plus semantic matching over text-bearing objects (notes, facts, posts, links, files, emails), so a search finds what the user means, not just exact words. Use this to find a specific thing they mentioned — a person, company, file, saved web link, or fact — when you don't have its object_id. Optionally restrict to one type. Returns matches with their object_id for follow-up with get_graph_object.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (default 20, max 50). |
| query | string | yes | Term to match against name and description. |
| type | string | – | Only objects of this type (e.g. 'contact', 'fact'). |
No output schema declared.
No examples provided.
search_hubspot_crm Search HubSpot CRM ~278
Look up a person or company in the user's connected HubSpot CRM, live, by email address, domain, or name. Use this for 'what do I have on dshah@hubspot.com', 'is gusto.com in the CRM', 'is Acme a customer', or 'do we have a contact named Jane Doe'. An email finds that contact and the company at its domain; a domain finds the company and the contacts at it; anything else is a name search over both. Returns the matching records with their CRM properties and a url to open each in HubSpot. lifecyclestage says where a record stands (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer, evangelist, other), so 'a customer' means lifecyclestage is customer. found=false with no errors means the CRM has no such record. For aggregate questions over many records use ask_about_hubspot_contacts or ask_about_hubspot_companies instead.
| Name | Type | Req | Description |
|---|---|---|---|
| object_type | string | – | Restrict to one record type. Default 'both'. |
| portal_id | integer | – | A HubSpot portal (hub) id, when the user has more than one connected and named it. |
| query | string | yes | An email address, a domain, or a person or company name. |
No output schema declared.
No examples provided.
search_linkedin_posts Search LinkedIn posts ~206
Search public LinkedIn posts by keywords and store the results in the user's brain automatically — do not re-save them with graph tools. The response splits posts into 'new' (never seen by this user before) and 'seen' (already stored on an earlier run). When running as a scheduled watcher, only report or email when 'new' is non-empty, and never include 'seen' posts. Link a post with [label](object:<object_id>) using the returned object ids. Pass found_by_object_id (your own agent node id, the id inside the [object:...] marker at the end of your instructions) so finds are filed under that agent.
| Name | Type | Req | Description |
|---|---|---|---|
| found_by_object_id | string | – | The searching agent's own object id, from the [object:...] marker. Omit in normal chat. |
| query | string | yes | Comma-separated keywords to search for. |
| recency | string | – | How far back to search. Default Week. |
No output schema declared.
No examples provided.
search_obsidian_notes Search vault ~203
Search the notes synced from the user's Obsidian vault, by keyword and by meaning, and get back where each one lives in the vault with an excerpt around the match. Use this when they ask what their notes say about something, or point at their vault ('in my notes', 'from my Obsidian'). Narrow with vault_id, folder (a vault path prefix like 'Meetings/2026'), or tag. Returns object_id and path for follow-up with get_obsidian_note, which returns the full note.
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | – | Only notes under this vault folder, e.g. 'Projects'. |
| limit | integer | – | Max results (default 15, max 50). |
| query | string | yes | What to look for in the notes. |
| tag | string | – | Only notes carrying this tag, e.g. 'meeting'. |
| vault_id | string | – | Only this vault (from list_obsidian_vaults). |
No output schema declared.
No examples provided.
search_slack_messages Search Slack ~152
Search the Slack messages saved to the user's brain — by keyword and by meaning — newest first. Covers channels the user switched on and their DMs with YouSpot; nothing outside those. Optionally restrict to one channel (id or #name) or to messages since an ISO date. If it reports no Slack workspace connected, give the user the link it returns.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | – | A channel id (C…) or name ('#general') to search within. |
| limit | integer | – | Max messages (default 10, max 50). |
| query | string | yes | What to look for. |
| since | string | – | Only messages sent on or after this ISO 8601 date. |
No output schema declared.
No examples provided.
search_tweets Search X posts ~235
Search recent public posts on X (Twitter) by keywords — the X API covers roughly the last week. Uses the user's connected X account; if none is connected, give the user the link it returns. Results are stored in the user's brain automatically — do not re-save them with graph tools. The response splits posts into 'new' (never seen by this user before) and 'seen' (already stored on an earlier run). When running as a scheduled watcher, only report or email when 'new' is non-empty, and never include 'seen' posts. Link a post with [label](object:<object_id>) using the returned object ids. Pass found_by_object_id (your own agent node id, the id inside the [object:...] marker at the end of your instructions) so finds are filed under that agent.
| Name | Type | Req | Description |
|---|---|---|---|
| found_by_object_id | string | – | The searching agent's own object id, from the [object:...] marker. Omit in normal chat. |
| query | string | yes | What to search for. X search syntax works: keywords, @mentions, "exact phrases", OR. |
No output schema declared.
No examples provided.
send_email Send email ~394
Send an email to the signed-in user at their own account email address. Use this when the user asks to be sent something — 'email me this', 'send myself a reminder', 'send me that summary as an email'. The recipient is fixed to their own address and cannot be changed. To write an email to anyone else, use create_gmail_draft instead — it drafts in their Gmail without sending. Compose a short, specific subject line yourself if the user didn't give one. The body is Markdown, rendered into the YouSpot email template before sending: '## ' subheadings, '- ' bullets, **bold**, > quotes and tables all work. Do not write HTML, and do not add a sign-off or a footer — the template supplies both. LINKS. Never write an absolute youspot.com URL; you do not reliably know them, and a wrong one reaches the reader as a dead link. Write one of these two forms instead and they are resolved for you: [Acme Corp](object:obj_4c1f88a2) — links to an object in the user's graph. The id must come from a graph tool result you actually ran; an id that is not theirs silently loses its link. [Which of these should I chase?](chat:Which of these prospects should I chase first?) — opens chat with that question ready to send. Link the objects you name, so the reader can go straight to what you are telling them about. End with one 'chat:' link offering the obvious next question — it is the cheapest way for them to act on what you found.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The body of the email, as Markdown. Use [label](object:<id>) to link a graph object and [label](chat:<question>) to link a ready-to-send chat question. |
| subject | string | yes | The email subject line. |
No output schema declared.
No examples provided.
send_slack_message Send Slack message ~140
Post a message to a Slack channel or DM as YouSpot, optionally as a reply in a thread. Only channels the bot has been invited to work; use list_slack_channels to find ids. Write in Slack markdown (*bold*, bullet lines, <url|label> links). Confirm with the user before posting anywhere others can see it.
| Name | Type | Req | Description |
|---|---|---|---|
| channel_id | string | yes | Where to post (C…/D… id). |
| team_id | string | – | The workspace, when the user has more than one. |
| text | string | yes | The message. |
| thread_ts | string | – | Reply in this thread instead of the channel. |
No output schema declared.
No examples provided.
send_text_to_user Text the user ~262
Send a short text message (iMessage/SMS) to the user's own phone, the number they verified on the iMessage or SMS integration. Sends right now by default; pass send_at to schedule it for later (a reminder for tomorrow morning, a nudge before a meeting). send_at must be ISO 8601 WITH the user's UTC offset, e.g. 2026-09-18T09:00:00-04:00: work out their timezone from the conversation or ask, never guess UTC. Scheduled texts can be listed with list_scheduled_texts and cancelled with cancel_scheduled_text. The recipient is always the user themself; no other number can be reached. If no verified number is on file, the response says so and carries the link to connect one. Keep messages short and concrete; there is a rate cap, so never use this for routine chatter.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | The text to send (max 1000 characters). |
| send_at | string | – | When to send, ISO 8601 with a UTC offset (e.g. 2026-09-18T09:00:00-04:00), up to 90 days out. Omit to send immediately. |
No output schema declared.
No examples provided.
set_default_brand_kit Set default brand kit ~62
Make a brand kit the default for the user's active space, so social images, emails and PDFs render in it when no brand_kit_id is given.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_kit_id | string | yes | A brand_kit_id from list_brand_kits. |
No output schema declared.
No examples provided.
set_follow_up Set follow-up ~147
Set a dated follow-up about an object in the user's graph — 'follow up with Jane in March'. Creates a follow-up fact carrying follow_up_at (ISO 8601, usually in the future) and an optional note, connected to the object it's about. Interim shape: there is no dated query tool yet, so to read follow-ups back ('what's due this week?'), list the user's fact objects and filter on json_data.follow_up_at yourself.
| Name | Type | Req | Description |
|---|---|---|---|
| about_object_id | string | yes | What the follow-up is about (exact object_id). |
| note | string | – | Optional reminder text. |
| when | string | yes | When to follow up (ISO 8601). |
No output schema declared.
No examples provided.
set_graph_object_fields Update brain object ~177
Rename or re-describe an object in the user's graph, or set any of its type-specific fields: a contact's phone, email, headline or location, a company's funding stage, and so on. 'name' and 'description' work on every type (files included); other field names come from the type's field dictionary, which get_graph_object returns as 'editable_fields'. Read that first rather than guessing a name, because a name the dictionary does not have is skipped. Pass null to clear a field. Identify the object by object_id (search_graph_objects returns it).
| Name | Type | Req | Description |
|---|---|---|---|
| fields | object | yes | Field name -> new value (e.g. {'name': 'Q3 deck'} or {'headline': 'CTO at Acme'}). |
| object_id | string | yes | The object to update (exact id). |
No output schema declared.
No examples provided.
set_notification_emails Update email notifications ~266
Turn the recurring emails YouSpot itself sends the user off or back on, when they ask to stop getting one, unsubscribe, or resume it. The emails: exec_briefings is the daily 'Exec Briefing' built from their Second Brain; post_reports is the recurring 'Insights from your LinkedIn posts' traction report; process_emails are the one-off notices when an import or sync finishes. Pass only the settings they mean, false to stop. When they say 'this email' or 'the one I just got' without naming it, call with no arguments first: the result names the last email YouSpot sent them and the setting behind it, then call again with that setting false. This is for YouSpot's own mail only; for newsletters or senders in their Gmail use the Gmail tools. Confirm in plain words what is now off (or on) and that they can change it any time at the settings_url returned.
| Name | Type | Req | Description |
|---|---|---|---|
| exec_briefings | boolean | – | The daily 'Exec Briefing' email. false stops it. |
| post_reports | boolean | – | The recurring 'Insights from your LinkedIn posts' report. false stops it. |
| process_emails | boolean | – | The notices when an import or sync finishes. false stops them. |
No output schema declared.
No examples provided.
share_artifact Share generated item ~93
Put a generated item behind a public link, so it can be posted, embedded in a page or opened by someone with no YouSpot account. Anyone holding the link can see it. revoke true takes an existing link away again. Returns the URL.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_id | string | yes | An artifact_id from a generator or list_artifacts. |
| revoke | boolean | – | Take an existing link away instead of making one. |
No output schema declared.
No examples provided.
similar_objects Find similar objects ~137
The objects in the user's graph closest in MEANING to one object — nearest neighbours by stored embedding, so it finds related notes, facts, links, files, and posts even when no words match. Use it to browse outward from something search_graph_objects found. Only text-bearing objects carry embeddings (built in the background), so an empty result usually means the source has none yet.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (default 10, max 50). |
| object_id | string | yes | The object to find neighbours of (exact id). |
| type | string | – | Only neighbours of this type (e.g. 'note'). |
No output schema declared.
No examples provided.
top_message_correspondents Top correspondents ~82
The people the user has exchanged the most LinkedIn messages with, most-messaged first, with how many messages and when they last spoke. Use for 'who have I exchanged the most messages with?', 'who do I talk to most on LinkedIn?', and similar.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many people to return (max 50). |
No output schema declared.
No examples provided.
What is the YouSpot MCP server?
YouSpot is an MCP server listed in the public MCP registry as com.youspot/youspot. Query one person's second brain: contacts, companies, notes, files and connected accounts. This page covers its hosted endpoint (https://youspot.com/mcp/v1).
Is the YouSpot MCP server safe to use?
YouSpot scores 84 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the YouSpot MCP server expose?
YouSpot exposes 106 tools: what_needs_attention, get_my_plan, draft_cloud_agent, research_company, company_signals, and 101 more. Their descriptions and schemas cost roughly 19,132 tokens of context every time the server is loaded.
Does the YouSpot MCP server require authentication?
Yes. YouSpot asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the YouSpot MCP server still maintained?
YouSpot is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.