Influship MCP
Enables AI-native creator discovery for influencer marketing, including creator search, lookalikes, profile lookup, and Instagram post transcript analysis.
Executive verdict
trustsnap_619a0f1464c78db7Current trust snapshot
trustsnap_619a0f1464c78db7Canonical machine links
Own this MCP?
Claim ownership, prove control with a GitHub, DNS, HTTP, MCP metadata, or email-domain challenge, revalidate now, publish a badge, configure monitoring, and unlock a verified server profile.
POST /v1/servers/Influship/influship-mcp/revalidateBadge embed
[](https://verify.sentinelsignal.io/servers/Influship/influship-mcp)
MCP TrustOps
TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.
/v1/decideAlert subscription types
MCP Runtime hosting
Verify Hosted MCP turns a trusted server report into a managed remote MCP endpoint with GitHub deployment provenance, sandbox policy, encrypted secrets, release history, rollback, and audit/usage events.
/hosted/{namespace}/{name}/mcp| Deployment | Status | Endpoint | Release |
|---|---|---|---|
| No hosted runtime deployments yet. | |||
Production readiness class
Evidence confidence
Recommended for
Client compatibility verdicts
Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warningstep_up_auth_probe• Warningconnector_replay_probe• OK — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Evidence provenance
initialize• OKtools_list• OKtransport_compliance_probe• Warning
Evidence provenance
action_safety_probe• Warning
Evidence provenance
tool_snapshot_probe• OKconnector_replay_probe• OK
Why compatibility is limited by client
Remediation checklist
search fetch only is not yet satisfiedsafe for company knowledge is not yet satisfiedsafe for messages api remote mcp is not yet satisfiedTransport compliance issues should be resolved before wider client rollout.
Remediation checklist
search fetch only is not yet satisfiedsafe for company knowledge is not yet satisfiedsafe for messages api remote mcp is not yet satisfiedTransport compliance issues should be resolved before wider client rollout.
Remediation checklist
- No explicit blockers recorded.
Verdict traces
tool_snapshot_changed• high • Tool snapshot changedauth_mode_changed• high • Auth mode changedwrite_action_surface_expanded• high • Write-action surface expanded
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Client-compatible | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
Publishing allowed | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Medium | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: Yes
- Admin Refresh Required: Yes
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: Yes
- Admin Refresh Required: Yes
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
- remote_http_endpoint: Passes
- oauth_discovery: Passes
- frozen_tool_snapshot_refresh: Passes
- request_association: Passes
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Passes
Authenticated validation sessions
Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.
/v1/verify/v1/ci/previewPublic server reputation
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| May 28, 2026 02:17:57 PM UTC | Latest validation: healthy | Score 76.1 with status healthy. |
| May 28, 2026 02:17:57 PM UTC | Score changed | Score delta +3.2 versus the previous run. |
| May 28, 2026 02:17:57 PM UTC | Tool snapshot changed | Added 14, removed 0, and changed 0 tool contracts. |
| May 28, 2026 02:17:57 PM UTC | Auth mode changed | Auth mode moved from unknown to oauth_supported. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://glama.ai/mcp/servers/l5ru5stg6g
- Docs: none
- Support: https://github.com/Influship/influship-mcp
- Icon: none
- Remote endpoint: https://mcp.influship.com/mcp
- Server card: none
Security posture
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes |
|---|---|---|---|---|
get_sample_creator |
read write network filesystem admin | Medium | filesystem mutation admin mutation | No explicit safeguard hints detected. |
search_creators |
read write exec network filesystem admin export | Critical | command execution bulk data access filesystem mutation admin mutation | No explicit safeguard hints detected. |
semantic_search_creators |
read write exec filesystem admin export | Critical | command execution bulk data access filesystem mutation admin mutation | No explicit safeguard hints detected. |
autocomplete_creators |
read write filesystem admin export | High | bulk data access filesystem mutation admin mutation | No explicit safeguard hints detected. |
find_lookalike_creators |
read write filesystem admin export | Medium | bulk data access filesystem mutation admin mutation | Safeguards hinted in metadata. |
match_creators |
read write exec filesystem admin | High | command execution filesystem mutation admin mutation | No explicit safeguard hints detected. |
get_creator |
read write filesystem admin | Medium | filesystem mutation admin mutation | No explicit safeguard hints detected. |
get_profile |
read write filesystem admin | Medium | filesystem mutation admin mutation | No explicit safeguard hints detected. |
lookup_profiles |
read write filesystem admin | Medium | filesystem mutation admin mutation | No explicit safeguard hints detected. |
get_posts |
read write network filesystem admin export | Medium | bulk data access filesystem mutation admin mutation | Safeguards hinted in metadata. |
get_instagram_post |
read write network admin secrets | High | secret material access freeform input surface admin mutation | No explicit safeguard hints detected. |
get_instagram_posts |
read write network | Medium | none | No explicit safeguard hints detected. |
get_instagram_post_transcript |
read write network | Medium | freeform input surface | No explicit safeguard hints detected. |
get_instagram_post_transcripts |
read write network | Medium | none | No explicit safeguard hints detected. |
Write-action governance
Status detail: 5 high-risk tool(s), 3 exec-capable tool(s); auth boundary is oauth or auth required with 2 safeguard(s) and 1 confirmation signal(s).
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
search_creators |
Critical | command execution bulk data access filesystem mutation admin mutation | no |
semantic_search_creators |
Critical | command execution bulk data access filesystem mutation admin mutation | no |
autocomplete_creators |
High | bulk data access filesystem mutation admin mutation | no |
match_creators |
High | command execution filesystem mutation admin mutation | no |
get_instagram_post |
High | secret material access freeform input surface admin mutation | no |
Action-controls diff
New actions
| Action | Risk | Flags |
|---|---|---|
autocomplete_creators | High | bulk data access filesystem mutation admin mutation |
find_lookalike_creators | Medium | bulk data access filesystem mutation admin mutation |
get_creator | Medium | filesystem mutation admin mutation |
get_instagram_post | High | secret material access freeform input surface admin mutation |
get_instagram_post_transcript | Medium | freeform input surface |
get_instagram_post_transcripts | Medium | none |
get_instagram_posts | Medium | none |
get_posts | Medium | bulk data access filesystem mutation admin mutation |
get_profile | Medium | filesystem mutation admin mutation |
get_sample_creator | Medium | filesystem mutation admin mutation |
lookup_profiles | Medium | filesystem mutation admin mutation |
match_creators | High | command execution filesystem mutation admin mutation |
search_creators | Critical | command execution bulk data access filesystem mutation admin mutation |
semantic_search_creators | Critical | command execution bulk data access filesystem mutation admin mutation |
Changed actions
| Action | Change types | Risk |
|---|---|---|
| No materially changed actions. | ||
Why this score?
Algorithmic score breakdown
Compatibility profiles
Connector URL: https://mcp.influship.com/mcp # Complete OAuth in the client when prompted. # Server: Influship/influship-mcp
{
"mcpServers": {
"influship-mcp": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.influship.com/mcp"]
}
}
}
smithery mcp add "https://mcp.influship.com/mcp"
curl -sS https://mcp.influship.com/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Add confirmation and dry-run semantics for risky actions | High-risk write, delete, exec, or egress tools should communicate safeguards clearly. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Associate roots, sampling, and elicitation with active client requests | Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Publish a complete server card | Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals. | Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.Playbook
|
| High | Respond to auth mode changed | Auth mode changed from unknown to oauth_supported. | Document the new auth posture and confirm protected-resource and challenge metadata still match reality.Playbook
|
| High | Respond to tool snapshot changed | Tools were added, removed, or materially changed between the latest two validations. | Publish a first-class changelog for tool additions, removals, and breaking schema changes.Playbook
|
| High | Respond to write-action surface expanded | The number of high-risk write, delete, exec, or bulk-access tools increased on the latest run. | Review the newly exposed write and destructive actions before publishing them broadly.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Repair prompts/list or stop advertising prompts | Prompt metadata should either work live or be removed from the advertised capability set. | Only advertise prompts if prompts/list works and prompt arguments are documented.Playbook
|
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Low | Publish or reconcile the server in the official MCP registry | Official registry presence improves discovery confidence and cross-source consistency. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Recovery Semantics | 0/4 | -4.0 |
| Dependency Supply Chain Signal | 0.5/4 | -3.5 |
| Utility Coverage | 2/4 | -2.0 |
| Transport Compliance | 2/4 | -2.0 |
| Spec Recency | 2/4 | -2.0 |
| Safety Transparency | 2/4 | -2.0 |
| Registry Consistency | 2/4 | -2.0 |
| Rate Limit Semantics | 2/4 | -2.0 |
| Prompt Contract | 2/4 | -2.0 |
| Maintenance Signal | 2/4 | -2.0 |
| Error Contract | 2/4 | -2.0 |
| Data Exfiltration Resilience | 2/4 | -2.0 |
Validation diff
Regressed checks: server_card
Improved checks: connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, openid_configuration, probe_noise_resilience, provenance_divergence_probe, resource_read, resources_list, tool_snapshot_probe, tools_list
| Component | Previous | Latest | Delta |
|---|---|---|---|
execution_sandbox_safety_score | 1.0 | 3.75 | 2.75 |
backward_compatibility_score | 2.0 | 4.0 | 2.0 |
maintenance_signal_score | 3.95 | 2.0 | -1.95 |
trust_confidence_score | 1.75 | 2.94 | 1.19 |
connector_replay_score | 3.0 | 4.0 | 1.0 |
least_privilege_scope_score | 2.0 | 3.0 | 1.0 |
result_shape_stability_score | 3.0 | 4.0 | 1.0 |
slo_health_score | 4.0 | 3.0 | -1.0 |
Tool snapshot diff & changelog
Required-argument changes
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument changes detected. | ||
Output-schema drift
| Tool | Previous properties | Latest properties |
|---|---|---|
| No output-schema drift detected. | ||
Connector replay
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||
Transport compliance drilldown
Issues: missing_session_id, missing_protocol_header
Request association
Utility coverage
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Passes |
|
| OAuth-required connect | Passes |
|
| Safe write flow with confirmation | Degraded |
|
Registry & provenance divergence
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | n/a |
| Version | n/a | n/a |
| Homepage | n/a | n/a |
Active alerts
- Tool snapshot changed (high)
Tools were added, removed, or materially changed between the latest two validations. - Auth mode changed (high)
Auth mode changed from unknown to oauth_supported. - Write-action surface expanded (high)
The number of high-risk write, delete, exec, or bulk-access tools increased on the latest run.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
Influship/influship-mcp |
glama_registry | yes | 76.12 |
Alias consolidation
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| No source disagreements detected. | ||
Install snippets
Connector URL: https://mcp.influship.com/mcp # Complete OAuth in the client when prompted. # Server: Influship/influship-mcp
{
"mcpServers": {
"influship-mcp": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.influship.com/mcp"]
}
}
}
smithery mcp add "https://mcp.influship.com/mcp"
curl -sS https://mcp.influship.com/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
tools/list, prompts/list, and resources/list checks.Influship/influship-mcp.Claims & monitoring
No verified maintainer claim recorded.
Alert routing
| Watch | Team | Channels | Minimum severity |
|---|---|---|---|
| No active watch destinations. | |||
Maintainer analytics
Maintainer response quality
Maintainer annotations
No maintainer annotations have been recorded yet.
Maintainer rebuttals & expected behavior
No maintainer rebuttals or expected-behavior overrides are recorded yet.
Latest validation evidence
Failures
server_cardClient error '404 Not Found' for url 'https://mcp.influship.com/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
Warning | n/a | 5 high-risk, 3 exec-capable tool(s); auth present; safeguards=2; confirmation=get sample creator. |
advanced_capabilities_probe |
Warning | n/a | Only 3 capability signal(s): resource links, resources, structured outputs. |
connector_publishability_probe |
Warning | n/a | Publishability blockers: server card. |
connector_replay_probe |
OK | n/a | Backward compatible with no breaking tool-surface changes. |
determinism_probe |
OK | 27.8 ms | Check completed |
initialize |
OK | 18.4 ms | Protocol 2025-03-26 |
interactive_flow_probe |
OK | n/a | Check completed |
oauth_authorization_server |
OK | 209.5 ms | authorization_endpoint, claims_supported, code_challenge_methods_supported, grant_types_supported |
oauth_protected_resource |
OK | 76.4 ms | 1 authorization server(s) |
official_registry_probe |
Warning | n/a | Check completed |
openid_configuration |
OK | 126.9 ms | authorization_endpoint, claims_supported, code_challenge_methods_supported, grant_types_supported |
probe_noise_resilience |
OK | 9029.0 ms | Fetched https://mcp.influship.com/robots.txt |
prompt_get |
Missing | n/a | not advertised |
prompts_list |
Missing | 21.2 ms | not supported |
protocol_version_probe |
Warning | n/a | Claims 2025-03-26; 2 release(s) behind 2025-11-25. |
provenance_divergence_probe |
OK | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
OK | 17.4 ms | 1 resource content item(s) returned |
resources_list |
OK | 19.5 ms | 1 resource item(s) exposed |
server_card |
Error | 93.1 ms | Client error '404 Not Found' for url 'https://mcp.influship.com/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
session_resume_probe |
Warning | n/a | no session id |
step_up_auth_probe |
Warning | n/a | Scopes=email, openid, phone, profile. |
tool_snapshot_probe |
OK | n/a | Check completed |
tools_list |
OK | 31.1 ms | 14 tool(s) exposed |
transport_compliance_probe |
Warning | 21.7 ms | Issues: missing session id, missing protocol header (bad protocol=400). |
utility_coverage_probe |
Missing | 22.7 ms | No completions evidence; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": true,
"confirmation_signals": [
"get_sample_creator"
],
"safeguard_count": 2,
"summary": {
"bulk_access_tools": 5,
"capability_distribution": {
"admin": 11,
"exec": 3,
"export": 5,
"filesystem": 10,
"network": 7,
"read": 14,
"secrets": 1,
"write": 14
},
"destructive_tools": 0,
"egress_tools": 0,
"exec_tools": 3,
"high_risk_tools": 5,
"risk_distribution": {
"critical": 2,
"high": 3,
"low": 0,
"medium": 9
},
"secret_tools": 1,
"tool_count": 14
}
},
"latency_ms": null,
"status": "warning"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": true,
"resources": true,
"roots": false,
"sampling": false,
"structured_outputs": true
},
"enabled": [
"resource_links",
"resources",
"structured_outputs"
],
"enabled_count": 3,
"initialize_capability_keys": [
"resources",
"tools"
]
},
"latency_ms": null,
"status": "warning"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"server_card"
],
"criteria": {
"action_safety": true,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": true
},
"high_risk_tools": 5,
"tool_count": 14,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [],
"additive_output_changes": [],
"backward_compatible": true,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [],
"would_break_after_refresh": false
},
"latency_ms": null,
"status": "ok"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "4f25653f685b215dca45bbd723402d29804d8d6bf7067a9153bf1fd724db255d",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 27.75,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"resources": {
"listChanged": true
},
"tools": {
"listChanged": true
}
},
"protocolVersion": "2025-03-26",
"serverInfo": {
"name": "influship",
"version": "0.1.0"
}
}
},
"url": "https://mcp.influship.com/mcp"
},
"latency_ms": 18.41,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": true,
"prompt_available": false,
"risk_hits": [],
"safe_hits": [
"oauth"
]
},
"latency_ms": null,
"status": "ok"
},
"oauth_authorization_server": {
"details": {
"headers": {
"content-type": "application/json",
"set-cookie": "__cf_bm=Cf0dI_elQJ37ulqx8x48yAFrAEKPx017A00T5G13gto-1779977868.0674527-1.0.1.1-v7QHMZF8dWfLlv7LbhwZhdv39kk3GjDMau3Y0IDMciaLg4Q1hdi.mRETQwQuSIg7tsTansU58YZt9ooex4xbYYW9NEKoPeAJJwI_B_HObd.DT3YsftDTuDq4ByhaqkjA; HttpOnly; SameSite=None; Secure; Path=/; Domain=supabase.co; Expires=Thu, 28 May 2026 14:47:48 GMT",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"http_status": 200,
"payload": {
"authorization_endpoint": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/oauth/authorize",
"claims_supported": [
"sub",
"aud",
"iss",
"exp",
"iat",
"auth_time",
"nonce",
"email",
"email_verified",
"phone_number",
"phone_number_verified",
"name",
"picture",
"preferred_username",
"updated_at"
],
"code_challenge_methods_supported": [
"S256",
"plain"
],
"grant_types_supported": [
"authorization_code",
"refresh_token"
],
"id_token_signing_alg_values_supported": [
"RS256",
"HS256",
"ES256"
],
"issuer": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1",
"jwks_uri": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/.well-known/jwks.json",
"registration_endpoint": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/oauth/clients/register",
"response_modes_supported": [
"query"
],
"response_types_supported": [
"code"
],
"scopes_supported": [
"openid",
"profile",
"email",
"phone"
],
"subject_types_supported": [
"public"
],
"token_endpoint": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/oauth/token",
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post",
"none"
],
"userinfo_endpoint": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/oauth/userinfo"
},
"url": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/.well-known/oauth-authorization-server"
},
"latency_ms": 209.53,
"status": "ok"
},
"oauth_protected_resource": {
"details": {
"headers": {
"content-type": "application/json; charset=utf-8",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"authorization_servers": [
"https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1"
],
"bearer_methods_supported": [
"header"
],
"resource": "https://mcp.influship.com",
"resource_documentation": "https://docs.influship.com",
"resource_name": "Influship MCP",
"scopes_supported": [
"email",
"profile"
]
},
"url": "https://mcp.influship.com/.well-known/oauth-protected-resource"
},
"latency_ms": 76.41,
"status": "ok"
},
"official_registry_probe": {
"details": {
"direct_match": false,
"official_identifiers": [
"io.github.joepangallo/mcp-server-security-audit",
"com.scoutapm/scout-mcp-local",
"io.github.gluip/chart-canvas",
"io.github.isakskogstad/scb-mcp",
"io.github.Kibetho/saasforit",
"io.github.dynatrace-oss/dynatrace-managed-mcp",
"io.github.enessari/metabase-ai-assistant",
"com.senzing/mcp",
"io.github.ndl-systems/kevros",
"ai.auteng/mcp"
],
"official_peer_count": 10,
"registry_source": "glama_registry"
},
"latency_ms": null,
"status": "warning"
},
"openid_configuration": {
"details": {
"headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains; preload"
},
"http_status": 200,
"payload": {
"authorization_endpoint": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/oauth/authorize",
"claims_supported": [
"sub",
"aud",
"iss",
"exp",
"iat",
"auth_time",
"nonce",
"email",
"email_verified",
"phone_number",
"phone_number_verified",
"name",
"picture",
"preferred_username",
"updated_at"
],
"code_challenge_methods_supported": [
"S256",
"plain"
],
"grant_types_supported": [
"authorization_code",
"refresh_token"
],
"id_token_signing_alg_values_supported": [
"RS256",
"HS256",
"ES256"
],
"issuer": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1",
"jwks_uri": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/.well-known/jwks.json",
"registration_endpoint": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/oauth/clients/register",
"response_modes_supported": [
"query"
],
"response_types_supported": [
"code"
],
"scopes_supported": [
"openid",
"profile",
"email",
"phone"
],
"subject_types_supported": [
"public"
],
"token_endpoint": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/oauth/token",
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post",
"none"
],
"userinfo_endpoint": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/oauth/userinfo"
},
"url": "https://dlgtkfibbtbzakpuqriy.supabase.co/auth/v1/.well-known/openid-configuration"
},
"latency_ms": 126.91,
"status": "ok"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "application/json; charset=utf-8",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 404,
"url": "https://mcp.influship.com/robots.txt"
},
"latency_ms": 9028.95,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 3,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://mcp.influship.com/mcp"
},
"latency_ms": 21.25,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": false,
"drift_fields": [],
"metadata_document_count": 1,
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "ok"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 6,
"jsonrpc": "2.0",
"result": {
"contents": [
{
"_meta": {
"openai/widgetCSP": {
"connect_domains": [],
"resource_domains": [
"https://media.influship.com",
"https://pub-3370d4e4086448e68d392923ed3df2ce.r2.dev"
]
},
"openai/widgetDomain": "https://mcp.influship.com",
"openai/widgetPrefersBorder": true,
"ui": {
"csp": {
"connectDomains": [],
"resourceDomains": [
"https://media.influship.com",
"https://pub-3370d4e4086448e68d392923ed3df2ce.r2.dev"
]
},
"domain": "https://mcp.influship.com",
"prefersBorder": true
}
},
"mimeType": "text/html;profile=mcp-app",
"text": "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <style>\n :root {\n color-scheme: light dark;\n font-family:\n Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n }\n\n body {\n margin: 0;\n background: Canvas;\n color: CanvasText;\n }\n\n main {\n display: grid;\n gap: 16px;\n padding: 18px;\n }\n\n .hero {\n display: grid;\n grid-template-columns: 76px minmax(0, 1fr);\n gap: 14px;\n align-items: center;\n }\n\n .avatar-frame {\n display: grid;\n width: 76px;\n height: 76px;\n place-items: center;\n overflow: hidden;\n border: 1px solid color-mix(in srgb, CanvasText 12%, Canvas);\n border-radius: 50%;\n background:\n linear-gradient(135deg, color-mix(in srgb, CanvasText 10%, Canvas), transparent),\n color-mix(in srgb, CanvasText 6%, Canvas);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .initials {\n font-size: 22px;\n font-weight: 700;\n }\n\n h1 {\n margin: 0;\n overflow-wrap: anywhere;\n font-size: 22px;\n line-height: 1.18;\n }\n\n h2 {\n margin: 0 0 7px;\n color: color-mix(in srgb, CanvasText 58%, Canvas);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0;\n text-transform: uppercase;\n }\n\n p {\n margin: 0;\n color: color-mix(in srgb, CanvasText 74%, Canvas);\n font-size: 14px;\n line-height: 1.45;\n }\n\n .tagline {\n margin-top: 5px;\n color: color-mix(in srgb, CanvasText 70%, Canvas);\n }\n\n .handle {\n margin-top: 6px;\n color: color-mix(in srgb, CanvasText 62%, Canvas);\n font-size: 13px;\n }\n\n .metrics {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 8px;\n }\n\n .metric {\n min-width: 0;\n border: 1px solid color-mix(in srgb, CanvasText 12%, Canvas);\n border-radius: 8px;\n padding: 10px;\n background: color-mix(in srgb, CanvasText 3%, Canvas);\n }\n\n .metric strong {\n display: block;\n overflow-wrap: anywhere;\n font-size: 18px;\n line-height: 1.1;\n }\n\n .metric span {\n display: block;\n margin-top: 4px;\n color: color-mix(in srgb, CanvasText 58%, Canvas);\n font-size: 11px;\n }\n\n .panel {\n display: grid;\n gap: 8px;\n }\n\n .chips,\n .facts,\n .profiles {\n display: flex;\n flex-wrap: wrap;\n gap: 7px;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .chip,\n .facts li {\n border: 1px solid color-mix(in srgb, CanvasText 14%, Canvas);\n border-radius: 999px;\n padding: 6px 9px;\n color: color-mix(in srgb, CanvasText 82%, Canvas);\n font-size: 12px;\n line-height: 1.2;\n }\n\n .chip.theme {\n border-color: color-mix(in srgb, #0f766e 34%, Canvas);\n background: color-mix(in srgb, #0f766e 8%, Canvas);\n }\n\n .chip.brand {\n border-color: color-mix(in srgb, #b45309 32%, Canvas);\n background: color-mix(in srgb, #b45309 8%, Canvas);\n }\n\n .profiles {\n display: grid;\n grid-template-columns: 1fr;\n }\n\n .profiles li {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 8px;\n align-items: center;\n border: 1px solid color-mix(in srgb, CanvasText 12%, Canvas);\n border-radius: 8px;\n padding: 9px 10px;\n }\n\n .profile-main {\n min-width: 0;\n }\n\n .profile-main strong,\n .profile-main span {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .profile-main strong {\n font-size: 13px;\n }\n\n .profile-main span {\n margin-top: 2px;\n color: color-mix(in srgb, CanvasText 58%, Canvas);\n font-size: 12px;\n }\n\n .profile-stat {\n color: color-mix(in srgb, CanvasText 66%, Canvas);\n font-size: 12px;\n text-align: right;\n white-space: nowrap;\n }\n\n @media (max-width: 420px) {\n main {\n padding: 14px;\n }\n\n .hero {\n grid-template-columns: 62px minmax(0, 1fr);\n }\n\n .avatar-frame {\n width: 62px;\n height: 62px;\n }\n\n .metrics {\n grid-template-columns: 1fr;\n }\n }\n </style>\n </head>\n <body>\n <main>\n <section class=\"hero\">\n <div class=\"avatar-frame\">\n <img class=\"avatar\" id=\"avatar\" alt=\"\" hidden />\n <span class=\"initials\" id=\"initials\">IF</span>\n </div>\n <div>\n <h1 id=\"name\">Creator preview</h1>\n <p class=\"tagline\" id=\"tagline\"></p>\n <p id=\"handle\"></p>\n </div>\n </section>\n <section class=\"metrics\" id=\"metrics\"></section>\n <section class=\"panel\" id=\"storyPanel\" hidden>\n <h2>Signal</h2>\n <p id=\"story\"></p>\n </section>\n <section class=\"panel\" id=\"audiencePanel\" hidden>\n <h2>Audience</h2>\n <p id=\"audience\"></p>\n </section>\n <section class=\"panel\" id=\"themePanel\" hidden>\n <h2>Content</h2>\n <ul class=\"chips\" id=\"themes\"></ul>\n </section>\n <section class=\"panel\" id=\"brandPanel\" hidden>\n <h2>Brand Fit</h2>\n <ul class=\"chips\" id=\"brands\"></ul>\n </section>\n <section class=\"panel\" id=\"factsPanel\" hidden>\n <h2>Notable</h2>\n <ul class=\"facts\" id=\"facts\"></ul>\n </section>\n <section class=\"panel\" id=\"profilesPanel\" hidden>\n <h2>Profiles</h2>\n <ul class=\"profiles\" id=\"profiles\"></ul>\n </section>\n </main>\n <script>\n const avatar = document.getElementById(\"avatar\");\n const initials = document.getElementById(\"initials\");\n const name = document.getElementById(\"name\");\n const handle = document.getElementById(\"handle\");\n const tagline = document.getElementById(\"tagline\");\n const metrics = document.getElementById(\"metrics\");\n const storyPanel = document.getElementById(\"storyPanel\");\n const story = document.getElementById(\"story\");\n const audiencePanel = document.getElementById(\"audiencePanel\");\n const audience = document.getElementById(\"audience\");\n const themePanel = document.getElementById(\"themePanel\");\n const themes = document.getElementById(\"themes\");\n const brandPanel = document.getElementById(\"brandPanel\");\n const brands = document.getElementById(\"brands\");\n const factsPanel = document.getElementById(\"factsPanel\");\n const facts = document.getElementById(\"facts\");\n const profilesPanel = document.getElementById(\"profilesPanel\");\n const profiles = document.getElementById(\"profiles\");\n\n function findCreator(output) {\n return output?.data?.creator ?? output?.data ?? output?.creator ?? output;\n }\n\n function findProfiles(output, creator) {\n return output?.data?.profiles ?? creator?.profiles ?? output?.profiles ?? [];\n }\n\n function compactNumber(value) {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return null;\n }\n return new Intl.NumberFormat(undefined, {\n maximumFractionDigits: value >= 1000 ? 1 : 0,\n notation: value >= 10000 ? \"compact\" : \"standard\",\n }).format(value);\n }\n\n function formatPercent(value) {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return null;\n }\n return value.toLocaleString(undefined, { maximumFractionDigits: value >= 10 ? 0 : 1 }) + \"%\";\n }\n\n function getFollowers(profile) {\n return profile?.followers ?? profile?.followers_count ?? profile?.follower_count ?? profile?.metrics?.followers;\n }\n\n function getEngagement(profile) {\n return profile?.engagement_rate ?? profile?.metrics?.engagement_rate;\n }\n\n function firstText(values) {\n return values.find((value) => typeof value === \"string\" && value.trim().length > 0)?.trim() ?? \"\";\n }\n\n function setList(list, items, className) {\n list.replaceChildren();\n for (const item of items.filter(Boolean).slice(0, 6)) {\n const element = document.createElement(\"li\");\n element.className = className;\n element.textContent = item;\n list.append(element);\n }\n }\n\n function setPanel(panel, hasContent) {\n panel.hidden = !hasContent;\n }\n\n function initialsFor(value) {\n const words = value.split(/\\s+/).filter(Boolean);\n return (words[0]?.[0] ?? \"I\") + (words[1]?.[0] ?? words[0]?.[1] ?? \"F\");\n }\n\n function setAvatar(creator, creatorName, profileList) {\n const imageUrl = firstText([\n creator?.avatar_url,\n creator?.avatar,\n creator?.image_url,\n profileList[0]?.avatar_url,\n profileList[0]?.image_url,\n ]);\n initials.textContent = initialsFor(creatorName).toUpperCase();\n avatar.hidden = true;\n initials.hidden = false;\n if (!imageUrl) {\n return;\n }\n avatar.onload = () => {\n avatar.hidden = false;\n initials.hidden = true;\n };\n avatar.onerror = () => {\n avatar.hidden = true;\n initials.hidden = false;\n };\n avatar.src = imageUrl;\n avatar.alt = creatorName;\n }\n\n function profileLabel(profile) {\n const platform = profile.platform ?? \"profile\";\n const username = profile.username ?? profile.handle ?? \"\";\n return username ? platform + \" @\" + username : platform;\n }\n\n function addMetric(label, value) {\n if (!value) {\n return;\n }\n const item = document.createElement(\"div\");\n item.className = \"metric\";\n const strong = document.createElement(\"strong\");\n strong.textContent = value;\n const span = document.createElement(\"span\");\n span.textContent = label;\n item.append(strong, span);\n metrics.append(item);\n }\n\n function renderMetrics(profileList) {\n metrics.replaceChildren();\n const primary = profileList[0] ?? {};\n addMetric(\"followers\", compactNumber(getFollowers(primary)));\n addMetric(\"engagement\", formatPercent(getEngagement(primary)));\n addMetric(\"posts / 30d\", compactNumber(primary.posts_last_30d ?? primary.metrics?.posts_last_30d));\n }\n\n function render(output) {\n const creator = findCreator(output);\n const creatorName = creator?.name ?? creator?.display_name ?? \"Creator preview\";\n const profileList = findProfiles(output, creator);\n const primaryProfile = profileList[0] ?? {};\n name.textContent = creatorName;\n tagline.textContent = firstText([creator?.ai_summary, creator?.summary]);\n handle.className = \"handle\";\n handle.textContent = primaryProfile.username ? profileLabel(primaryProfile) : \"\";\n setAvatar(creator, creatorName, profileList);\n renderMetrics(profileList);\n\n const storyText = firstText([creator?.vibe_and_aesthetics, creator?.bio]);\n story.textContent = storyText;\n setPanel(storyPanel, storyText.length > 0);\n\n const audienceText = firstText([creator?.audience_demographics, creator?.audience]);\n audience.textContent = audienceText;\n setPanel(audiencePanel, audienceText.length > 0);\n\n const themeItems = Array.isArray(creator?.content_themes) ? creator.content_themes : [];\n setList(themes, themeItems, \"chip theme\");\n setPanel(themePanel, themes.children.length > 0);\n\n const brandItems = Array.isArray(creator?.brand_alignment) ? creator.brand_alignment : [];\n setList(brands, brandItems, \"chip brand\");\n setPanel(brandPanel, brands.children.length > 0);\n\n const factItems = Array.isArray(creator?.key_facts) ? creator.key_facts : [];\n setList(facts, factItems, \"\");\n setPanel(factsPanel, facts.children.length > 0);\n\n profiles.replaceChildren();\n for (const profile of profileList.slice(0, 4)) {\n const item = document.createElement(\"li\");\n const main = document.createElement(\"div\");\n main.className = \"profile-main\";\n const title = document.createElement(\"strong\");\n title.textContent = profileLabel(profile);\n const detail = document.createElement(\"span\");\n detail.textContent = profile.category ?? profile.platform_category_name ?? (profile.is_verified ? \"verified\" : \"\");\n main.append(title, detail);\n const stat = document.createElement(\"div\");\n stat.className = \"profile-stat\";\n const followers = compactNumber(getFollowers(profile));\n const engagement = formatPercent(getEngagement(profile));\n stat.textContent = [followers && followers + \" followers\", engagement && engagement + \" ER\"].filter(Boolean).join(\" \u00b7 \");\n item.append(main, stat);\n profiles.append(item);\n }\n setPanel(profilesPanel, profiles.children.length > 0);\n }\n\n render(window.openai?.toolOutput);\n window.addEventListener(\n \"openai:set_globals\",\n (event) => render(event.detail?.globals?.toolOutput ?? window.openai?.toolOutput),\n { passive: true }\n );\n </script>\n </body>\n</html>",
"uri": "ui://influship/creator-preview.html"
}
]
}
},
"resource_uri": "ui://influship/creator-preview.html",
"url": "https://mcp.influship.com/mcp"
},
"latency_ms": 17.43,
"status": "ok"
},
"resources_list": {
"details": {
"headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 5,
"jsonrpc": "2.0",
"result": {
"resources": [
{
"_meta": {
"openai/widgetCSP": {
"connect_domains": [],
"resource_domains": [
"https://media.influship.com",
"https://pub-3370d4e4086448e68d392923ed3df2ce.r2.dev"
]
},
"openai/widgetDescription": "Shows a sampled Influship creator record with profile context.",
"openai/widgetDomain": "https://mcp.influship.com",
"openai/widgetPrefersBorder": true,
"ui": {
"csp": {
"connectDomains": [],
"resourceDomains": [
"https://media.influship.com",
"https://pub-3370d4e4086448e68d392923ed3df2ce.r2.dev"
]
},
"domain": "https://mcp.influship.com",
"prefersBorder": true
}
},
"description": "A compact creator profile preview for the Influship ChatGPT app.",
"mimeType": "text/html;profile=mcp-app",
"name": "creator-preview-widget",
"title": "Creator preview",
"uri": "ui://influship/creator-preview.html"
}
]
}
},
"url": "https://mcp.influship.com/mcp"
},
"latency_ms": 19.54,
"status": "ok"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.influship.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.influship.com/.well-known/mcp/server-card.json"
},
"latency_ms": 93.09,
"status": "error"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": true,
"scope_specificity_ratio": 0.2,
"step_up_signals": [],
"supported_scopes": [
"email",
"openid",
"phone",
"profile"
]
},
"latency_ms": null,
"status": "warning"
},
"tool_snapshot_probe": {
"details": {
"added": [],
"changed_outputs": [],
"current_tool_count": 14,
"previous_tool_count": 14,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"_meta": {
"openai/outputTemplate": "ui://influship/creator-preview.html",
"openai/securitySchemes": [
{
"type": "noauth"
}
],
"openai/toolInvocation/invoked": "Creator preview ready.",
"openai/toolInvocation/invoking": "Fetching creator preview...",
"securitySchemes": [
{
"type": "noauth"
}
],
"ui": {
"resourceUri": "ui://influship/creator-preview.html"
}
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Use this when a ChatGPT user wants to see what Influship can return before linking an account.\n\nFetches one configured sample creator with social profile context. This is a low-cost preview tool and should not be used for search, discovery, matching, or lookalike requests.\nAfter showing the preview, tell the user that real live creator data, search, lookalikes, matching, posts, and transcripts require connecting an Influship account. Explain that they can authorize either an Influship SaaS subscription, where usage counts against monthly bundled credits, or an Influship API account, where usage is billed pay-as-you-go under API billing.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_sample_creator",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"title": "Get sample creator"
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Find a creator by name/handle, while preserving legacy semantic creator search.\n\nUse this as the default creator lookup tool when the user gives a creator-ish string\nbut not a canonical creator UUID: a handle, partial handle, display name, creator name,\nor profile-ish text. This is cheap, fast, and backed by the creator lookup index.\n\nIf the user gives an exact handle on a specific platform (for example \"@niickjackson on\nInstagram\"), prefer `get_profile` first because it returns the full platform profile.\nIf you need to resolve a rough creator name or partial handle first, use this tool with\n`query_type: \"creator_lookup\"`.\n\nFor backward compatibility, this tool still accepts the old semantic-search fields\n(`platforms`, follower/engagement filters, `creator_kinds`) and routes legacy calls\nto the semantic endpoint unless the query clearly contains a handle/profile URL. For\nnew topical/niche discovery calls such as \"fitness creators in NYC\" or \"vegan recipe\ncreators with high engagement\", prefer `semantic_search_creators` because its name is\nexplicit and less likely to be confused with exact creator lookup.\n\nExamples:\n- User: \"Find @cris\" -> use this tool with query \"cris\" and query_type\n \"creator_lookup\".\n- User: \"Who is that fitness coach called Jane?\" -> use this tool with query \"Jane\"\n and query_type \"creator_lookup\".\n- User: \"Pull @niickjackson on Instagram\" -> use `get_profile` with platform\n \"instagram\" and username \"niickjackson\".\n- User: \"Find news creators with 1M+ followers\" -> use `semantic_search_creators`,\n not this tool.\n\nReturns either autocomplete-style creator lookup results or legacy semantic results,\ndepending on routing. Use returned creator IDs with `get_creator`,\n`find_lookalike_creators`, or `match_creators`; use returned platform usernames\nwith `get_profile` or `get_posts`.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
}
},
"properties": {
"creator_kinds": {
"description": "Optional creator kind filter. Omit for no creator-kind filter.",
"items": {
"enum": [
"INFLUENCER",
"THEME_PAGE"
],
"type": "string"
},
"minItems": 1,
"type": "array"
},
"limit": {
"default": 25,
"description": "Maximum results to return.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"max_engagement_rate": {
"description": "Maximum engagement rate as a percentage from 0 to 100.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"max_followers": {
"description": "Maximum follower count.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"min_engagement_rate": {
"description": "Minimum engagement rate as a percentage from 0 to 100.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"min_followers": {
"description": "Minimum follower count.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"platform": {
"allOf": [
{
"$ref": "#/definitions/Platform"
}
],
"description": "Optional platform to narrow username matching."
},
"platforms": {
"description": "Platforms to search. Omit for all.",
"items": {
"$ref": "#/definitions/Platform"
},
"type": "array"
},
"query": {
"description": "Natural-language semantic discovery query by topic, niche, audience, geography, or content style. Do not pass exact handles or usernames here; use get_profile, lookup_profiles, or autocomplete_creators instead.",
"maxLength": 500,
"minLength": 1,
"type": "string"
},
"query_type": {
"default": "auto",
"description": "Use creator_lookup for specific names/handles and semantic_discovery for topical/niche discovery. Auto routes exact handles and profile URLs to lookup, and keeps legacy semantic-search behavior otherwise.",
"enum": [
"auto",
"creator_lookup",
"semantic_discovery"
],
"type": "string"
},
"scope": {
"default": "all_platforms",
"description": "Which linked platforms to include in each lookup result.",
"enum": [
"creator_only",
"matched_platforms",
"all_platforms"
],
"type": "string"
},
"verified": {
"description": "When set, only return verified or unverified creators.",
"type": "boolean"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_creators",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Semantic discovery search for influencers/content creators using natural-language queries.\n\nUse this only when the user asks to discover creators by topic, audience, geography,\nniche, content style, or campaign criteria (e.g., \"fitness creators in NYC\", \"vegan\nrecipe creators with high engagement\", \"tech reviewers who cover phones\"). The query\nis matched against creator profiles, extracted facts, and visual style via hybrid\nvector search.\n\nDo not use this for exact handles, usernames, or known creator names. If the user gives\na specific platform and handle (for example \"@niickjackson on Instagram\"), use\n`get_profile` first. For rough name/handle lookup, use `search_creators`. For\nmultiple known handles, use `lookup_profiles`. Semantic search can return lookalike\nor topical matches and is allowed to miss an exact username.\n\nExamples:\n- User: \"Find news creators with 1M+ followers\" -> use this tool.\n- User: \"Find creators in LA who make cinematic travel videos\" -> use this tool.\n- User: \"Pull @niickjackson on Instagram\" -> use `get_profile`, not this tool.\n- User: \"Is @niickjackson a fit for Pixel?\" -> use `get_profile` first, optionally\n `get_posts`, then `match_creators`.\n\nReturns a ranked list of creators (id, platform, username, follower count, engagement\nrate, top categories, evidence facts). Use the flat follower, engagement-rate, and\nverified fields to constrain results when the user gives concrete numeric constraints.\n\nUse `find_lookalike_creators` instead when you want creators SIMILAR to known ones.\nUse `match_creators` when you want to SCORE specific creators against a brief.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
}
},
"properties": {
"creator_kinds": {
"description": "Optional creator kind filter. Omit for no creator-kind filter.",
"items": {
"enum": [
"INFLUENCER",
"THEME_PAGE"
],
"type": "string"
},
"minItems": 1,
"type": "array"
},
"limit": {
"default": 25,
"description": "Maximum results to return.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"max_engagement_rate": {
"description": "Maximum engagement rate as a percentage from 0 to 100.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"max_followers": {
"description": "Maximum follower count.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"min_engagement_rate": {
"description": "Minimum engagement rate as a percentage from 0 to 100.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"min_followers": {
"description": "Minimum follower count.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"platforms": {
"description": "Platforms to search. Omit for all.",
"items": {
"$ref": "#/definitions/Platform"
},
"type": "array"
},
"query": {
"description": "Natural-language semantic discovery query by topic, niche, audience, geography, or content style. Do not pass exact handles or usernames here; use get_profile, lookup_profiles, or autocomplete_creators instead.",
"maxLength": 500,
"minLength": 1,
"type": "string"
},
"verified": {
"description": "When set, only return verified or unverified creators.",
"type": "boolean"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "semantic_search_creators",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Autocomplete creator names, usernames, or display names from partial input.\n\nUse this for fast lookup when the user types a partial handle or name and you need to\nresolve it to canonical creator IDs (e.g., \"find @cris\" or \"who's that fitness coach\ncalled Jane?\"). Cheap and fast \u2014 prefer over `search_creators` for handle-style\nqueries where the user already knows roughly who they want.\n\nUse `get_profile` instead when the user gives an exact platform+username pair. Use\n`search_creators` for the same fuzzy creator lookup behavior with a less typeahead-\nspecific name. Use `semantic_search_creators` only for discovery by topic, niche,\naudience, geography, or content style, not for resolving a known creator.\n\nExamples:\n- User: \"Who is that fitness coach called Jane?\" -> use this tool.\n- User: \"Find @cris...\" -> use this tool to resolve the partial handle.\n- User: \"Pull @niickjackson on Instagram\" -> use `get_profile`, not this tool.\n\nReturns a short list of matching creators with their IDs, platforms, and display names.\nUse the IDs returned here as input to `get_creator`, `find_lookalike_creators`, or\n`match_creators` for downstream operations.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
}
},
"properties": {
"limit": {
"default": 5,
"description": "Maximum results to return",
"example": 5,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"platform": {
"allOf": [
{
"$ref": "#/definitions/Platform"
}
],
"description": "Filter by platform"
},
"q": {
"description": "Search query (min 2 characters)",
"example": "fitness",
"maxLength": 100,
"minLength": 2,
"type": "string"
},
"scope": {
"default": "all_platforms",
"description": "Which platforms to include in results",
"enum": [
"creator_only",
"matched_platforms",
"all_platforms"
],
"example": "all_platforms",
"type": "string"
}
},
"required": [
"q"
],
"type": "object"
},
"name": "autocomplete_creators",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Find creators SIMILAR to one or more seed creators.\n\nUse this when the user already knows a creator they like and wants more like them\n(e.g., \"find creators like @therock\", \"find more creators like these three I just\nbooked\"). Seeds are blended via creator-profile + visual-style + fact embeddings to\nsurface similar accounts.\n\nSeeds are passed in `seed_creator_ids` (canonical UUIDs) and/or `seed_profiles`\n(platform + username; resolve handles via `autocomplete_creators` first if needed).\nReturns a ranked list of similar creators with scores. `limit` caps results\n(default 25, max 100). Use the flat follower, engagement-rate, and verified fields\nto constrain results.\n\nUse `semantic_search_creators` instead when you have a topic/niche but no seed.\nUse `match_creators` when you have specific candidates and want to score their fit\nagainst a brief.\n\nExamples:\n- User: \"Find creators like @niickjackson on Instagram\" -> use this tool with\n `seed_profiles: [{ platform: \"instagram\", username: \"niickjackson\" }]`.\n- User: \"Find news creators with 1M+ followers\" -> use `semantic_search_creators`,\n not this tool.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
}
},
"properties": {
"cursor": {
"description": "Pagination cursor from a previous response.",
"type": "string"
},
"limit": {
"default": 25,
"description": "Maximum results to return.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"max_engagement_rate": {
"description": "Maximum engagement rate as a percentage from 0 to 100.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"max_followers": {
"description": "Maximum follower count.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"min_engagement_rate": {
"description": "Minimum engagement rate as a percentage from 0 to 100.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"min_followers": {
"description": "Minimum follower count.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"seed_creator_ids": {
"description": "Seed creators identified by canonical Influship creator UUID.",
"items": {
"additionalProperties": false,
"properties": {
"creator_id": {
"description": "Canonical Influship creator UUID.",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"weight": {
"default": 1,
"description": "Relative seed weight from 0 to 1. Omit for the default weight of 1.",
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"required": [
"creator_id"
],
"type": "object"
},
"maxItems": 10,
"type": "array"
},
"seed_profiles": {
"description": "Seed creators identified by platform and username.",
"items": {
"additionalProperties": false,
"properties": {
"platform": {
"allOf": [
{
"$ref": "#/definitions/Platform"
}
],
"description": "Social platform for the username."
},
"username": {
"description": "Platform username or handle without the @ sign.",
"maxLength": 50,
"minLength": 1,
"type": "string"
},
"weight": {
"default": 1,
"description": "Relative seed weight from 0 to 1. Omit for the default weight of 1.",
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"required": [
"platform",
"username"
],
"type": "object"
},
"maxItems": 10,
"type": "array"
},
"verified": {
"description": "When set, only return verified or unverified creators.",
"type": "boolean"
}
},
"type": "object"
},
"name": "find_lookalike_creators",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Score how well specific creators fit a campaign brief or search intent.\n\nUse this when the user already has candidate creators in mind and wants to evaluate\nfit (e.g., \"rate these 5 creators for a vegan cookbook launch\", \"which of these is\nthe best match for my crypto audience?\"). For each creator the API returns a match\nscore (0-1), a good/neutral/avoid decision, and structured reasons.\n\nPass candidates in `creator_ids` (canonical UUIDs) and/or `profiles`\n(platform + username). `intent_query` is the brief the LLM reasons against;\n`intent_context` is optional extra context (target audience, brand values,\nprior collabs).\n\nUse `semantic_search_creators` when you don't have candidates yet and need topical\nor niche discovery. Use `search_creators` first when you only need to resolve rough\ncreator names/handles into candidates.\nUse `find_lookalike_creators` when you want creators similar to known good fits.\n\nExamples:\n- User: \"Is @niickjackson a fit for Pixel?\" -> use this tool after resolving the\n exact Instagram profile with `get_profile`; call `get_posts` first if recent\n content context is needed.\n- User: \"Rate these five creators for a vegan cookbook launch\" -> use this tool.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
}
},
"properties": {
"creator_ids": {
"description": "Candidate creators identified by canonical Influship creator UUID.",
"items": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"maxItems": 100,
"type": "array"
},
"intent_context": {
"description": "Optional extra campaign context, audience, brand values, or prior collabs.",
"maxLength": 2000,
"type": "string"
},
"intent_query": {
"description": "Campaign brief or matching intent.",
"maxLength": 500,
"minLength": 1,
"type": "string"
},
"profiles": {
"description": "Candidate creators identified by platform and username.",
"items": {
"additionalProperties": false,
"properties": {
"platform": {
"allOf": [
{
"$ref": "#/definitions/Platform"
}
],
"description": "Social platform for the username."
},
"username": {
"description": "Platform username or handle without the @ sign.",
"maxLength": 50,
"minLength": 1,
"type": "string"
}
},
"required": [
"platform",
"username"
],
"type": "object"
},
"maxItems": 100,
"type": "array"
}
},
"required": [
"intent_query"
],
"type": "object"
},
"name": "match_creators",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Fetch the full record for a single creator by ID or exact platform username.\n\nUse this when you already have either:\n- a canonical creator UUID returned by `search_creators`,\n `semantic_search_creators`, `autocomplete_creators`, or\n `find_lookalike_creators`; or\n- an exact platform+username pair such as platform \"instagram\" and username\n \"niickjackson\".\n\nPass `include: ['profiles']` to also receive the creator's social profile\nsummaries when using a creator UUID. For platform+username inputs, this tool resolves\nthrough the profile endpoint and returns the profile record plus the underlying creator\nrecord, so you already get the matched profile context.\n\nExamples:\n- User: \"Get creator 123e4567-e89b-12d3-a456-426614174000\" -> call with id.\n- User: \"Get @niickjackson on Instagram\" -> call with platform \"instagram\" and\n username \"niickjackson\", or use `get_profile` if profile metrics are the main need.\n- User: \"Tell me about @niickjackson and include his profiles\" -> use platform\n \"instagram\" and username \"niickjackson\"; then use `get_profile`/`get_posts` for\n platform-specific metrics and content if needed.\n\nUse `lookup_profiles` for batch exact profile lookups.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
}
},
"properties": {
"id": {
"description": "Creator unique identifier",
"example": "123e4567-e89b-12d3-a456-426614174000",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"include": {
"description": "Additional data to include in response",
"example": [
"profiles"
],
"items": {
"enum": [
"profiles"
],
"type": "string"
},
"type": "array"
},
"platform": {
"allOf": [
{
"$ref": "#/definitions/Platform"
}
],
"description": "Social platform for the username."
},
"username": {
"description": "Platform username or handle without the @ sign.",
"maxLength": 50,
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "get_creator",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Fetch a single social profile by (platform, username).\n\nAlways use this first when the user gives an exact handle on a specific platform\n(for example \"@niickjackson on Instagram\") and you need the full profile: bio,\nfollower/engagement metrics, recent activity, growth, and the canonical creator ID.\nPass exactly the username they typed without the @ sign \u2014 case-insensitive matching is\nhandled server-side. Do not use `search_creators` for an exact platform+username\nlookup.\n\nExamples:\n- User: \"Pull @niickjackson on Instagram\" -> use this tool with platform\n \"instagram\" and username \"niickjackson\".\n- User: \"Tell me about instagram.com/niickjackson\" -> parse the platform and\n username, then use this tool.\n- User: \"Is @niickjackson a fit for Pixel?\" -> use this tool first, then call\n `get_posts` and/or `match_creators` if the task needs content or fit analysis.\n\nReturns the profile record plus the underlying creator record. If you already have a\ncreator UUID, use `get_creator` instead. For batch lookups by handle, use\n`lookup_profiles`.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
}
},
"properties": {
"platform": {
"allOf": [
{
"$ref": "#/definitions/Platform"
}
],
"description": "Social platform for the username."
},
"username": {
"description": "Platform username or handle without the @ sign.",
"maxLength": 50,
"minLength": 1,
"type": "string"
}
},
"required": [
"platform",
"username"
],
"type": "object"
},
"name": "get_profile",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Batch-fetch up to 100 profiles by (platform, username) pairs.\n\nUse this when the user has a list of handles and you need profile data for all of\nthem at once (e.g., \"give me follower counts for these 30 accounts I'm considering\"\nor \"which of @a @b @c are real accounts?\"). One round-trip beats 30 calls to\n`get_profile`.\n\nUse this for exact batch handle lookup, not semantic discovery. For one exact\nplatform+username pair, use `get_profile`. For partial or fuzzy handle/name input,\nuse `search_creators` or `autocomplete_creators`. Use\n`semantic_search_creators` only for topical/niche/audience discovery where\nfalse-positive semantic matches are acceptable.\n\nExamples:\n- User: \"Compare @a, @b, and @c on Instagram\" -> use this tool for the exact\n handle batch.\n- User: \"Give me follower counts for these 30 accounts\" -> use this tool.\n- User: \"Find wellness creators in Austin\" -> use `semantic_search_creators`, not\n this tool.\n\nThe response splits results into `data` (profiles found) and `not_found` (the\n(platform, username) pairs that weren't recognized). Profiles are returned in no\nparticular order \u2014 re-correlate via the platform/username fields if you need to\npreserve input order.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
},
"ProfileLookupItem": {
"properties": {
"platform": {
"$ref": "#/definitions/Platform"
},
"username": {
"description": "Username to lookup",
"example": "fitness_coach_jane",
"maxLength": 50,
"minLength": 1,
"type": "string"
}
},
"required": [
"platform",
"username"
],
"type": "object"
}
},
"description": "Batch lookup profiles request",
"examples": [
{
"profiles": [
{
"platform": "instagram",
"username": "fitness_coach_jane"
},
{
"platform": "instagram",
"username": "wellness_guru"
},
{
"platform": "instagram",
"username": "healthy_eating_tips"
}
]
}
],
"properties": {
"profiles": {
"description": "Profiles to lookup",
"items": {
"$ref": "#/definitions/ProfileLookupItem"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
}
},
"required": [
"profiles"
],
"type": "object"
},
"name": "lookup_profiles",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Fetch a creator's posts, sorted and paginated.\n\nUse this when the user asks to see what a creator has posted (e.g., \"show me Jane's\nlast 20 posts\", \"what are this creator's top-engagement reels?\", \"pull recent posts\nfrom creator-id ABC\"). Identify the creator by either `creator_id` (UUID) OR\n(`platform` + `username`).\n\n`sort` defaults to \"recent\" (newest first); use \"top_engagement\" for the highest-\nengagement posts, or one of \"most_likes\" / \"most_views\" / \"most_comments\" for a\nspecific metric. `limit` defaults to 12 and is capped at 50. Pass `cursor` from a\nprevious response's `next_cursor` to paginate.\n\nReturns post records (caption, media URL, like/comment/view counts, timestamps),\nplus `has_more` and `next_cursor` for pagination.\n\nExamples:\n- User: \"Show @niickjackson's recent Instagram posts\" -> use this tool with\n platform \"instagram\" and username \"niickjackson\".\n- User: \"Is @niickjackson a fit for Pixel?\" -> use this after `get_profile` when\n the fit analysis needs recent content evidence, then call `match_creators`.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"Platform": {
"description": "Social media platform",
"enum": [
"instagram"
],
"example": "instagram",
"type": "string"
},
"PostSort": {
"description": "Sort order for posts",
"enum": [
"recent",
"top_engagement",
"most_likes",
"most_views",
"most_comments"
],
"example": "recent",
"type": "string"
}
},
"properties": {
"creator_id": {
"description": "Creator ID (use this OR platform+username)",
"example": "123e4567-e89b-12d3-a456-426614174000",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"cursor": {
"description": "Pagination cursor for next page",
"type": "string"
},
"limit": {
"default": 12,
"description": "Maximum posts to return",
"example": 12,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"platform": {
"allOf": [
{
"$ref": "#/definitions/Platform"
}
],
"description": "Platform (required with username)"
},
"sort": {
"allOf": [
{
"$ref": "#/definitions/PostSort"
}
],
"default": "recent",
"description": "Sort order"
},
"username": {
"description": "Username (required with platform)",
"example": "fitness_coach_jane",
"maxLength": 50,
"minLength": 1,
"type": "string"
}
},
"type": "object"
},
"name": "get_posts",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Fetch raw Instagram post-page data by shortcode.\n\nUse this when the user needs fresh raw Instagram post metadata that is not\nguaranteed on regular cached post-list endpoints yet, including coauthors,\ntagged users, paid partnership metadata, product mentions, music attribution,\nlocation, display resources, and video versions.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"shortcode": {
"description": "Instagram post shortcode from a /p/, /reel/, or /tv/ URL",
"minLength": 1,
"type": "string"
}
},
"required": [
"shortcode"
],
"type": "object"
},
"name": "get_instagram_post",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Fetch raw Instagram post-page data for a bounded list of shortcodes through the raw API.\n\nReturns one item per requested shortcode with per-item success or error details.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"shortcodes": {
"description": "Instagram post shortcodes from /p/, /reel/, or /tv/ URLs",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
}
},
"required": [
"shortcodes"
],
"type": "object"
},
"name": "get_instagram_posts",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Transcribe an Instagram video post by shortcode through the raw API.\n\nFor now this retranscribes every request. Cached transcript reads are planned as\na follow-up, and public pricing is intended to stay the same for live and cached\ntranscript delivery.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"language": {
"description": "Optional transcript language code. Omit to auto-detect.",
"minLength": 2,
"type": "string"
},
"shortcode": {
"description": "Instagram post shortcode from a /p/, /reel/, or /tv/ URL",
"minLength": 1,
"type": "string"
}
},
"required": [
"shortcode"
],
"type": "object"
},
"name": "get_instagram_post_transcript",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"_meta": {
"openai/securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
],
"securitySchemes": [
{
"scopes": [
"email",
"profile"
],
"type": "oauth2"
}
]
},
"annotations": {
"destructiveHint": false,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Transcribe a bounded list of Instagram video posts by shortcode through the raw API.\n\nFor now this retranscribes every request. Successful items include the raw post\ndata used for transcription.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"language": {
"description": "Optional transcript language code. Omit to auto-detect.",
"minLength": 2,
"type": "string"
},
"shortcodes": {
"description": "Instagram video post shortcodes from /p/, /reel/, or /tv/ URLs",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
},
"required": [
"shortcodes"
],
"type": "object"
},
"name": "get_instagram_post_transcripts",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {},
"properties": {
"count": {
"type": "number"
},
"data": {},
"has_more": {
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"not_found": {
"items": {},
"type": "array"
},
"ok": {
"type": "boolean"
},
"results": {
"items": {},
"type": "array"
},
"suggested_followups": {
"items": {
"additionalProperties": false,
"properties": {
"reason": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"reason"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
}
]
}
},
"url": "https://mcp.influship.com/mcp"
},
"latency_ms": 31.14,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 21.67,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": {
"type": "resource",
"uri": "ui://influship/creator-preview.html"
}
},
"initialize_capability_keys": [
"resources",
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 22.68,
"status": "missing"
}
},
"failures": {
"server_card": {
"error": "Client error '404 Not Found' for url 'https://mcp.influship.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.influship.com/.well-known/mcp/server-card.json"
}
},
"remote_url": "https://mcp.influship.com/mcp",
"server_card_payload": null,
"server_identifier": "Influship/influship-mcp"
}
Known versions
- No versions recorded.
Validation history
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| May 28, 2026 02:17:57 PM UTC | Healthy | 76.1 | 9767.4 ms | 14 |
| May 28, 2026 02:16:58 AM UTC | Healthy | 72.9 | 662.5 ms | 0 |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| May 28, 2026 02:17:57 PM UTC | Healthy | 76.1 | 2025-03-26 | oauth_supported | 14 | 5 | auth_mode_changed write_surface_expanded tool_snapshot_changed |
| May 28, 2026 02:16:58 AM UTC | Healthy | 72.9 | unknown | unknown | 0 | 0 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| May 28, 2026 02:17:47 PM UTC | Completed | Healthy | 9767.4 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| May 28, 2026 02:16:57 AM UTC | Completed | Healthy | 662.5 ms | |