@brandazine/solari-sdk 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/tools.generated.d.ts +56 -10
- package/dist/tools.generated.js +2 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { SolariToolMap, SolariToolName, SolariTools, SolariToolsWithoutRequ
|
|
|
2
2
|
export * from "./tools.generated.js";
|
|
3
3
|
export declare const DEFAULT_BASE_URL = "https://solari.sh";
|
|
4
4
|
export declare const API_PREFIX = "/mcp/api/v1";
|
|
5
|
-
export declare const SDK_VERSION = "0.2.
|
|
5
|
+
export declare const SDK_VERSION = "0.2.7";
|
|
6
6
|
export declare const TOKEN_ENV = "SOLARI_TOKEN";
|
|
7
7
|
export interface SolariTool {
|
|
8
8
|
name: string;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from "./tools.generated.js";
|
|
2
2
|
export const DEFAULT_BASE_URL = "https://solari.sh";
|
|
3
3
|
export const API_PREFIX = "/mcp/api/v1";
|
|
4
|
-
export const SDK_VERSION = "0.2.
|
|
4
|
+
export const SDK_VERSION = "0.2.7";
|
|
5
5
|
export const TOKEN_ENV = "SOLARI_TOKEN";
|
|
6
6
|
const DEFAULT_TIMEOUT_MS = 150_000;
|
|
7
7
|
export class SolariError extends Error {
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Recorded profile values of one collected Instagram account over time, for follower growth and trend comparisons. points lists follower_count, following_count, post_count, is_verified, and is_private, oldest first, each with captured_at: the moment the catalog collected those values. current holds the catalog's current values, and current.collected_at says when the profile was last collected from Instagram; check it before treating the numbers as today's. granularity=day (default) keeps the last point of each UTC day; all returns every recorded point. The range is since/until (UTC dates, inclusive) and defaults to the last 90 days; truncated=true means older points were dropped, so narrow since. Points exist only when the account was collected, so gaps are normal, and most accounts have no points between late August 2025 and late September 2026. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username. This reads the catalog only; found=false means the handle is not in the catalog — call solari_fetch_instagram_account first, which cannot backfill past values. Works with any signed-in SOLARI account. */
|
|
2
|
+
export interface CatalogInstagramAccountHistoryArgs {
|
|
3
|
+
/** account_id of the account (SOLARI account UUID). Provide this or username. */
|
|
4
|
+
"account_id"?: string | undefined;
|
|
5
|
+
/** Instagram handle, with or without a leading @. Ignored when account_id is set. */
|
|
6
|
+
"username"?: string | undefined;
|
|
7
|
+
/** First UTC date to include, YYYY-MM-DD inclusive. Default 90 days before until. */
|
|
8
|
+
"since"?: string | undefined;
|
|
9
|
+
/** Last UTC date to include, YYYY-MM-DD inclusive. Default today. */
|
|
10
|
+
"until"?: string | undefined;
|
|
11
|
+
/** day keeps the last point of each UTC day; all returns every recorded point. */
|
|
12
|
+
"granularity"?: "day" | "all" | undefined;
|
|
13
|
+
}
|
|
14
|
+
/** Posts by one collected Instagram account, newest first, with pagination and filters. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). Each item has post_id (SOLARI post UUID), slug and url (public Instagram permalink), post_type (reel, video, photo, or carousel), posted_at, caption text, like/comment/play counts, media_count, is_paid_partnership, a medias array (every media of the post in carousel order, each with media_type, media/thumbnail URLs, video_duration, and tags — accounts and hashtags tagged on that media, with account_id when the tagged account is tracked), and a representative thumbnail_url. The response carries found, account_id, username, total, has_more, and items; page with limit and offset, narrow with since/until (UTC dates, inclusive) and post_type. posts_collected_at is how far the stored posts reach, stored_post_count against profile_post_count shows whether collection is incomplete, and refreshes_regularly says whether the account is re-collected on a schedule; when the requested dates run past posts_collected_at, note explains that later posts are not in the catalog yet — an empty result then does not mean the account posted nothing, so call solari_fetch_instagram_posts to re-collect it. This reads the catalog only; found=false means the handle is not in the catalog (note says when Instagram no longer has it) — call solari_fetch_instagram_posts with that username first. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
2
15
|
export interface CatalogInstagramAccountPostsArgs {
|
|
3
16
|
/** account_id of the account (SOLARI account UUID). Provide this or username. */
|
|
4
17
|
"account_id"?: string | undefined;
|
|
@@ -15,7 +28,7 @@ export interface CatalogInstagramAccountPostsArgs {
|
|
|
15
28
|
/** Only posts of this format. reel is short-form single-video; video is non-reel video. */
|
|
16
29
|
"post_type"?: "reel" | "video" | "photo" | "carousel" | undefined;
|
|
17
30
|
}
|
|
18
|
-
/** Full SOLARI catalog profile for one collected Instagram account: username, full name, bio, follower/following/post counts, verified flag, inferred account_type, view metrics (median and total views, ad count, month-over-month growth, region percentiles), plus embedded previews of recent posts and recent ad collaborations. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). This reads the catalog only; an unknown handle is not-found — call solari_fetch_instagram_account with that username first, then retry. Works with any signed-in SOLARI account. */
|
|
31
|
+
/** Full SOLARI catalog profile for one collected Instagram account: username, full name, bio, follower/following/post counts, verified flag, inferred account_type, view metrics (median and total views, ad count, month-over-month growth, region percentiles), plus embedded previews of recent posts and recent ad collaborations. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). collected_at is when the profile was last collected from Instagram and refreshes_regularly says whether it is re-collected on a schedule. This reads the catalog only; an unknown handle is not-found — call solari_fetch_instagram_account with that username first, then retry; a not-found that says the handle was renamed or deleted means Instagram has no account under that name, so search by display name instead. Works with any signed-in SOLARI account. */
|
|
19
32
|
export interface CatalogInstagramAccountProfileArgs {
|
|
20
33
|
/** account_id of the account (SOLARI account UUID). Provide this or username. */
|
|
21
34
|
"account_id"?: string | undefined;
|
|
@@ -51,6 +64,31 @@ export interface CatalogInstagramContentDetailArgs {
|
|
|
51
64
|
/** Public Instagram post URL such as https://www.instagram.com/p/<shortcode>/ or .../reel/<shortcode>/. Ignored when post_id or slug is set. */
|
|
52
65
|
"url"?: string | undefined;
|
|
53
66
|
}
|
|
67
|
+
/** Recorded engagement of Instagram posts over time, for growth curves and engagement comparisons. Each item is one post (post_id, slug, url, posted_at, account_id, username) with points: like_count, comment_count, play_count, reshare_count, likes_hidden, and deleted, oldest first, each with captured_at: the moment the catalog collected those values. Choose posts with post_ids, slugs, or urls (up to 50 combined; missing lists the ones not in the catalog — collect them with solari_fetch_instagram_post), or give an account (account_id or username) to trace its newest posts, narrowed by posted_since/posted_until and limit (default 20, max 50). since/until narrow the recorded points (UTC dates, inclusive). granularity=day (default) keeps the last point of each UTC day per post; all returns every point; truncated=true means older points were dropped. Posts are re-collected mostly in their first days, so older posts have few points. likes_hidden=true means the author hid like and view counts, but like_count is usually still present, so do not drop those posts from comparisons. This reads the catalog only. Works with any signed-in SOLARI account. */
|
|
68
|
+
export interface CatalogInstagramContentHistoryArgs {
|
|
69
|
+
/** SOLARI post UUIDs. Combine with slugs and urls, up to 50 posts in total. */
|
|
70
|
+
"post_ids"?: Array<string> | undefined;
|
|
71
|
+
/** Public Instagram shortcodes, the segment after /p/, /reel/, or /tv/ in a post URL. */
|
|
72
|
+
"slugs"?: Array<string> | undefined;
|
|
73
|
+
/** Public Instagram post URLs such as https://www.instagram.com/p/<shortcode>/. */
|
|
74
|
+
"urls"?: Array<string> | undefined;
|
|
75
|
+
/** Trace this account's newest posts instead of listing posts. SOLARI account UUID. */
|
|
76
|
+
"account_id"?: string | undefined;
|
|
77
|
+
/** Trace this handle's newest posts instead of listing posts. Ignored when account_id is set. */
|
|
78
|
+
"username"?: string | undefined;
|
|
79
|
+
/** Account mode: only posts published on or after this UTC date, YYYY-MM-DD. */
|
|
80
|
+
"posted_since"?: string | undefined;
|
|
81
|
+
/** Account mode: only posts published on or before this UTC date, YYYY-MM-DD. */
|
|
82
|
+
"posted_until"?: string | undefined;
|
|
83
|
+
/** Account mode: newest posts to trace, default 20. Values above 50 are clamped to 50. */
|
|
84
|
+
"limit"?: number | undefined;
|
|
85
|
+
/** Only points recorded on or after this UTC date, YYYY-MM-DD inclusive. */
|
|
86
|
+
"since"?: string | undefined;
|
|
87
|
+
/** Only points recorded on or before this UTC date, YYYY-MM-DD inclusive. */
|
|
88
|
+
"until"?: string | undefined;
|
|
89
|
+
/** day keeps the last point of each UTC day per post; all returns every recorded point. */
|
|
90
|
+
"granularity"?: "day" | "all" | undefined;
|
|
91
|
+
}
|
|
54
92
|
/** Lexical keyword search over tracked posts: matches captions, creator bios, and video transcription text (Korean-aware analysis plus n-gram partial matching), ranked by relevance with match highlights. Each item carries post_id, author account_id/username, caption, transcription text, engagement counts, and score — feed post_id into solari_catalog_instagram_content_detail or solari_catalog_instagram_content_batch and the account reference into the account tools. Coverage: only regions KR, JP, US, and TW are searchable, holding roughly the most recent 6 months of posts; total is exact up to 10,000 and saturates there. Narrow with since/until (UTC dates). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
55
93
|
export interface CatalogInstagramContentSearchArgs {
|
|
56
94
|
/** Free-text keyword query matched against captions, creator bios, and video transcriptions. */
|
|
@@ -158,7 +196,7 @@ export interface FeedbackSendArgs {
|
|
|
158
196
|
/** Optional JSON object with the parameters tried and counts returned, e.g. {"months":24,"returned":3}. */
|
|
159
197
|
"details"?: string | undefined;
|
|
160
198
|
}
|
|
161
|
-
/** Adds one Instagram account to the SOLARI catalog by exact username. This is not a search and not a profile reader: use solari_catalog_instagram_account_search to resolve a name, then solari_catalog_instagram_account_profile to read it.
|
|
199
|
+
/** Adds one Instagram account to the SOLARI catalog by exact username. This is not a search and not a profile reader: use solari_catalog_instagram_account_search to resolve a name, then solari_catalog_instagram_account_profile to read it. An account collected within the last day is not scraped again, while an older stored copy is re-collected now (refreshed=true); a handle the catalog only knows by name from a tag or mention (search does not find it, the profile is empty) is crawled now. collected_at tells when the stored profile was collected. A first-time ingest can take several seconds; metrics and collaborations stay empty until the crawl finishes. Works with any signed-in SOLARI account. */
|
|
162
200
|
export interface FetchInstagramAccountArgs {
|
|
163
201
|
/** Instagram handle, with or without a leading @. */
|
|
164
202
|
"username": string;
|
|
@@ -189,7 +227,7 @@ export interface FetchInstagramPostArgs {
|
|
|
189
227
|
/** Public Instagram shortcode, the segment after /p/, /reel/, or /tv/ in a post URL. Wins over url when both are set. */
|
|
190
228
|
"slug"?: string | undefined;
|
|
191
229
|
}
|
|
192
|
-
/** Collects posts for one Instagram account into the SOLARI catalog by exact username. This is not a post listing: use solari_catalog_instagram_account_posts to read stored rows.
|
|
230
|
+
/** Collects posts for one Instagram account into the SOLARI catalog by exact username. This is not a post listing: use solari_catalog_instagram_account_posts to read stored rows. An account collected within the last day is not scraped again unless only a few of its posts are stored (stored_post_count well below profile_post_count); an older or sparsely collected copy is re-collected now with its posts queued right away (refreshed=true), and a handle the catalog only knows by name from a tag or mention is crawled the same way. posts_collected_at tells how far the stored posts reach. A first-time ingest can take several seconds and the posts land shortly after, so re-read the catalog after a short wait. Works with any signed-in SOLARI account. */
|
|
193
231
|
export interface FetchInstagramPostsArgs {
|
|
194
232
|
/** Instagram handle, with or without a leading @. */
|
|
195
233
|
"username": string;
|
|
@@ -540,7 +578,7 @@ export interface InsightInstagramRankingBrandsArgs {
|
|
|
540
578
|
/** Pagination offset, default 0. */
|
|
541
579
|
"offset"?: number | undefined;
|
|
542
580
|
}
|
|
543
|
-
/** Creator leaderboard for a market: creators who make brand-tagged content, ranked within a category so a specialist is not beaten by a large account with one post in it. Sort by total views, views per post, likes, number of brands worked with, sponsored views, reach (views per follower), lift (views per post against the creator's own usual median) or one-month view growth; the last three are null when a creator's baseline is too small. Each row splits the creator's content into sponsored and organic the same way as the brand board: sponsored_* and organic_* post counts, total views and views per post,
|
|
581
|
+
/** Creator leaderboard for a market: creators who make brand-tagged content, ranked within a category so a specialist is not beaten by a large account with one post in it. Sort by total views, views per post, likes, number of brands worked with, sponsored views, reach (views per follower), lift (views per post against the creator's own usual median) or one-month view growth; the last three are null when a creator's baseline is too small. Each row splits the creator's content in the category into sponsored (by that category's brands) and organic the same way as the brand board: sponsored_* and organic_* post counts, total views and views per post. sponsored_share is the creator's own ad share instead — ad_post_count over all_post_count, every post they published in the window, so it is the same in every category. kind=magazine ranks magazine and media accounts instead. Brand-owned, agency and shop accounts are excluded. Data is a daily snapshot (snapshot_at). Works with any signed-in SOLARI account. */
|
|
544
582
|
export interface InsightInstagramRankingCreatorsArgs {
|
|
545
583
|
/** Market (the creator's own region). */
|
|
546
584
|
"region"?: "KR" | "JP" | undefined;
|
|
@@ -624,11 +662,13 @@ export interface InsightTiktokContentAggregateArgs {
|
|
|
624
662
|
export interface UsageGetArgs {
|
|
625
663
|
}
|
|
626
664
|
export interface SolariToolMap {
|
|
665
|
+
"solari_catalog_instagram_account_history": CatalogInstagramAccountHistoryArgs;
|
|
627
666
|
"solari_catalog_instagram_account_posts": CatalogInstagramAccountPostsArgs;
|
|
628
667
|
"solari_catalog_instagram_account_profile": CatalogInstagramAccountProfileArgs;
|
|
629
668
|
"solari_catalog_instagram_account_search": CatalogInstagramAccountSearchArgs;
|
|
630
669
|
"solari_catalog_instagram_content_batch": CatalogInstagramContentBatchArgs;
|
|
631
670
|
"solari_catalog_instagram_content_detail": CatalogInstagramContentDetailArgs;
|
|
671
|
+
"solari_catalog_instagram_content_history": CatalogInstagramContentHistoryArgs;
|
|
632
672
|
"solari_catalog_instagram_content_search": CatalogInstagramContentSearchArgs;
|
|
633
673
|
"solari_catalog_instagram_tag_search": CatalogInstagramTagSearchArgs;
|
|
634
674
|
"solari_catalog_tiktok_account_posts": CatalogTiktokAccountPostsArgs;
|
|
@@ -681,9 +721,11 @@ export interface SolariToolMap {
|
|
|
681
721
|
export type SolariToolName = keyof SolariToolMap;
|
|
682
722
|
export declare const SOLARI_TOOL_NAMES: readonly SolariToolName[];
|
|
683
723
|
export type SolariToolsWithoutRequiredArgs = {
|
|
724
|
+
"solari_catalog_instagram_account_history": true;
|
|
684
725
|
"solari_catalog_instagram_account_posts": true;
|
|
685
726
|
"solari_catalog_instagram_account_profile": true;
|
|
686
727
|
"solari_catalog_instagram_content_detail": true;
|
|
728
|
+
"solari_catalog_instagram_content_history": true;
|
|
687
729
|
"solari_catalog_tiktok_account_posts": true;
|
|
688
730
|
"solari_catalog_tiktok_account_profile": true;
|
|
689
731
|
"solari_catalog_tiktok_content_detail": true;
|
|
@@ -707,9 +749,11 @@ export interface SolariTools {
|
|
|
707
749
|
catalog: {
|
|
708
750
|
instagram: {
|
|
709
751
|
account: {
|
|
710
|
-
/**
|
|
752
|
+
/** Recorded profile values of one collected Instagram account over time, for follower growth and trend comparisons. points lists follower_count, following_count, post_count, is_verified, and is_private, oldest first, each with captured_at: the moment the catalog collected those values. current holds the catalog's current values, and current.collected_at says when the profile was last collected from Instagram; check it before treating the numbers as today's. granularity=day (default) keeps the last point of each UTC day; all returns every recorded point. The range is since/until (UTC dates, inclusive) and defaults to the last 90 days; truncated=true means older points were dropped, so narrow since. Points exist only when the account was collected, so gaps are normal, and most accounts have no points between late August 2025 and late September 2026. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username. This reads the catalog only; found=false means the handle is not in the catalog — call solari_fetch_instagram_account first, which cannot backfill past values. Works with any signed-in SOLARI account. */
|
|
753
|
+
history<T = unknown>(args?: CatalogInstagramAccountHistoryArgs): Promise<T>;
|
|
754
|
+
/** Posts by one collected Instagram account, newest first, with pagination and filters. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). Each item has post_id (SOLARI post UUID), slug and url (public Instagram permalink), post_type (reel, video, photo, or carousel), posted_at, caption text, like/comment/play counts, media_count, is_paid_partnership, a medias array (every media of the post in carousel order, each with media_type, media/thumbnail URLs, video_duration, and tags — accounts and hashtags tagged on that media, with account_id when the tagged account is tracked), and a representative thumbnail_url. The response carries found, account_id, username, total, has_more, and items; page with limit and offset, narrow with since/until (UTC dates, inclusive) and post_type. posts_collected_at is how far the stored posts reach, stored_post_count against profile_post_count shows whether collection is incomplete, and refreshes_regularly says whether the account is re-collected on a schedule; when the requested dates run past posts_collected_at, note explains that later posts are not in the catalog yet — an empty result then does not mean the account posted nothing, so call solari_fetch_instagram_posts to re-collect it. This reads the catalog only; found=false means the handle is not in the catalog (note says when Instagram no longer has it) — call solari_fetch_instagram_posts with that username first. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
711
755
|
posts<T = unknown>(args?: CatalogInstagramAccountPostsArgs): Promise<T>;
|
|
712
|
-
/** Full SOLARI catalog profile for one collected Instagram account: username, full name, bio, follower/following/post counts, verified flag, inferred account_type, view metrics (median and total views, ad count, month-over-month growth, region percentiles), plus embedded previews of recent posts and recent ad collaborations. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). This reads the catalog only; an unknown handle is not-found — call solari_fetch_instagram_account with that username first, then retry. Works with any signed-in SOLARI account. */
|
|
756
|
+
/** Full SOLARI catalog profile for one collected Instagram account: username, full name, bio, follower/following/post counts, verified flag, inferred account_type, view metrics (median and total views, ad count, month-over-month growth, region percentiles), plus embedded previews of recent posts and recent ad collaborations. Identify the account by account_id (UUID from solari_catalog_instagram_account_search) or by username (Instagram handle). collected_at is when the profile was last collected from Instagram and refreshes_regularly says whether it is re-collected on a schedule. This reads the catalog only; an unknown handle is not-found — call solari_fetch_instagram_account with that username first, then retry; a not-found that says the handle was renamed or deleted means Instagram has no account under that name, so search by display name instead. Works with any signed-in SOLARI account. */
|
|
713
757
|
profile<T = unknown>(args?: CatalogInstagramAccountProfileArgs): Promise<T>;
|
|
714
758
|
/** Resolves a brand/creator name or Instagram handle to candidate tracked accounts via fast deterministic index search — like a typeahead, all candidates are returned — and also searches profile bio text. query_type picks what the query is matched against: auto (default) matches handles by prefix and profile display names (Korean or English) by text match; username or full_name narrows to just one of those; bio runs a full-text search over profile bio text, which is how you discover accounts by what they say about themselves ("skincare", "협찬 문의", "コスメ") rather than by name. Ranked by match quality and follower count. Returns found plus items ordered best-first (items[0] is the top match), each with account_id (the SOLARI account UUID every other tool takes), username, full_name, biography, follower_count, region, is_verified, and profile_pic_url; found=false with empty items means nothing matched. In the name modes the query must actually appear in the handle or display name — phonetic aliases and abbreviations do not resolve, so retry with the native spelling (for example the English brand name). Set brands_only=true when resolving a brand name to filter out fan and meme accounts; pair it with query_type=bio to sweep a category of brands. Leave region unset unless the user asked for one country — it drops every account outside that region. Works with any signed-in SOLARI account. Use this first to resolve any entity mentioned by name. */
|
|
715
759
|
search<T = unknown>(args: CatalogInstagramAccountSearchArgs): Promise<T>;
|
|
@@ -719,6 +763,8 @@ export interface SolariTools {
|
|
|
719
763
|
batch<T = unknown>(args: CatalogInstagramContentBatchArgs): Promise<T>;
|
|
720
764
|
/** Detail for one Instagram post in the SOLARI catalog, in the same item shape as solari_insight_instagram_content_trending entries. Identify the post by post_id (SOLARI post UUID from solari_catalog_instagram_account_posts, solari_catalog_instagram_content_search, solari_insight_instagram_content_trending, or solari_insight_instagram_content_rising), by slug (the public Instagram shortcode), or by url (the public post URL). This reads the catalog only; item is null when the post is not stored — call solari_fetch_instagram_post with the same url or slug to collect it and learn its author, or solari_fetch_instagram_posts when you already know the author's username. Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
721
765
|
detail<T = unknown>(args?: CatalogInstagramContentDetailArgs): Promise<T>;
|
|
766
|
+
/** Recorded engagement of Instagram posts over time, for growth curves and engagement comparisons. Each item is one post (post_id, slug, url, posted_at, account_id, username) with points: like_count, comment_count, play_count, reshare_count, likes_hidden, and deleted, oldest first, each with captured_at: the moment the catalog collected those values. Choose posts with post_ids, slugs, or urls (up to 50 combined; missing lists the ones not in the catalog — collect them with solari_fetch_instagram_post), or give an account (account_id or username) to trace its newest posts, narrowed by posted_since/posted_until and limit (default 20, max 50). since/until narrow the recorded points (UTC dates, inclusive). granularity=day (default) keeps the last point of each UTC day per post; all returns every point; truncated=true means older points were dropped. Posts are re-collected mostly in their first days, so older posts have few points. likes_hidden=true means the author hid like and view counts, but like_count is usually still present, so do not drop those posts from comparisons. This reads the catalog only. Works with any signed-in SOLARI account. */
|
|
767
|
+
history<T = unknown>(args?: CatalogInstagramContentHistoryArgs): Promise<T>;
|
|
722
768
|
/** Lexical keyword search over tracked posts: matches captions, creator bios, and video transcription text (Korean-aware analysis plus n-gram partial matching), ranked by relevance with match highlights. Each item carries post_id, author account_id/username, caption, transcription text, engagement counts, and score — feed post_id into solari_catalog_instagram_content_detail or solari_catalog_instagram_content_batch and the account reference into the account tools. Coverage: only regions KR, JP, US, and TW are searchable, holding roughly the most recent 6 months of posts; total is exact up to 10,000 and saturates there. Narrow with since/until (UTC dates). Each post carries assets: its media files in order, each with a direct-download asset_url for the full-size image or video; when a response is too large, assets is replaced by an assets_omitted count — request fewer posts to keep it. Works with any signed-in SOLARI account. */
|
|
723
769
|
search<T = unknown>(args: CatalogInstagramContentSearchArgs): Promise<T>;
|
|
724
770
|
};
|
|
@@ -753,7 +799,7 @@ export interface SolariTools {
|
|
|
753
799
|
fetch: {
|
|
754
800
|
instagram: {
|
|
755
801
|
account: {
|
|
756
|
-
/** Adds one Instagram account to the SOLARI catalog by exact username. This is not a search and not a profile reader: use solari_catalog_instagram_account_search to resolve a name, then solari_catalog_instagram_account_profile to read it.
|
|
802
|
+
/** Adds one Instagram account to the SOLARI catalog by exact username. This is not a search and not a profile reader: use solari_catalog_instagram_account_search to resolve a name, then solari_catalog_instagram_account_profile to read it. An account collected within the last day is not scraped again, while an older stored copy is re-collected now (refreshed=true); a handle the catalog only knows by name from a tag or mention (search does not find it, the profile is empty) is crawled now. collected_at tells when the stored profile was collected. A first-time ingest can take several seconds; metrics and collaborations stay empty until the crawl finishes. Works with any signed-in SOLARI account. */
|
|
757
803
|
<T = unknown>(args: FetchInstagramAccountArgs): Promise<T>;
|
|
758
804
|
/** Looks Instagram accounts up live by name or handle fragment and returns up to 50 candidates in Instagram's own order, each with username, display name, verified and private flags. Use it when solari_catalog_instagram_account_search does not know the account: hits already in the catalog carry account_id, the rest can be ingested with solari_fetch_instagram_account. Nothing is stored and there is no pagination. Works with any signed-in SOLARI account. */
|
|
759
805
|
search<T = unknown>(args: FetchInstagramAccountSearchArgs): Promise<T>;
|
|
@@ -766,7 +812,7 @@ export interface SolariTools {
|
|
|
766
812
|
};
|
|
767
813
|
/** Collects one Instagram post into the SOLARI catalog by its public URL or shortcode and returns it with its author. Use it when solari_catalog_instagram_content_detail answers item=null for a link you were given and you do not know who posted it. If the post is already stored, nothing is scraped. A first-time collect takes a few seconds. The author arrives as a name-only account: call solari_fetch_instagram_account with the returned username to crawl their profile and posts. item is null when Instagram has no public post at that reference. The post carries assets with a direct-download asset_url. Works with any signed-in SOLARI account. */
|
|
768
814
|
post<T = unknown>(args?: FetchInstagramPostArgs): Promise<T>;
|
|
769
|
-
/** Collects posts for one Instagram account into the SOLARI catalog by exact username. This is not a post listing: use solari_catalog_instagram_account_posts to read stored rows.
|
|
815
|
+
/** Collects posts for one Instagram account into the SOLARI catalog by exact username. This is not a post listing: use solari_catalog_instagram_account_posts to read stored rows. An account collected within the last day is not scraped again unless only a few of its posts are stored (stored_post_count well below profile_post_count); an older or sparsely collected copy is re-collected now with its posts queued right away (refreshed=true), and a handle the catalog only knows by name from a tag or mention is crawled the same way. posts_collected_at tells how far the stored posts reach. A first-time ingest can take several seconds and the posts land shortly after, so re-read the catalog after a short wait. Works with any signed-in SOLARI account. */
|
|
770
816
|
posts<T = unknown>(args: FetchInstagramPostsArgs): Promise<T>;
|
|
771
817
|
};
|
|
772
818
|
threads: {
|
|
@@ -859,7 +905,7 @@ export interface SolariTools {
|
|
|
859
905
|
ranking: {
|
|
860
906
|
/** Brand leaderboard for a market: brands ranked by how the content that tags or mentions them performs — total views by default, or views per post, post count, creator count, likes, sponsored views or organic views. Each row splits that content into sponsored and organic (not sponsored): sponsored_post_count, sponsored_total_plays and sponsored_median_plays for the sponsored part, organic_post_count, organic_total_plays and organic_median_plays for the rest, and sponsored_share (sponsored posts over all posts). Answer organic-only questions from this split, and get organic example posts from solari_insight_instagram_ranking_posts with kind=organic. Narrow to a category with scope; pass a brand to get its own rank as me, or find_username to locate any brand. Data is a daily snapshot (snapshot_at). Works with any signed-in SOLARI account. */
|
|
861
907
|
brands<T = unknown>(args?: InsightInstagramRankingBrandsArgs): Promise<T>;
|
|
862
|
-
/** Creator leaderboard for a market: creators who make brand-tagged content, ranked within a category so a specialist is not beaten by a large account with one post in it. Sort by total views, views per post, likes, number of brands worked with, sponsored views, reach (views per follower), lift (views per post against the creator's own usual median) or one-month view growth; the last three are null when a creator's baseline is too small. Each row splits the creator's content into sponsored and organic the same way as the brand board: sponsored_* and organic_* post counts, total views and views per post,
|
|
908
|
+
/** Creator leaderboard for a market: creators who make brand-tagged content, ranked within a category so a specialist is not beaten by a large account with one post in it. Sort by total views, views per post, likes, number of brands worked with, sponsored views, reach (views per follower), lift (views per post against the creator's own usual median) or one-month view growth; the last three are null when a creator's baseline is too small. Each row splits the creator's content in the category into sponsored (by that category's brands) and organic the same way as the brand board: sponsored_* and organic_* post counts, total views and views per post. sponsored_share is the creator's own ad share instead — ad_post_count over all_post_count, every post they published in the window, so it is the same in every category. kind=magazine ranks magazine and media accounts instead. Brand-owned, agency and shop accounts are excluded. Data is a daily snapshot (snapshot_at). Works with any signed-in SOLARI account. */
|
|
863
909
|
creators<T = unknown>(args?: InsightInstagramRankingCreatorsArgs): Promise<T>;
|
|
864
910
|
/** Where one Instagram account stands, without knowing whether it is a brand or a creator: for each board it appears on (brand, creator), its rank, pool size and top percentile in every category it belongs to, plus its overall row with the sponsored and organic split (organic_post_count, organic_total_plays, organic_median_plays, sponsored_share). The quickest way to answer how one brand's organic content performs. Ranked by total views with the loosest filters. A side is null when the account is not on that board. Works with any signed-in SOLARI account. */
|
|
865
911
|
find<T = unknown>(args: InsightInstagramRankingFindArgs): Promise<T>;
|
package/dist/tools.generated.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// AUTO-GENERATED by cf-workers/solari-mcp/scripts/generate-sdk-tools.ts from the SOLARI MCP tool registry. Do not edit by hand; run `pnpm run sdk:generate` in cf-workers/solari-mcp.
|
|
2
2
|
export const SOLARI_TOOL_NAMES = [
|
|
3
|
+
"solari_catalog_instagram_account_history",
|
|
3
4
|
"solari_catalog_instagram_account_posts",
|
|
4
5
|
"solari_catalog_instagram_account_profile",
|
|
5
6
|
"solari_catalog_instagram_account_search",
|
|
6
7
|
"solari_catalog_instagram_content_batch",
|
|
7
8
|
"solari_catalog_instagram_content_detail",
|
|
9
|
+
"solari_catalog_instagram_content_history",
|
|
8
10
|
"solari_catalog_instagram_content_search",
|
|
9
11
|
"solari_catalog_instagram_tag_search",
|
|
10
12
|
"solari_catalog_tiktok_account_posts",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brandazine/solari-sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "TypeScript client for the SOLARI API — creator and brand intelligence across Instagram and TikTok, plus Meta Threads profiles and posts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://solari.sh/api",
|