@extenshi/mcp
Version:
Extenshi MCP server — bring the extension catalog (search, security, market research) and pre-publish scanning into your AI tools
73 lines • 2.81 kB
TypeScript
/**
* Body of the free `generate_landing_page` MCP tool.
*
* Pure function of its arguments — no API key, no network, no credits — so it
* is registered under the `docs` capability and works on both the local stdio
* server and the hosted connector. The HTML comes from ./landing-page.ts, a
* synced copy of shared-types/landing-page.ts: the page an agent generates here
* is byte-for-byte what the cabinet Page generator downloads for the same form.
*
* This tool does not host the page (publish_landing_page does, on
* page.extenshi.io). The returned `nextSteps` describe hosting it on any HTTPS
* origin and registering the URL with `upsert_hosted_page`, which is what feeds
* HOMEPAGE_URL in the generated integration config.
*/
import { type LandingForm } from './landing-page.js';
import { type LandingProblem } from './landing-sections.js';
export interface LandingPageArgs {
extensionName: string;
tagline?: string;
description?: string;
accentColor?: string;
theme?: 'light' | 'dark';
chromeUrl?: string;
firefoxUrl?: string;
edgeUrl?: string;
privacyPolicyUrl?: string;
supportUrl?: string;
homepageUrl?: string;
features?: {
title: string;
description?: string;
}[];
screenshots?: {
url: string;
alt?: string;
}[];
logoSvg?: string;
logoUrl?: string;
schemaVersion?: 2;
sections?: Record<string, unknown>[];
tokens?: Record<string, unknown>;
seo?: Record<string, unknown>;
defaultLocale?: string;
locales?: Record<string, Record<string, unknown>>;
ui?: Record<string, string>;
uninstallUrl?: string;
termsUrl?: string;
}
export interface GeneratedLandingPage {
html: string;
bytes: number;
warnings: string[];
/** Schema v2: every problem with its path and fix (errors mean a hosted publish would refuse it). */
problems?: LandingProblem[];
/** Schema v2 with locales: the other locales' pages and where to save them. */
localePages?: {
locale: string;
path: string;
html: string;
}[];
nextSteps: string[];
}
export declare function landingFormFromArgs(args: LandingPageArgs): LandingForm;
export declare function landingNextSteps(homepageUrl?: string): string[];
export declare function renderGenerateLandingPage(args: LandingPageArgs): GeneratedLandingPage;
/**
* Follow-ups after publish_landing_page, from the fields the BFF returned.
* "Live" is said only when the server fetched the public URL and got the
* published bytes back (`live.status: verified`); a BFF without the check
* (older deploy) is reported as unverified, never as live.
*/
export declare function hostedLandingNextSteps(result: Record<string, unknown>): string[];
//# sourceMappingURL=landing-workflow.d.ts.map