ToolYourToolYourAPI Docs

SDK vs MCP Workflows

When to use @toolyour/sdk single-tool calls vs MCP skills and run_workflow jobs. Same API key and quota.

ToolYour exposes one catalog with three surfaces: browser, REST, and MCP. The @toolyour/sdk package wraps every API-backed tool as typed TypeScript. MCP adds agent-oriented layers on top: curated skills (playbooks) and workflows (multi-step jobs with merged jobReport).

SurfaceWhat you getBest for
SDKty.seo.metaTagsAnalyzer({ url }) — one tool, one responseNode/TS apps, CI scripts, explicit control
RESTSame routes as SDK — any HTTP clientNon-Node stacks, curl, OpenAPI playground
MCP skillsload_skill("seo-site-audit") → markdown playbookCursor, Claude Desktop, agents that need guidance
MCP workflowsrun_workflow("full-seo-audit", { url }) → merged jobReportMulti-tool audits without orchestrating each call

Browser-only tools (no API) are not in the SDK or MCP tool list — use toolyour.com in the browser.

Decision guide

Need exactly one known tool with typed input/output?
  → SDK (or REST). See SDK Tool Map for purpose + example call.

Building an agent in Cursor / Claude with playbooks?
  → MCP: list_skills → load_skill → invoke_tool (or solve_task).

Want a pre-built multi-step audit with one merged report?
  → MCP: run_workflow. Replicate manually in SDK by calling each step yourself.

Quota: Every underlying tool call counts once — whether you use SDK, REST, MCP invoke_tool, or workflow steps.

MCP skills (playbooks)

Skills are markdown resources agents load once per session. They describe which tools to call, in what order, and how to summarize results. They do not replace the SDK — they guide agents that speak MCP.

list_skills() → load_skill("seo-site-audit") → invoke_tool("seoAnalyze", { url })
Skill IDPurposeTypical SDK alternative
seo-site-auditOn-page SEO audit for a URLty.seo.seoAnalyze, ty.seo.pageSpeedAnalyzer
page-performanceCore Web Vitals proxy + fixesty.seo.pageSpeedAnalyzer (+ workflow below)
content-refreshRefresh outdated page copyty.ai.aiTextAi, ty.seo.contentOptimization
content-qualityContent depth / readabilityty.seo.contentOptimization, ty.seo.rankCheckerKeywords
document-pipelineDOCX → PDF with download URLty.documents.docxToPdf({ file })
social-previewOpen Graph / Twitter Card auditty.seo.socialMediaIntegration({ url })
crawl-analysisLink graph / internal linkingty.seo.internalLinking, ty.seo.linkExtractor
seo-deploy-regressionPost-deploy bulk URL scorecardty.seo.bulkUrlSeoAuditor, ty.seo.seoChangeDiff
web-security-auditHeaders, TLS, cookies, email authty.security.* analyzers per URL
secrets-and-auth-hygieneLeaked secrets, JWT, passwords, HMACty.security.secretLeakScanner, ty.security.jwtDecoder, …
developer-ship-checklistPre-deploy security + speed gateMultiple ty.security.* + ty.seo.pageSpeedAnalyzer
dns-email-securitySPF/DKIM/DMARC, DNS, security.txtty.security.spfDkimDmarcChecker, ty.security.dnsLookup

Full skill reference: MCP Skills & Workflows.

SDK metadata for skills

The SDK exports read-only skill metadata (for docs generators and agent bootstrapping):

import { MCP_SKILLS } from "@toolyour/sdk/mcp";

console.log(MCP_SKILLS.find((s) => s.id === "seo-site-audit")?.description);
// → related operationIds for manual SDK orchestration

Skills are not callable SDK methods — use MCP load_skill or implement the playbook with SDK tool calls.

MCP workflows (multi-step jobs)

run_workflow(workflowId, input) runs several API tools server-side and returns a merged jobReport when a synthesizer is configured. Steps bill one request each, same as calling the SDK for each tool separately.

