HDW MCP Server
The HDW MCP Server (also known as AnySite MCP Server) enables AI agents to access real-time web data from multiple platforms through a unified Model Context Protocol interface.
LinkedIn Integration - Advanced user search with 10+ filters (keywords, title, company, location, industry, education, seniority, job functions, languages), detailed profile extraction (experience, skills, education, posts, reactions, comments, connections, endorsers), email lookup, Sales Navigator search with 2500+ result capacity, company intelligence (profiles, employee lists, posts), post search and analytics, conversation management, and account actions (messages, connection requests, posts, comments)
Instagram Access - User profiles with follower counts, content extraction (posts and reels), engagement analysis (comments and likes), and hashtag/keyword search
Reddit Functionality - Post search with filters (relevance, sorting, time ranges, subreddit targeting), detailed post information with scores, and nested comment thread extraction
Web Scraping & Search - Google search with structured results, general webpage parsing with CSS selectors, and LinkedIn company discovery
Key Features - Bulk operations (1000-2500 results per request), flexible timeout control (20-1500 seconds), URN-based operations for precise targeting, multi-filter support, real-time non-cached data, automatic rate limit management, proxy rotation, error recovery (self-healing APIs), and secure OAuth authentication
Utilizes .env files for configuring API credentials and environment variables required for the server to function.
Supports installation via git clone from the repository for setting up the HDW MCP Server environment.
Enables searching for LinkedIn companies via Google, where the first result is typically identified as the best match.
Offers specific setup instructions and configuration file paths for macOS users to integrate with the HDW MCP Server.
Uses npm for dependency management during the installation process of the HDW MCP Server.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@HDW MCP Serverfind software engineers at Google with 5+ years experience"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Anysite MCP Server
The entire web is your database. Your AI assistant is the query interface.
A Model Context Protocol server that lets Claude, Cursor, ChatGPT, and any MCP client query structured data from LinkedIn, Instagram, Twitter/X, Reddit, YouTube, SEC EDGAR, Y Combinator, Crunchbase, and any URL on the web — through five universal tools, plus CRM write-back tools.
Quick start
Connect directly to the hosted server at https://mcp.anysite.io/mcp. It speaks MCP over Streamable HTTP with OAuth 2.0, and works with Claude Desktop, Claude Code, Cursor, Cline, Windsurf, ChatGPT, and any MCP-compliant client.
If your client supports HTTP transport, you do not need this npm package. The package exists as a stdio bridge for clients that only speak stdio.
Step 1: Sign up
Create an account at anysite.io. The MCP30 promo covers your first month of MCP Unlimited ($30/month, 6 req/min fair-use, no credit counting). Credit-based plans (Starter $49 / Growth $200 / Scale $300 / Pro $549 / Enterprise from $1,199) also include MCP access; see docs.anysite.io/mcp-server/overview.
Step 2: Connect your client
Settings → Connectors → Add Custom Connector
URL:
https://mcp.anysite.io/mcpClick Connect, authorize in the browser
Required: Settings → Capabilities → Tool access → Tools already loaded
The last step is critical. Claude Desktop's "Load tools when needed" mode uses name-based matching that fails on generic names like discover and execute. If you skip it, the tools exist but the model will not reliably call them.
claude mcp add --transport http anysite "https://mcp.anysite.io/mcp?api_key=YOUR_KEY"
claude mcp list # should show: anysite connectedThe URL carries your API key — treat it as a secret.
Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json in the project root:
{
"mcpServers": {
"anysite": {
"url": "https://mcp.anysite.io/mcp?api_key=YOUR_KEY",
"transport": "http"
}
}
}Point any compliant client at https://mcp.anysite.io/mcp and authenticate via OAuth or ?api_key=YOUR_KEY.
Step 3: Verify
Ask the assistant:
What MCP tools do you have from anysite?It should list: discover, execute, get_page, query_cache, export_data — plus eight crm_* tools if the CRM integration is enabled on your account.
Step 4: Run a query
Use anysite to find 20 CTOs at Series B fintech startups in New York,
then show me the ones with AI or ML in their headline.The assistant runs discover on LinkedIn, picks the right search endpoint, calls execute, then narrows server-side with query_cache.
Related MCP server: Linkd MCP Server
stdio bridge (npm package)
@anysiteio/mcp is a thin local proxy: it runs on stdio and forwards every request to https://mcp.anysite.io/mcp over Streamable HTTP with your token. No business logic lives in the package — tools, instructions, caching and exports all come from the server, so new endpoints and tools appear without a package update.
Use it when your client cannot speak HTTP transport: stdio-only IDE plugins, older Cline/Continue builds, custom stdio runners, or environments where outbound HTTP must go through a managed local process.
Install
npm install -g @anysiteio/mcpOr run on demand with npx -y @anysiteio/mcp.
Configure your client
{
"mcpServers": {
"anysite": {
"command": "npx",
"args": ["-y", "@anysiteio/mcp"],
"env": {
"ANYSITE_ACCESS_TOKEN": "your_token_here"
}
}
}
}That is the entire configuration. Only ANYSITE_ACCESS_TOKEN is required — create one at app.anysite.io. The token can also live in ~/.anysite-mcp.env.
The tools
Tool | Purpose |
| List endpoints in a category with their params and LLM hints. Always call before |
| Fetch data. Returns first 10 items + |
| Paginate cached items without re-fetching (limit ≤ 50). |
| Filter / sort / aggregate cached items server-side. |
| Dump the full dataset to |
| HubSpot-and-friends read/write: connections, schema, upsert contacts/companies, query, undo. Visible only when CRM is enabled for your account. |
Sources surfaced through discover: LinkedIn, Instagram, Twitter/X, Reddit, YouTube, SEC EDGAR, Y Combinator, Crunchbase, DuckDuckGo, the universal web parser, plus AI parsers for GitHub, Amazon, Google Maps, G2, BuiltWith, Apify, GLEIF, Newegg and more. New endpoints appear automatically as soon as they ship on the platform.
Data fetched by execute is cached server-side for 7 days: one execute() call, then unlimited get_page / query_cache / export_data calls without re-paying API credits. Export files live for 24 hours (regenerated on demand while the cache entry is alive).
Usage pattern
discover("linkedin", "search")
→ endpoints: ["users", "companies", "posts", ...] with params
execute("linkedin", "search", "users", { keywords: "CTO AI" })
→ { items: [...first 10], total: 50, cache_key: "abc..." , next_offset: 10 }
get_page("abc...", offset=10) # next page, free
query_cache("abc...", { conditions: [{ field: "location", op: "contains", value: "San Francisco" }] })
export_data("abc...", "csv") # full dataset as a CSV download URLThe agent figures out the parameter names on its own from discover.
Migrating from 2.x
v3 is a breaking change: the package no longer reimplements the server locally — it proxies the hosted MCP server. What changes for you:
export_datareturns a download URL (https://mcp.anysite.io/exports/…) instead of a local file path. Thefile_pathfield is gone; agents that read the exported file from disk must download it instead. The URL is accessible without a token (the file name is unguessable) and lives for 24 hours — do not share the link if the data is sensitive.export_dataparameter isoutput_format. The oldformatname is transparently rewritten by the bridge for backward compatibility, but new prompts should useoutput_format.get_pagecapslimitat 50 (server-side page size limit).Cache is server-side now (7-day TTL, survives restarts, shared across your sessions) instead of in-process.
CRM tools appear (8
crm_*tools) when the CRM integration is enabled on your account.Env vars
ANYSITE_API_URLandANYSITE_OPENAPI_URLare removed — the bridge talks to the MCP server, not the raw API. UseANYSITE_MCP_URLto point at a different MCP server.binaliasesanysiteandmcpare removed — the command isanysite-mcp.Two LinkedIn endpoints that were reachable in 2.x (
sn_search/users,company/employees) are excluded by server policy.Tool results no longer carry a
mimeTypeon content items — the server defines the response shape.Cancelling a long
tools/callstops the client-side wait, but the server keeps processing the request (stateless transport cannot deliver the cancellation) — the work is still billed.
Skills — ready-made workflows
The MCP server gives raw access. Anysite Skills package that access into named workflows you summon by topic, so the assistant runs a proven pattern instead of improvising. Built for Claude Code (also works in Cursor / Windsurf via the same plugin format).
Workflow | What you say | What it does |
Lead generation | "Find me 50 marketing directors at Series A SaaS in Berlin and enrich with email" | LinkedIn search → enrichment → CSV |
Competitor intelligence | "Track @competitor across LinkedIn hires, social, YC, and recent posts" | Multi-source intel + hiring velocity + sentiment |
Person analyzer | "Deep-dive on this LinkedIn profile before our partnership call" | LinkedIn + Twitter + Reddit + GitHub + web → strategic brief |
Market research | "Map the AI legal-tech landscape — startups, funding, momentum" | YC + Crunchbase + SEC + Reddit + Twitter sentiment |
Customer pain mining | "Pull verbatim complaints about Salesforce from Reddit and Twitter" | Pain clusters + exact quotes + white-space gaps |
Brand reputation | "What is the conversation around our brand this week?" | Cross-platform mention scan with sentiment scoring |
Positioning map | "Plot 3-5 competitors on a positioning map, find the empty quadrant" | Five-axis comparison + positioning statement |
Full catalog (17 skills, including VC analyst, influencer discovery, audience analysis, content analytics, trend analysis): github.com/anysiteio/agent-skills.
Install
In Claude Code:
/plugin marketplace add https://github.com/anysiteio/agent-skills
/plugin install anysite-lead-generation@anysite-skillsYou can install one skill or the whole marketplace. The MCP server connection above is the only prerequisite.
Local development
git clone https://github.com/anysiteio/anysite-mcp.git
cd anysite-mcp
npm install
npm run build:tsc
ANYSITE_ACCESS_TOKEN=... node build/server.jsInspect the tools interactively:
npm run inspectorConfiguration
Env var | Required | Default | Notes |
| yes | — | Create one at app.anysite.io |
| no |
| Override the remote MCP server URL |
Variables can also live in ./.env or ~/.anysite-mcp.env (real environment variables and ./.env take precedence over ~/.anysite-mcp.env).
If the remote server is unreachable at startup, the bridge still starts in a degraded mode (empty tool list, descriptive errors on calls), keeps reconnecting in the background, and announces the tool list via tools/list_changed once the server is reachable again.
Project layout
src/
├── server.ts stdio entry (CLI bin): env handling, connect with retries, degraded mode
├── proxy.ts the bridge: remote client, generic request forwarding, tools/list cache,
│ format→output_format shim, error mapping, background list refresh
├── index.ts Smithery TypeScript runtime adapter
└── config.ts env-derived constantsLicense
Available Tools
26 toolsget_instagram_post_commentsC
Get Instagram post comments
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Max result count | |
| post | Yes | Post ID | |
| timeout | No | Max scrapping execution timeout (in seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get Instagram post comments' but fails to reveal critical behaviors: it implies data retrieval but doesn't mention that it involves scraping (as hinted in the schema's 'timeout' parameter), potential rate limits, authentication needs, or what the output looks like. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just three words, front-loading the core action and resource without any wasted language. It efficiently communicates the basic purpose in a minimal format, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (involving scraping as implied by the schema), lack of annotations, and no output schema, the description is incomplete. It fails to address key contextual aspects like scraping behavior, output format, error handling, or how it differs from sibling tools. This leaves the agent with insufficient information for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description adds no additional meaning beyond the schema, such as explaining the relationship between parameters or usage examples. Given the high coverage, a baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract from the schema's information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Instagram post comments' clearly states the verb ('Get') and resource ('Instagram post comments'), making the purpose understandable. However, it lacks specificity about what 'Get' entails (e.g., retrieval, listing, scraping) and does not differentiate from sibling tools like 'get_linkedin_post_comments', leaving room for ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, context for use, or comparisons to sibling tools such as 'get_instagram_user_posts', which might be relevant for related tasks. This absence leaves the agent without direction on appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_userC
Get Instagram user information by URL, alias or ID
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Max scrapping execution timeout (in seconds) | |
| user | Yes | User ID, alias or URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Get' but doesn't specify if this is a read-only operation, whether it requires authentication, rate limits, or what happens on errors. The description lacks critical behavioral context for a tool that likely involves web scraping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and likely involving web scraping (implied by 'scrapping' in timeout description), the description is inadequate. It doesn't explain what information is returned, error conditions, or important behavioral constraints like rate limits or authentication requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value by mentioning 'URL, alias or ID' for the user parameter, but doesn't provide additional context beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('Instagram user information'), and specifies the input types ('by URL, alias or ID'). However, it doesn't explicitly distinguish this tool from its sibling Instagram tools (like get_instagram_user_posts), which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or suggest scenarios where this tool is preferred over others, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_postsC
Get Instagram user posts
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Max result count | |
| timeout | No | Max scrapping execution timeout (in seconds) | |
| user | Yes | User ID, alias or URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'Get' but doesn't disclose behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or that it involves web scraping (implied by the 'timeout' parameter). The description is minimal and lacks critical context for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise ('Get Instagram user posts'), which is efficient and front-loaded. However, it may be overly brief, risking under-specification. Every word serves a purpose, but more detail could improve clarity without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a tool with parameters (including a 'timeout' hinting at scraping), the description is incomplete. It doesn't cover return values, error handling, or behavioral aspects like scraping implications. For a tool with potential complexity, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters (user, count, timeout). The description adds no meaning beyond the schema, as it doesn't explain parameter interactions or usage examples. With high schema coverage, the baseline score of 3 is appropriate, but no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get Instagram user posts' clearly states the action (get) and resource (Instagram user posts), but it's vague about scope and doesn't differentiate from sibling tools like 'get_instagram_user' or 'get_instagram_post_comments'. It lacks specificity about what 'posts' includes (e.g., recent posts, all posts, metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There are sibling tools for Instagram (e.g., 'get_instagram_user', 'get_instagram_post_comments'), but the description doesn't mention them or specify contexts like needing user details versus posts. Usage is implied only by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_chat_messagesC
Get top chat messages from LinkedIn management API. Account ID is taken from environment.
| Name | Required | Description | Default |
|---|---|---|---|
| company | No | Company URN where the account is admin (format: company:123456) | |
| count | No | Max messages to return | |
| timeout | No | Timeout in seconds | |
| user | Yes | User URN for filtering messages (must include prefix, e.g. fsd_profile:ACoAA...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the account ID source but doesn't describe what 'top' means (recency? engagement?), whether this is a read-only operation, potential rate limits, error conditions, or what format the messages are returned in. The description provides minimal behavioral context beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences that convey essential information. The first sentence states the core functionality, and the second provides important authentication context. No unnecessary words or redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'top' means in the context of chat messages, doesn't describe the return format or structure, and provides minimal behavioral context. The authentication note is helpful but doesn't compensate for the overall lack of completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no parameter info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get top chat messages') and resource ('LinkedIn management API'), making the purpose understandable. However, it doesn't differentiate this tool from sibling tools like 'get_linkedin_conversations' or 'send_linkedin_chat_message', which would require more specific scope definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that 'Account ID is taken from environment' which provides some context about authentication, but offers no guidance on when to use this tool versus alternatives like 'get_linkedin_conversations' or 'send_linkedin_chat_message'. No explicit when/when-not scenarios or sibling tool comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_companyC
Get detailed information about a LinkedIn company
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | Company Alias or URL or URN (example: 'openai' or 'company:1441') | |
| timeout | No | Timeout in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't mention potential side effects, authentication requirements, rate limits, error conditions, or what format the detailed information returns. This leaves significant gaps for an AI agent to understand how to invoke it safely and effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. There's zero waste—every word contributes to stating what the tool does. It's appropriately sized for a simple lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool that presumably returns complex company data. It doesn't explain what 'detailed information' entails, potential authentication needs, or error handling. For a LinkedIn API tool with likely rich output, this leaves the agent under-informed about how to interpret results or handle failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('company' and 'timeout') thoroughly. The description adds no additional meaning beyond what's in the schema—it doesn't explain what 'detailed information' includes or how parameters affect the output. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed information about a LinkedIn company', making the purpose unambiguous. It distinguishes from siblings like 'get_linkedin_company_employees' (which focuses on employees) or 'get_linkedin_profile' (which focuses on individual profiles). However, it doesn't specify what 'detailed information' includes, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'get_linkedin_google_company' or 'search_linkedin_posts', nor does it specify prerequisites like needing authentication or valid company identifiers. Usage is implied only by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_company_employeesC
Get employees of a LinkedIn company
| Name | Required | Description | Default |
|---|---|---|---|
| companies | Yes | Company URNs (example: ['company:14064608']) | |
| count | Yes | Maximum number of results | |
| first_name | No | Search for exact first name | |
| keywords | No | Any keyword for searching employees | |
| last_name | No | Search for exact last name | |
| timeout | No | Timeout in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. 'Get employees' implies a read operation, but it doesn't disclose rate limits, authentication requirements, data freshness, pagination behavior, or what happens when companies parameter contains invalid URNs. For a tool with 6 parameters and no output schema, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with clear naming and good schema documentation, though its brevity contributes to gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no annotations, no output schema), the description is inadequate. It doesn't explain what the tool returns (employee profiles? basic info?), how results are structured, whether all parameters work together, or any limitations. For a data retrieval tool with multiple filtering options and no output schema, users need more context about what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional parameter semantics beyond implying the tool operates on LinkedIn company data. It doesn't explain relationships between parameters (e.g., how keywords interacts with first_name/last_name) or provide context about the companies parameter beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('employees of a LinkedIn company'), making the purpose immediately understandable. It distinguishes this tool from siblings like get_linkedin_company (which gets company info) or get_linkedin_user_connections (which gets personal connections). However, it doesn't specify whether this retrieves current employees, all employees, or includes filtering capabilities beyond what the parameters imply.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like search_linkedin_users (which might search across LinkedIn) and get_linkedin_user_connections (which gets connections for a specific user), there's no indication whether this tool is for company-specific employee lookup, how it differs from broader searches, or any prerequisites for accessing company employee data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_conversationsC
Get list of LinkedIn conversations from the messaging interface. Account ID is taken from environment.
| Name | Required | Description | Default |
|---|---|---|---|
| connected_after | No | Filter conversations created after the specified date (timestamp) | |
| count | No | Max conversations to return | |
| timeout | No | Timeout in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the Account ID source but lacks details on permissions, rate limits, pagination, error handling, or what the returned list contains. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose upfront. It avoids unnecessary words, though it could be slightly more structured by separating the authentication note into a second sentence for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a read operation with three parameters), no annotations, and no output schema, the description is minimally adequate. It covers the basic action and authentication but lacks details on return values, error cases, or behavioral constraints, leaving room for improvement in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the three parameters (connected_after, count, timeout). The description adds no additional parameter information beyond what's in the schema, such as date format examples or usage tips. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't need to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get list') and resource ('LinkedIn conversations from the messaging interface'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_linkedin_chat_messages' or 'get_linkedin_user_connections', which might also retrieve conversation-related data, leaving some ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that 'Account ID is taken from environment,' which provides some context about authentication, but it offers no guidance on when to use this tool versus alternatives like 'get_linkedin_chat_messages' or other LinkedIn tools. There are no explicit when/when-not instructions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_email_userB
Get LinkedIn user details by email
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Max results | |
| Yes | Email address | ||
| timeout | No | Timeout in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a read operation ('Get'), implying non-destructive behavior, but lacks details on permissions required, rate limits, error conditions, or what 'user details' specifically includes (e.g., profile fields, contact info). For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and uses clear, direct language. Every element ('Get', 'LinkedIn user details', 'by email') earns its place by conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is minimally adequate for a simple lookup tool but lacks depth. It covers the basic purpose and key parameter (email), but doesn't address behavioral aspects like what 'user details' returns, potential errors, or usage constraints. For a tool with 3 parameters and no structured output, more context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three parameters (email, count, timeout). The description mentions 'by email', which aligns with the required 'email' parameter, but adds no additional semantic context beyond what the schema provides, such as email format requirements or how 'count' affects results. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and target resource ('LinkedIn user details'), with the specific lookup method 'by email' distinguishing it from other LinkedIn tools that might use different identifiers. However, it doesn't explicitly differentiate from similar sibling tools like 'get_linkedin_profile' or 'search_linkedin_users', which could also retrieve user information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'get_linkedin_profile' (which might use a different identifier) or 'search_linkedin_users' (which might offer broader search capabilities). There's no mention of prerequisites, limitations, or typical use cases for email-based lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_google_companyC
Search for LinkedIn companies using Google search. First result is usually the best match.
| Name | Required | Description | Default |
|---|---|---|---|
| count_per_keyword | No | Max results per keyword | |
| keywords | Yes | Company keywords for search. For example, company name or company website | |
| timeout | No | Timeout in seconds | |
| with_urn | No | Include URNs in response (increases execution time) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'First result is usually the best match,' which hints at result quality but doesn't cover critical aspects like rate limits, authentication needs, error handling, or what 'increases execution time' means for the 'with_urn' parameter. For a search tool with external dependencies, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences) and front-loaded with the core purpose. Every sentence adds value: the first defines the tool, the second provides a useful heuristic about result quality. Zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for this tool's complexity. It doesn't explain what the output looks like (e.g., company details, URLs, URNs), error conditions, or how it integrates Google search with LinkedIn data. For a 4-parameter tool with external dependencies, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain search algorithm details or result formatting). Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for LinkedIn companies using Google search.' It specifies the resource (LinkedIn companies) and method (Google search). However, it doesn't explicitly differentiate from sibling tools like 'get_linkedin_company' or 'google_search', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are multiple sibling tools for LinkedIn data (e.g., 'get_linkedin_company', 'google_search'), but no indication of when this hybrid approach is preferred or what its limitations are compared to direct LinkedIn API tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_post_commentsC
Get LinkedIn comments for a post by URN
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Max comments to return | |
| sort | No | Sort type (relevance or recent) | relevance |
| timeout | No | Timeout in seconds | |
| urn | Yes | Post URN, only activity urn type is allowed (example: activity:7234173400267538433) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool gets comments but lacks behavioral details such as rate limits, authentication requirements, pagination behavior, error handling, or what happens if the URN is invalid. This is a significant gap for a tool that likely interacts with an external API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like API limits or errors, and lacks details on return values (e.g., comment structure, pagination). For a tool with 4 parameters and likely external dependencies, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters (urn, count, sort, timeout). The description adds no additional parameter semantics beyond the schema, such as explaining URN format constraints or sort behavior implications. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('LinkedIn comments for a post'), specifying it operates on posts identified by URN. It distinguishes from siblings like get_linkedin_post_reactions by focusing on comments rather than reactions, but doesn't explicitly contrast with get_linkedin_user_comments which might retrieve comments made by a user rather than on a post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention when to prefer this over get_linkedin_user_comments or how it relates to send_linkedin_post_comment. The description only states what it does, not the context for its application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_post_reactionsB
Get LinkedIn reactions for a post by URN
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Max reactions to return | |
| timeout | No | Timeout in seconds | |
| urn | Yes | Post URN, only activity urn type is allowed (example: activity:7234173400267538433) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action is to 'Get' reactions, implying a read-only operation, but does not disclose any behavioral traits such as rate limits, authentication needs, pagination, or what the return format looks like (e.g., list of reactions with details). For a tool with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized, with every part contributing to clarity, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral aspects, usage context, and return values. With no output schema, the description should ideally hint at the response format, but it does not, leaving gaps in completeness for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for 'count', 'timeout', and 'urn' parameters. The description adds no additional meaning beyond the schema, such as explaining URN format constraints or usage tips. Since schema coverage is high, the baseline score is 3, as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'LinkedIn reactions for a post by URN', specifying it retrieves reactions for a LinkedIn post using a URN. However, it does not distinguish this from sibling tools like 'get_linkedin_post_comments' or 'get_linkedin_user_reactions', which handle related but different data types, so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'get_linkedin_post_comments' for comments or 'get_linkedin_user_reactions' for user-specific reactions. It mentions the URN requirement but does not clarify usage context, exclusions, or prerequisites, leaving the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_post_repostsC
Get LinkedIn reposts for a post by URN
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Max reposts to return | |
| timeout | No | Timeout in seconds | |
| urn | Yes | Post URN, only activity urn type is allowed (example: activity:7234173400267538433) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions retrieving reposts but does not cover critical aspects like rate limits, authentication requirements, error handling, or the format of returned data. This leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral traits, return values, or usage context, which are essential for a tool that interacts with an external API like LinkedIn. This leaves the agent with insufficient information to use the tool effectively beyond basic parameter passing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are documented in the input schema. The description adds no additional semantic context beyond implying the 'urn' parameter specifies the post. Since the schema handles parameter details adequately, the baseline score of 3 is appropriate, as the description does not compensate or add value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get LinkedIn reposts') and the target resource ('for a post by URN'), making the purpose understandable. However, it does not explicitly differentiate from sibling tools like 'get_linkedin_post_reactions' or 'get_linkedin_post_comments', which also retrieve post-related data but for different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as other LinkedIn post-related tools (e.g., for reactions or comments). It lacks context about prerequisites, limitations, or scenarios where this tool is preferred, leaving usage decisions ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_profileB
Get detailed information about a LinkedIn user profile
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | User alias, URL, or URN | |
| with_education | No | Include education info | |
| with_experience | No | Include experience info | |
| with_skills | No | Include skills info |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't address important aspects like authentication requirements, rate limits, data freshness, privacy considerations, or what happens when a profile isn't found. For a tool accessing external platform data with no annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with no wasted words. It's appropriately sized for a tool with a clear primary function and doesn't bury important information in unnecessary verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data retrieval tool with 100% schema coverage, the description is minimally adequate. However, the lack of annotations means important behavioral context is missing, and without an output schema, there's no information about what the detailed profile data actually looks like. The description should ideally mention the scope of 'detailed information' or reference the parameter-controlled sections.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema - it mentions 'detailed information' but doesn't clarify what that includes or how parameters control it. With complete schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('detailed information about a LinkedIn user profile'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar sibling tools like 'get_linkedin_user_connections' or 'get_linkedin_user_posts', which also retrieve LinkedIn user data but focus on specific aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools that retrieve LinkedIn user data (e.g., get_linkedin_user_connections, get_linkedin_user_posts), there's no indication of when this comprehensive profile tool is preferred over more specific ones, nor any mention of prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_user_commentsC
Get LinkedIn comments for a user by URN (must include prefix, example: fsd_profile:ACoAA...)
| Name | Required | Description | Default |
|---|---|---|---|
| commented_after | No | Filter comments that created after the specified date. Accepts timestamp | |
| count | No | Max comments | |
| timeout | No | Timeout in seconds | |
| urn | Yes | User URN (must include prefix, example: fsd_profile:ACoAA...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the URN format requirement but fails to describe key behaviors such as pagination, rate limits, authentication needs, error handling, or the structure of returned comments. This leaves significant gaps for an agent to understand how the tool operates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and includes a helpful example. It avoids unnecessary words, though it could be slightly more structured by separating guidelines from the core statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain what the tool returns (e.g., comment objects, metadata), error conditions, or behavioral constraints like rate limits. For a tool with 4 parameters and no structured output, more contextual information is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all parameters. The description adds minimal value by reiterating the URN format example, which is already in the schema, and does not provide additional context like default behaviors or usage tips. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get LinkedIn comments') and resource ('for a user by URN'), providing a specific example of the required URN format. However, it does not explicitly differentiate this tool from sibling tools like 'get_linkedin_post_comments' or 'get_linkedin_user_posts', which reduces the score from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'get_linkedin_post_comments' for comments on a specific post or 'get_linkedin_user_posts' for user posts. It lacks context on prerequisites, exclusions, or comparisons with sibling tools, offering only basic parameter instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_user_connectionsC
Get list of LinkedIn user connections. Account ID is taken from environment.
| Name | Required | Description | Default |
|---|---|---|---|
| connected_after | No | Filter users that added after the specified date (timestamp) | |
| count | No | Max connections to return | |
| timeout | No | Timeout in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions that 'Account ID is taken from environment', which adds useful context about authentication. However, it lacks critical details: no information on rate limits, pagination (beyond the 'count' parameter), error handling, or what the returned list contains (e.g., fields like names, IDs). For a read operation with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two concise sentences. The first sentence states the core purpose, and the second adds authentication context. There's no wasted verbiage, and it's front-loaded with the main functionality. A minor deduction because the authentication note could be more integrated, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool that retrieves social media connections. It lacks details on return format (e.g., structure of connection objects), error cases, or usage limits. The authentication hint is helpful but doesn't compensate for missing behavioral and output context, making it inadequate for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema. According to scoring rules, when coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('list of LinkedIn user connections'), making the purpose unambiguous. It distinguishes from siblings by focusing specifically on user connections rather than posts, comments, or other LinkedIn entities. However, it doesn't explicitly differentiate from 'get_linkedin_profile' which might also retrieve user data, leaving minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'search_linkedin_users' or 'get_linkedin_profile'. It mentions that 'Account ID is taken from environment', which hints at authentication context but doesn't clarify prerequisites or exclusions. No explicit when/when-not instructions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_user_postsC
Get LinkedIn posts for a user by URN (must include prefix, example: fsd_profile:ACoAAEWn01QBWENVMWqyM3BHfa1A-xsvxjdaXsY)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Max posts | |
| timeout | No | Timeout in seconds | |
| urn | Yes | User URN (must include prefix, example: fsd_profile:ACoAA...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the URN format requirement, which adds some context, but fails to describe key traits like whether this is a read-only operation, potential rate limits, authentication requirements, or what the output looks like (e.g., list of posts with fields). For a tool with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It includes a necessary example for the URN parameter, which adds clarity without verbosity. There's no wasted text, making it appropriately sized for its function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (retrieving user posts from LinkedIn) and lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication, rate limits, or output format, which are crucial for an agent to use it correctly. The high schema coverage helps with parameters, but overall context is insufficient for a tool with no structured safety or output information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (urn, count, timeout) with descriptions. The description adds minimal value by reiterating the URN format example from the schema, but doesn't provide additional semantics like why the prefix is needed or how count/timeout affect performance. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get LinkedIn posts') and target ('for a user by URN'), providing a specific verb and resource. It distinguishes from siblings like 'get_linkedin_post_comments' or 'search_linkedin_posts' by focusing on user-specific posts rather than comments or search results. However, it doesn't explicitly differentiate from 'get_linkedin_profile' which might also retrieve user data, making it a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'search_linkedin_posts' for broader searches or 'get_linkedin_profile' for user metadata. There's no context about prerequisites, such as authentication needs or rate limits, leaving the agent with minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkedin_user_reactionsC
Get LinkedIn reactions for a user by URN (must include prefix, example: fsd_profile:ACoAA...)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Max reactions | |
| timeout | No | Timeout in seconds | |
| urn | Yes | User URN (must include prefix, example: fsd_profile:ACoAA...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states what the tool does and the URN format, lacking details on permissions needed, rate limits, error handling, response format, or whether it's a read-only operation (implied by 'Get' but not explicit). For a tool with potential API constraints, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and includes a critical example for the URN. There is no wasted verbiage, and it directly addresses the essential information needed to invoke the tool, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool with three parameters and no behavioral context. It doesn't explain what 'reactions' entail (e.g., types, data structure), how results are returned, or any operational constraints. For a social media data tool, this leaves significant gaps in understanding its full context and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents parameters (urn, count, timeout). The description adds minimal value by reiterating the URN format example from the schema but doesn't provide additional context like URN sourcing, count/timeout implications, or default behaviors. This meets the baseline for high schema coverage without enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get LinkedIn reactions for a user by URN'. It specifies the verb ('Get'), resource ('LinkedIn reactions'), and target ('user by URN'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_linkedin_post_reactions', which targets posts rather than users, though this distinction is implied by the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions the URN requirement but doesn't clarify scenarios for choosing this over other LinkedIn tools (e.g., 'get_linkedin_user_posts' or 'get_linkedin_post_reactions'), prerequisites like authentication, or limitations such as data availability. This leaves the agent without contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_searchC
Search for information using Google search API
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Maximum number of results (from 1 to 20) | |
| query | Yes | Search query. For example: 'python fastapi' | |
| timeout | No | Timeout in seconds (20-1500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a search operation but doesn't mention any behavioral traits such as rate limits, authentication needs, response format, or potential errors. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without any unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like rate limits or response structure, which are crucial for a search tool. The schema covers parameters well, but overall context is insufficient for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters (query, count, timeout). The description doesn't add any meaning beyond what the schema provides, such as search syntax tips or result formatting, which keeps it at the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search') and resource ('information using Google search API'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools, which are all for different platforms (Instagram, LinkedIn, Reddit) rather than alternative search tools, so the distinction is inherent but not explicitly stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context-specific scenarios, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_sn_search_usersC
Advanced search for LinkedIn users using Sales Navigator filters
| Name | Required | Description | Default |
|---|---|---|---|
| company_locations | No | Company location URN (geo:*) or name, or array of them | |
| company_sizes | No | Company size ranges | |
| company_types | No | Company types | |
| count | Yes | Maximum number of results (max 2500) | |
| current_companies | No | Current company URN (company:*) or name, or array of them | |
| current_titles | No | Exact words to search in current titles | |
| education | No | Education URN (company:*) or name, or array of them | |
| first_names | No | Exact first names to search for | |
| functions | No | Job functions | |
| industry | No | Industry URN (industry:*) or name, or array of them | |
| keywords | No | Any keyword for searching in the user profile. Using this may reduce result count. | |
| languages | No | Profile languages | |
| last_names | No | Exact last names to search for | |
| levels | No | Job seniority levels | |
| location | No | Location URN (geo:*) or name, or array of them | |
| past_companies | No | Past company URN (company:*) or name, or array of them | |
| past_titles | No | Exact words to search in past titles | |
| timeout | No | Timeout in seconds (20-1500) | |
| years_in_the_current_company | No | Years in current company ranges | |
| years_in_the_current_position | No | Years in current position ranges |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'advanced search' but doesn't describe what that means operationally - no information about rate limits, authentication requirements, result format, pagination, or performance characteristics. The description doesn't explain what 'Sales Navigator filters' means in practice or how results differ from regular LinkedIn searches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core functionality without unnecessary words. It's appropriately sized for a tool with comprehensive schema documentation and gets straight to the point about what makes this search 'advanced' (Sales Navigator filters).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex search tool with 20 parameters and no annotations or output schema, the description is inadequate. It doesn't explain what the tool returns, how results are structured, or any behavioral aspects. While the schema covers parameters well, the description fails to provide the contextual understanding needed for effective tool selection and use, especially given the absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 20 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema. It mentions 'Sales Navigator filters' which hints at the parameter categories, but provides no additional syntax, format, or usage guidance beyond the comprehensive schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('search') and resource ('LinkedIn users') with the specific context of 'using Sales Navigator filters'. It distinguishes from generic LinkedIn user tools by specifying the advanced Sales Navigator filtering capability. However, it doesn't explicitly differentiate from 'search_linkedin_users' sibling tool, which appears to be a more general search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling 'search_linkedin_users' tool or explain when Sales Navigator filters are appropriate versus basic LinkedIn searches. There's no discussion of prerequisites, limitations, or typical use cases for this advanced search functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_linkedin_postsC
Search for LinkedIn posts with various filters like keywords, content type, authors, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| author_industries | No | Industry URN, can be obtained in /linkedin/search/industries. Or industry name. | |
| author_title | No | Author job title. | |
| authors | No | Authors URN of posts | |
| content_type | No | Desired content type | |
| count | Yes | Max result count | |
| date_posted | No | Date posted | past-month |
| keywords | No | Any keyword for searching in the post. For exact search put desired keywords into brackets | |
| mentioned | No | Mentioned users URN in posts | |
| sort | No | Sort type | relevance |
| timeout | No | Max scrapping execution timeout (in seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'various filters' but doesn't describe important behavioral aspects: whether this is a read-only operation, what happens when no results are found, whether results are paginated, rate limits, authentication requirements, or what the output format looks like. The description is too minimal for a search tool with 10 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point. It's appropriately sized for a search tool, though it could potentially benefit from a bit more context given the complexity of the parameters. There's no wasted language or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 10 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (post objects, metadata, error conditions), doesn't mention performance characteristics or limitations, and provides no context about how the search actually works (API calls, scraping, etc.). The 'timeout' parameter suggests scraping behavior that isn't mentioned in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 10 parameters thoroughly. The description adds minimal value beyond the schema by mentioning 'various filters like keywords, content type, authors, etc.' but doesn't provide additional context about parameter interactions, default behaviors, or practical usage examples. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for LinkedIn posts with various filters'. It specifies the resource (LinkedIn posts) and action (search with filters), making the verb+resource combination explicit. However, it doesn't distinguish this tool from sibling tools like 'search_linkedin_users' or 'search_reddit_posts' beyond mentioning 'LinkedIn posts'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this search tool should be preferred over 'get_linkedin_user_posts' (which retrieves posts from specific users) or 'search_reddit_posts' (which searches a different platform). There's no context about use cases, prerequisites, or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_linkedin_usersC
Search for LinkedIn users with various filters like keywords, name, title, company, location etc.
| Name | Required | Description | Default |
|---|---|---|---|
| company_keywords | No | Exact word in the company name | |
| count | Yes | Maximum number of results (max 1000) | |
| current_company | No | Company URN or name | |
| education | No | Education URN or name | |
| first_name | No | Exact first name | |
| industry | No | Industry URN or name | |
| keywords | No | Any keyword for searching in the user page. | |
| last_name | No | Exact last name | |
| location | No | Location name or URN | |
| past_company | No | Past company URN or name | |
| school_keywords | No | Exact word in the school name | |
| timeout | No | Timeout in seconds (20-1500) | |
| title | No | Exact word in the title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'various filters' but doesn't describe important behavioral aspects: whether this is a read-only operation, what permissions are required, rate limits, pagination behavior, or what the return format looks like. For a search tool with 13 parameters, this is insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point. It's appropriately sized for a search tool, though it could potentially be more front-loaded with critical information about the tool's scope and limitations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex search tool with 13 parameters and no output schema, the description is incomplete. It doesn't explain what results look like, how filters interact, whether all filters are optional, or any limitations beyond what's implied. With no annotations and no output schema, users need more context about the tool's behavior and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 13 parameters thoroughly. The description adds minimal value beyond the schema by listing some filter types ('keywords, name, title, company, location etc.'), but doesn't provide additional semantic context about how filters combine or their relative importance. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for LinkedIn users with various filters'. It specifies the resource (LinkedIn users) and action (search with filters). However, it doesn't explicitly differentiate from sibling tools like 'linkedin_sn_search_users' or 'get_linkedin_company_employees', which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple LinkedIn-related search tools in the sibling list (like 'linkedin_sn_search_users', 'search_linkedin_posts', 'get_linkedin_company_employees'), there's no indication of when this specific user search tool is appropriate versus other search or retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_reddit_postsC
Search for Reddit posts with various filters
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Max result count | |
| query | Yes | Main search query | |
| sort | No | Type of search results sorting | relevance |
| time_filter | No | Time filter for search results | all |
| timeout | No | Max scrapping execution timeout (in seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only mentions 'various filters' without detailing behavioral traits like rate limits, authentication needs, or potential side effects (e.g., scraping implications from the 'timeout' parameter). This leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 5 parameters, no annotations, and no output schema, the description is inadequate. It lacks details on return values, error handling, or operational constraints (e.g., the 'timeout' hinting at scraping), leaving the agent with incomplete context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so parameters are well-documented in the schema. The description adds minimal value by mentioning 'various filters' but doesn't elaborate on parameter meanings beyond what the schema provides, aligning with the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('search') and resource ('Reddit posts'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'search_linkedin_posts' or 'google_search' beyond mentioning Reddit specifically, which is why it doesn't reach a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'google_search' or other search tools in the sibling list. It mentions 'various filters' but doesn't specify contexts or exclusions, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_linkedin_chat_messageC
Send a chat message via LinkedIn management API. Account ID is taken from environment.
| Name | Required | Description | Default |
|---|---|---|---|
| company | No | Company URN where the account is admin (format: company:123456) | |
| text | Yes | Message text | |
| timeout | No | Timeout in seconds | |
| user | Yes | Recipient user URN (must include prefix, e.g. fsd_profile:ACoAA...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the Account ID source but lacks critical details such as rate limits, error handling, whether the message is sent immediately or queued, or what happens on failure. For a mutation tool (sending messages) with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words, but it could be slightly more structured by separating the authentication note into a second sentence for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool (sending messages) with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits (e.g., success/failure responses, side effects), and while the schema covers parameters well, the overall context for safe and effective use is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema already documents all four parameters thoroughly. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't explain parameter interactions or provide examples). This meets the baseline of 3 when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('send a chat message') and the target platform ('via LinkedIn management API'), which provides a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'send_linkedin_connection' or 'send_linkedin_post', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that 'Account ID is taken from environment,' which provides some context about authentication, but it doesn't offer guidance on when to use this tool versus alternatives (e.g., 'send_linkedin_connection' or 'send_linkedin_post'), nor does it specify prerequisites or exclusions. This leaves the agent with minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_linkedin_connectionC
Send a connection invitation to LinkedIn user. Account ID is taken from environment.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Timeout in seconds | |
| user | Yes | Recipient user URN (must include prefix, e.g. fsd_profile:ACoAA...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the action 'send' implying a write operation but lacks details on permissions, rate limits, confirmation of success, or potential side effects (e.g., LinkedIn's invitation limits). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words, though it could be slightly more structured by separating authentication details from the action. Overall, it's appropriately sized with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a mutation (sending an invitation) with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., success criteria, error handling), output expectations, and detailed usage context, making it inadequate for safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('user' and 'timeout'). The description adds no additional parameter semantics beyond what's in the schema, such as format examples for 'user' beyond the schema's note or context for 'timeout' usage. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Send a connection invitation') and target resource ('LinkedIn user'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'send_linkedin_chat_message' or 'send_linkedin_post' beyond the resource type, missing explicit distinction in the action context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance by noting that 'Account ID is taken from environment,' which hints at authentication but doesn't specify when to use this tool versus alternatives like 'get_linkedin_user_connections' for viewing connections or 'send_linkedin_chat_message' for messaging. No explicit when/when-not or alternative recommendations are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_linkedin_postC
Create a post on LinkedIn. Account ID is taken from environment.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_scope | No | Who can comment on the post | ALL |
| text | Yes | Post text content | |
| timeout | No | Timeout in seconds | |
| visibility | No | Post visibility | ANYONE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Account ID is taken from environment,' which adds some authentication context, but fails to cover critical traits like whether this is a destructive write operation, potential rate limits, error handling, or what happens on success (e.g., returns a post ID). For a mutation tool with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just two short sentences that are front-loaded with the core purpose. Every word serves a purpose, with no wasted text or redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., side effects, error cases), return values, and differentiation from sibling tools. The minimal content doesn't compensate for the missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters (text, comment_scope, visibility, timeout). The description adds no parameter-specific information beyond what's in the schema, such as examples or constraints. Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a post') and target resource ('on LinkedIn'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'send_linkedin_chat_message' or 'send_linkedin_post_comment', which are also LinkedIn posting tools but for different content types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance with 'Account ID is taken from environment,' which hints at authentication context but doesn't explain when to use this tool versus alternatives. No explicit when/when-not instructions or comparisons to sibling posting tools (e.g., chat messages, comments) are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_linkedin_post_commentB
Create a comment on a LinkedIn post or on another comment. Account ID is taken from environment.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Comment text | |
| timeout | No | Timeout in seconds | |
| urn | Yes | URN of the activity or comment to comment on (e.g., 'activity:123' or 'comment:(activity:123,456)') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that 'Account ID is taken from the environment', which adds some context about authentication. However, it lacks details on permissions, rate limits, error handling, or what happens after creation (e.g., response format). For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. Both sentences earn their place: the first defines the action and target, and the second clarifies authentication. There is no wasted text, though it could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., side effects, error cases), usage guidelines, and return values. The authentication note helps but does not compensate for the overall gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (text, timeout, urn). The description adds no additional meaning beyond what the schema provides, such as explaining URN formats or timeout implications. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a comment') and the target resources ('on a LinkedIn post or on another comment'), distinguishing it from sibling tools like send_linkedin_post (which creates posts) or send_linkedin_chat_message (which sends messages). It also specifies that the Account ID is taken from the environment, adding operational context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when to comment on a post versus a comment, nor does it differentiate from other LinkedIn interaction tools like send_linkedin_post or send_linkedin_chat_message. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes targeting specific platforms (Instagram, LinkedIn, Google, Reddit) and actions (get, search, send). However, there is some overlap between get_linkedin_profile and get_linkedin_email_user, as both retrieve LinkedIn user details, which could cause minor confusion. Overall, the tool boundaries are clear with minimal ambiguity.
Tool names follow a highly consistent verb_noun pattern throughout, such as get_instagram_user, search_linkedin_posts, and send_linkedin_chat_message. All tools use snake_case with clear action prefixes (get, search, send), making them predictable and easy to understand. There are no deviations in naming conventions.
With 26 tools, the count is borderline high for a social media data and interaction server, leaning towards heavy. While it covers multiple platforms and actions, the number may feel overwhelming for an agent to navigate efficiently. A more focused set could improve usability without sacrificing functionality.
The tool set provides comprehensive coverage for LinkedIn operations, including CRUD-like actions (get, search, send) for profiles, posts, comments, and messages, with minor gaps such as updating or deleting LinkedIn content. Instagram and Reddit tools are more limited (only get/search), but the server's primary focus on LinkedIn is well-covered for core workflows.
Maintenance
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Hosted MCP server for LinkedIn: 31 tools for profiles, search, messaging, posts, enrichment.
LinkedIn API as MCP tools to retrieve profile data and publish content. Powered by HAPI MCP.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables seamless interaction with LinkedIn for job applications, profile retrieval, feed browsing, and resume analysis through natural language commands.31
- AlicenseAqualityDmaintenanceAn unofficial Model Context Protocol server that enables programmatic access to LinkedIn data through tools like user search, company search, profile enrichment, and contact retrieval.7203ISC
- FlicenseNot gradedqualityDmaintenanceA comprehensive Model Context Protocol server that enables AI assistants to interact with LinkedIn APIs for profile management, content creation, networking, messaging, and analytics.2
- AlicenseAqualityFmaintenanceAn unofficial Model Context Protocol server that provides LinkedIn tools for searching users, enriching profiles, retrieving contact information, and conducting deep research through natural language interfaces.5135MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/anysiteio/anysite-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server