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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:0905107e32d9f9231d1d94d9d477aacbc1694d60bb83a6edab3fe416bf1418f8 | sha256sum