run_workflow("full-seo-audit", { url: "https://example.com" })
Workflow IDPurposeUnderlying tools (SDK equivalents)
full-seo-auditSEO + page speed merged reportseoAnalyze, pageSpeedAnalyzer
core-web-vitals-jobCWV diagnosis + prioritized fixespageSpeedAnalyzer, seoAnalyze, socialMediaIntegration
full-seo-optimization-jobFull SEO optimization (6 tools)SEO, content, speed, links, extract, social
internal-link-architecture-jobInternal link graph + hub SEOinternalLinking, linkExtractor, seoAnalyze
technical-seo-audit-jobTechnical SEO liteseoAnalyze, linkExtractor, pageSpeedAnalyzer
social-preview-audit-jobOG / Twitter Card auditsocialMediaIntegration
content-quality-audit-jobContent + keyword signalscontentOptimization, rankCheckerKeywords
keyword-opportunity-review-jobKeyword gaps + contentrankCheckerKeywords, contentOptimization
seo-deploy-regression-jobPost-deploy bulk URL scorecardbulkUrlSeoAuditor
seo-deploy-regression-diff-jobBulk scorecard + staging/prod diffbulkUrlSeoAuditor, seoChangeDiff
full-security-auditHeaders + TLS + cookiessecurityHeadersAnalyzer, sslTlsCertificateChecker, cookieSecurityAnalyzer
security-headers-jobSecurity headers onlysecurityHeadersAnalyzer
developer-ship-checklist-jobPre-deploy ship gateheaders, TLS, mixed content, status, speed
secrets-hygiene-jobScan pasted text for secretssecretLeakScanner
email-auth-security-jobSPF/DKIM/DMARC + DNS + security.txtspfDkimDmarcChecker, dnsLookup, securityTxtChecker
content-optimizationSingle content optimization passcontentOptimization
document-convert-pipelineDOCX → PDF pipelinedocxToPdf

Workflows with a synthesizer return jobReport (toolyour.jobReport@1) — scores, findings, and prioritized actions. Partial failures may return status: "partial" with failedStep.

Replicating a workflow in the SDK

There is no ty.workflows.run() in the SDK today. To match a workflow in TypeScript:

import { ToolYour } from "@toolyour/sdk";

const ty = ToolYour({ apiKey: process.env.TOOLYOUR_API_KEY! });

const url = "https://example.com";
const [seo, speed] = await Promise.all([
  ty.seo.seoAnalyze({ url }),
  ty.seo.pageSpeedAnalyzer({ url }),
]);
// Merge seo.result + speed.result in your app (workflow synthesizer logic is MCP-only)

For production agents, prefer MCP run_workflow when you want the platform merge logic. Prefer the SDK when you need custom orchestration, caching, or non-MCP runtimes.

SDK metadata for workflows

import { MCP_WORKFLOWS } from "@toolyour/sdk/mcp";

const wf = MCP_WORKFLOWS.find((w) => w.id === "full-seo-audit");
console.log(wf?.steps.map((s) => s.operationId));
// → ["seoAnalyze", "pageSpeedAnalyzer"]

MCP helpers in the SDK

Generate Cursor/Claude MCP config and call tools by MCP name via the REST shim (same quota):

import {
  toolYourMcpServerConfigJson,
  invokeMcpTool,
  MCP_WORKFLOWS,
} from "@toolyour/sdk/mcp";

console.log(toolYourMcpServerConfigJson({ apiKey: process.env.TOOLYOUR_API_KEY! }));

await invokeMcpTool("metaTagsAnalyzer", { url: "https://example.com" }, {
  apiKey: process.env.TOOLYOUR_API_KEY!,
});

invokeMcpTool maps to the same REST routes as ty.seo.metaTagsAnalyzer. It does not expose load_skill or run_workflow — connect an MCP client for those.

Example agent prompt

Load the SEO site audit skill, analyze https://example.com, and summarize the top 5 fixes.

Expected MCP sequence: load_skill("seo-site-audit")invoke_tool("seoAnalyze", …) → optional pageSpeedAnalyzer.

Equivalent SDK script: call ty.seo.seoAnalyze and ty.seo.pageSpeedAnalyzer directly — see SDK Tool Map for example calls per tool.

Next steps

On this page