Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,561Letters: 14Defects: 1,336counted just now
teppi

Server definition

Hash
sha256:0905107e32d9f9231d1d94d9d477aacbc1694d60bb83a6edab3fe416bf1418f8
What it is
What a remote MCP server returned when asked what it offers: 11 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "UPSERTS marketing contacts (creates new ones, updates existing ones by email) and optionally adds them to lists. This is an ASYNC job — returns { job_id } you can poll. SendGrid: PUT /v3/marketing/contacts.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "contacts": { "description": "Contacts to add or update (each needs an `email`; custom fields pass through).", "items": { "additionalProperties": {}, "description": "A marketing contact. `email` is required; first_name/last_name are optional. Any additional keys are passed through as custom-field values (use the custom field's id or reserved name as the key).", "properties": { "email": { "description": "Contact email address (required — the primary identifier for the contact).", "type": "string" }, "first_name": { "description": "Contact first name.", "type": "string" }, "last_name": { "description": "Contact last name.", "type": "string" } }, "required": [ "email" ], "type": "object" }, "minItems": 1, "type": "array" }, "list_ids": { "description": "List ids to add these contacts to.", "items": { "type": "string" }, "type": "array" } }, "required": [ "contacts" ], "type": "object" }, "name": "sendgrid_add_or_update_contacts", "outputSchema": null }, { "description": "Get the total number of Marketing Campaigns contacts on your account. Returns { contact_count, billable_count }. SendGrid: GET /v3/marketing/contacts/count.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "sendgrid_get_contact_count", "outputSchema": null }, { "description": "Get global email statistics over a date range (delivered, opens, clicks, bounces, spam reports, etc.). Returns an array of { date, stats: [{ metrics: {...} }] }. SendGrid: GET /v3/stats.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "aggregated_by": { "description": "How to group the returned statistics.", "enum": [ "day", "week", "month" ], "type": "string" }, "end_date": { "description": "End date in YYYY-MM-DD format (defaults to today).", "type": "string" }, "limit": { "description": "Number of results to return.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "offset": { "description": "Number of results to skip (for pagination).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "start_date": { "description": "Start date in YYYY-MM-DD format (required).", "type": "string" } }, "required": [ "start_date" ], "type": "object" }, "name": "sendgrid_get_stats", "outputSchema": null }, { "description": "Get a single transactional email template by id, including its versions (subject + content). SendGrid: GET /v3/templates/{template_id}.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "template_id": { "description": "The template id (dynamic template ids start with \"d-\").", "type": "string" } }, "required": [ "template_id" ], "type": "object" }, "name": "sendgrid_get_template", "outputSchema": null }, { "description": "List bounced email addresses (the bounce suppression list). Returns an array of { created, email, reason, status }. SendGrid: GET /v3/suppression/bounces.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "email": { "description": "Filter to a specific bounced email address.", "type": "string" }, "end_time": { "description": "End of the time range, as a Unix timestamp (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "limit": { "description": "Number of bounces to return (1–500).", "maximum": 500, "minimum": 1, "type": "integer" }, "offset": { "description": "Number of bounces to skip (for pagination).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "start_time": { "description": "Start of the time range, as a Unix timestamp (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "type": "object" }, "name": "sendgrid_list_bounces", "outputSchema": null }, { "description": "List globally-unsubscribed email addresses (the global suppression list). Returns an array of { created, email }. SendGrid: GET /v3/suppression/unsubscribes.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "end_time": { "description": "End of the time range, as a Unix timestamp (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "limit": { "description": "Number of records to return.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "offset": { "description": "Number of records to skip (for pagination).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "start_time": { "description": "Start of the time range, as a Unix timestamp (seconds).", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" } }, "type": "object" }, "name": "sendgrid_list_global_unsubscribes", "outputSchema": null }, { "description": "List your Marketing Campaigns contact lists, each with its id, name, and contact_count. Returns { result: [...], _metadata }. SendGrid: GET /v3/marketing/lists.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page_size": { "default": 100, "description": "Number of lists per page (1–1000, default 100).", "maximum": 1000, "minimum": 1, "type": "integer" }, "page_token": { "description": "Pagination token from a previous response's _metadata.", "type": "string" } }, "type": "object" }, "name": "sendgrid_list_marketing_lists", "outputSchema": null }, { "description": "List your transactional email templates (Dynamic and/or Legacy). Returns { result: [...], _metadata } — use _metadata.next / page_token to paginate. SendGrid: GET /v3/templates.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "generations": { "default": "dynamic", "description": "Which template generation(s) to return (default: dynamic).", "enum": [ "legacy", "dynamic", "legacy,dynamic" ], "type": "string" }, "page_size": { "default": 50, "description": "Number of templates per page (1–200, default 50).", "maximum": 200, "minimum": 1, "type": "integer" }, "page_token": { "description": "Pagination token from a previous response's _metadata.", "type": "string" } }, "type": "object" }, "name": "sendgrid_list_templates", "outputSchema": null }, { "description": "Health check — verifies the API key works and returns the scopes (permissions) granted to it. SendGrid: GET /v3/scopes.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "sendgrid_ping", "outputSchema": null }, { "description": "Look up marketing contacts by exact email address (a read-only lookup — mutates nothing). Returns { result: { \"<email>\": { contact: {...} } } }. SendGrid: POST /v3/marketing/contacts/search/emails.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "emails": { "description": "One or more exact email addresses to look up.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "emails" ], "type": "object" }, "name": "sendgrid_search_contacts_by_email", "outputSchema": null }, { "description": "SENDS A REAL EMAIL immediately via SendGrid. Provide `from_email` and one or more `to` recipients, plus EITHER a subject + content OR a `template_id` (dynamic template ids start with \"d-\", pass values via dynamic_template_data). Returns { status: \"accepted\", message_id }. SendGrid: POST /v3/mail/send.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "bcc": { "description": "BCC recipient email addresses.", "items": { "type": "string" }, "type": "array" }, "cc": { "description": "CC recipient email addresses.", "items": { "type": "string" }, "type": "array" }, "content": { "description": "The email body. Required unless template_id is provided.", "type": "string" }, "content_type": { "default": "text/html", "description": "MIME type of the body content (default text/html).", "enum": [ "text/plain", "text/html" ], "type": "string" }, "dynamic_template_data": { "additionalProperties": {}, "description": "Key/value data merged into a dynamic template's handlebars variables.", "propertyNames": { "type": "string" }, "type": "object" }, "from_email": { "description": "Sender email address (must be a verified sender/domain).", "type": "string" }, "from_name": { "description": "Sender display name.", "type": "string" }, "reply_to": { "description": "Reply-To email address.", "type": "string" }, "subject": { "description": "Email subject line. Required unless a template_id supplies it.", "type": "string" }, "template_id": { "description": "A template id to render (dynamic template ids start with \"d-\"). When set, `content` is omitted.", "type": "string" }, "to": { "description": "One or more recipient email addresses.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "from_email", "to" ], "type": "object" }, "name": "sendgrid_send_mail", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:0905107e32d9f9231d1d94d9d477aacbc1694d60bb83a6edab3fe416bf1418f8 | sha256sum