Server definition
- Hash
- sha256:fc8f8554d51e937307a2e101092e0c568e913bbf3e6100837ebd61a13339d65d
- What it is
- What a remote MCP server returned when asked what it offers: 21 tools
The blob, as servednamed by its sha256
{
"instructions": "Tools for website speed, web-app security and software decisions, from 7IT Solutions (a solo senior software studio). Store speed: test any site or online store on a phone, and the weekly US Store Speed Index benchmark. App security: check a web app for missing security headers, and a deep scan for exposed files on an app you control (ownership is verified first). Email: check a domain’s SPF, DKIM and DMARC for spam and spoofing. AI shoppers: check whether AI shopping agents can read a store’s products. Accessibility: automated WCAG checks with a score. Agent oversight: sort an MCP server’s or an agent’s tools into what may run alone, what needs a person’s approval and what a person must do, with Claude Code permission rules. Each is compared with 7IT’s published study of US online stores. Automation: estimate what repetitive work costs and what automating it returns. Reference: working checklists (Field Kits) and guides on custom software, Shopify and WooCommerce, integrations, AI in production. Studio: who 7IT is, when it fits, and questions for Lior Aharonov. 7Maps (the map of public MCP servers): find_tool finds an MCP tool for a job, with an automated risk estimate for each tool; owners of an MCP server can put it on the map with submit_mcp_server, verify it with claim_mcp_server and see what agents looked for with my_server_report; my_7maps_usage shows a person with a personal 7Maps key what 7Maps did for them. All tools are read-only except report_problem, report_road, submit_mcp_server and claim_mcp_server, which only send feedback, a report or a request to 7IT. Data tools return a report_url with the full result; research data is aggregate and names no store. Also available: five Agent Skills (pre-launch security check, store speed review and three checklists), three prompts, every checklist and the research datasets as resources.",
"tools": [
{
"description": "Use this when the user has a specific question for 7IT that describe_studio does not answer. Ask 7IT Solutions, a solo senior software studio, a question about whether it fits a project, what a first phase could cover, how engagements run, or what the client owns. Answers come only from 7IT's published profile and contain no prices or commitments; questions that need a quote are passed to Lior Aharonov, who replies himself.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"question": {
"description": "The question, in plain words. Include the business context that matters, for example the platform, the systems involved or what the app does.",
"maxLength": 1000,
"minLength": 5,
"type": "string"
}
},
"required": [
"question"
],
"type": "object"
},
"name": "ask_7it",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"answer": {
"description": "Answer from the published profile, or null when it was forwarded without one",
"type": [
"string",
"null"
]
},
"contact": {
"type": "string"
},
"forwarded_to_founder": {
"type": "boolean"
}
},
"required": [
"answer",
"forwarded_to_founder",
"contact"
],
"type": "object"
}
},
{
"description": "Use this when someone asks whether a website or online store is accessible, meets WCAG, or could face an ADA accessibility complaint. Runs Google Lighthouse's automated accessibility checks (axe-core rules) on the page as a phone sees it, and returns the score, each failing rule in plain English with its WCAG criterion and how many elements fail, and how the site compares with 7IT's study of US online stores. Automated checks cover only part of WCAG; this is a starting point, not a legal opinion. Takes 20 to 60 seconds.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"url": {
"description": "The page to check, for example example.com or a product page address",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_accessibility",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"benchmark": {
"anyOf": [
{
"additionalProperties": {},
"properties": {
"stores": {
"type": "number"
},
"study": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"study",
"url"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "The 7IT study this is compared with"
},
"better_than_share": {
"description": "Share of the US store sample that scored lower",
"type": [
"number",
"null"
]
},
"host": {
"type": "string"
},
"issues": {
"items": {
"additionalProperties": {},
"properties": {
"elements": {
"type": "number"
},
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"wcag": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"label",
"wcag",
"elements"
],
"type": "object"
},
"type": "array"
},
"report_url": {
"description": "Shareable report",
"type": "string"
},
"score": {
"description": "Lighthouse accessibility score, 0 to 100",
"type": [
"number",
"null"
]
}
},
"required": [
"report_url"
],
"type": "object"
}
},
{
"description": "Use this when someone asks whether ChatGPT, Claude, Perplexity or other AI shopping agents can find, read and recommend their online store's products. Checks what robots.txt tells AI search crawlers versus training-only crawlers, llms.txt, agents.md, the UCP commerce discovery file, and one product page's structured data (price, currency, stock, brand, GTIN or SKU, reviews, shipping and returns). Returns the gaps with fixes, compared with 7IT's study of US online stores. Uses an identified crawler that respects robots.txt.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"product_url": {
"description": "A product page on the same store to test; otherwise one is found from the home page",
"maxLength": 300,
"type": "string"
},
"url": {
"description": "The store, for example shop.example.com",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_ai_shopper_readiness",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"agents_md": {
"type": "boolean"
},
"benchmark": {
"anyOf": [
{
"additionalProperties": {},
"properties": {
"stores": {
"type": "number"
},
"study": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"study",
"url"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "The 7IT study this is compared with"
},
"blocks_ai_search": {
"description": "AI search and shopping crawlers robots.txt blocks",
"items": {
"type": "string"
},
"type": "array"
},
"fixes": {
"description": "What to fix, most important first",
"items": {
"additionalProperties": {},
"properties": {
"fix": {
"type": "string"
},
"id": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"id",
"severity",
"fix"
],
"type": "object"
},
"type": "array"
},
"host": {
"type": "string"
},
"llms_txt": {
"type": "boolean"
},
"product_data_complete": {
"type": "boolean"
},
"product_fields": {
"items": {
"additionalProperties": {},
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"present": {
"type": "boolean"
}
},
"required": [
"key",
"label",
"present"
],
"type": "object"
},
"type": "array"
},
"readable": {
"description": "False if the store refused or disallows identified crawlers",
"type": "boolean"
},
"report_url": {
"description": "Shareable report",
"type": "string"
},
"ucp": {
"type": "boolean"
}
},
"required": [
"report_url"
],
"type": "object"
}
},
{
"description": "Use this when someone asks whether a website or web app is secure, safe to launch, or missing security headers. Not a penetration test, and it cannot see pages behind a login. Checks a public web app for the baseline browser protections every production app should send (Content Security Policy, HTTPS enforcement, clickjacking protection, MIME-sniffing, referrer and permissions policy, cross-origin isolation) and whether a JavaScript source map is served publicly. Reads only the public response headers any visitor's browser receives; never logs in, submits a form, calls the app's APIs, or reads its data for secrets. Useful for an app built with an AI tool (Lovable, Replit, Bolt, v0, Cursor).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"url": {
"description": "The app’s public web address, for example myapp.com or https://myapp.lovable.app",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_app_security",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"grade": {
"enum": [
"strong",
"partial",
"weak"
],
"type": "string"
},
"https": {
"type": "boolean"
},
"missing": {
"items": {
"type": "string"
},
"type": "array"
},
"present": {
"description": "How many of the baseline protections are in place",
"type": "number"
},
"reachable": {
"type": "boolean"
},
"report_url": {
"description": "Shareable report with fixes",
"type": "string"
},
"signals": {
"description": "Each protection, whether it is present, and why it matters",
"items": {
"additionalProperties": {},
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"present": {
"type": "boolean"
},
"why": {
"type": "string"
}
},
"required": [
"key",
"label",
"present",
"why"
],
"type": "object"
},
"type": "array"
},
"source_map_public": {
"description": "True if the app publishes a JavaScript source map",
"type": "boolean"
},
"total": {
"description": "How many baseline protections were checked",
"type": "number"
},
"url": {
"type": "string"
}
},
"required": [
"reachable",
"report_url"
],
"type": "object"
}
},
{
"description": "Use this when someone asks why their emails land in spam, whether their domain is protected from spoofing or phishing in their name, or whether they meet the Gmail, Yahoo and Outlook rules for bulk senders. Reads the domain's public DNS records (SPF, DKIM under the common email services' selectors, the DMARC policy, BIMI, MX) and returns what is missing with the exact fix, compared with 7IT's study of US online stores. Sends no email and needs no access.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"url": {
"description": "The domain or website, for example example.com",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_email_authentication",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"benchmark": {
"anyOf": [
{
"additionalProperties": {},
"properties": {
"stores": {
"type": "number"
},
"study": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"study",
"url"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "The 7IT study this is compared with"
},
"bimi": {
"type": "boolean"
},
"dkim_found": {
"type": "boolean"
},
"dmarc": {
"type": "boolean"
},
"dmarc_enforced": {
"description": "DMARC set to quarantine or reject for all mail",
"type": "boolean"
},
"dmarc_policy": {
"type": [
"string",
"null"
]
},
"domain": {
"type": "string"
},
"fixes": {
"description": "What to fix, most important first",
"items": {
"additionalProperties": {},
"properties": {
"fix": {
"type": "string"
},
"id": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"required": [
"id",
"severity",
"fix"
],
"type": "object"
},
"type": "array"
},
"meets_bulk_sender_rules": {
"description": "SPF, DKIM and DMARC all in place, as Gmail, Yahoo and Outlook require of bulk senders",
"type": "boolean"
},
"mx": {
"type": "boolean"
},
"report_url": {
"description": "Shareable report",
"type": "string"
},
"spf": {
"type": "boolean"
},
"spf_all": {
"type": [
"string",
"null"
]
}
},
"required": [
"report_url"
],
"type": "object"
}
},
{
"description": "Use this when the person you work for owns or runs an MCP server that is on the 7Maps map and wants its page to show it is owner verified, add a short note for agents (rate limits, sign-up, what the tools are for), or get a live status badge for their README. Verified owners' servers are checked every 5 minutes (uptime on the page and badge), and with alert_url the owner gets a message when the server stops answering and when it is back. First call returns the proof options (a line in /.well-known/7maps-verify.txt on the server's host, a DNS TXT record, or for io.github registry names a file in the GitHub repo); after one is in place, call again to confirm. Verifying does not change how the server is measured or ranked. No charge.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_url": {
"description": "Optional: where to send down and up alerts. An ntfy topic for phone push without email (https://ntfy.sh/<hard-to-guess topic, at least 10 characters>, a self-hosted https://ntfy.<domain>/<topic>, or ntfy:https://<host>/<topic>), a Slack incoming webhook (https://hooks.slack.com/services/...), a Discord webhook (https://discord.com/api/webhooks/...), or any https webhook that receives JSON. Stored encrypted, saved only once ownership is proven; a test message is sent on save. An empty string turns alerts off.",
"maxLength": 600,
"type": "string"
},
"note": {
"description": "Optional plain-text note from the owner, no links, up to 280 characters",
"maxLength": 280,
"type": "string"
},
"server": {
"description": "The MCP server address as it appears on its 7Maps page",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"server"
],
"type": "object"
},
"name": "claim_mcp_server",
"outputSchema": null
},
{
"description": "Use this when the user, or the agent building the app, wants to check an app they control for exposed files and open databases before launch. A deeper security scan than check_app_security, for an app the caller controls (for example one the agent itself is building). It looks for sensitive things left publicly reachable: an environment (.env) file, an exposed .git folder, a directory listing, or a published source map. It also finds the Supabase or Firebase backend the app uses and checks what an anonymous visitor can read: tables, files, and whether anyone can sign up. It reads only, never writes, and never stores, logs or returns any key; it reports the exposed PATH, table or bucket name and a row count so the owner can see it, never a file's contents or a secret value. Because it probes an app directly, it runs only after ownership is proven: call it once to receive an inert verification token, add that token to the app (a meta tag on the home page, or a /7it-verify.txt file), then call again and the scan runs.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"url": {
"description": "The app’s public web address, for example myapp.com or https://myapp.lovable.app. You must be able to add a verification token to this app.",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "deep_scan_app",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"backend": {
"additionalProperties": {},
"description": "What was found behind the app: supabase/firebase presence and how many tables an anonymous visitor could read",
"properties": {},
"type": "object"
},
"clean": {
"description": "True when no exposed file was found",
"type": "boolean"
},
"findings": {
"description": "Exposed paths, plus open backend tables/buckets with a row count; file contents and key values are never read or returned",
"items": {
"additionalProperties": {},
"properties": {
"detail": {
"type": "string"
},
"fix": {
"type": "string"
},
"id": {
"type": "string"
},
"kind": {
"type": "string"
},
"label": {
"type": "string"
},
"path": {
"type": "string"
},
"rows": {
"type": "number"
},
"severity": {
"enum": [
"critical",
"high",
"medium"
],
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"label",
"path",
"url",
"severity",
"fix"
],
"type": "object"
},
"type": "array"
},
"host": {
"type": "string"
},
"needs_verification": {
"description": "True when ownership is not proven yet; add the token and call again",
"type": "boolean"
},
"report_url": {
"type": "string"
},
"token": {
"description": "Inert verification token to place on the app",
"type": "string"
},
"verified": {
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "Use this when the user asks who 7IT Solutions is, what it builds, or whether it fits their project, or is looking for a developer to review or take over an app built with an AI tool. Returns a factual profile of 7IT Solutions, a solo senior software studio: who runs it, how engagements work, what the client owns, its services (custom software, automation and integration, eCommerce, AI tools, and reviewing and taking responsibility for apps built with AI tools such as Lovable or Replit), when each is and is not a fit, the audit checks it runs on AI-built apps, published work and verifiable proof, with links. Use it when someone asks what 7IT does, whether it fits their situation, or who could review or take over an app their AI tool built. Contains no prices.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"focus": {
"description": "Limit the services section to one area. Default all.",
"enum": [
"all",
"custom-software",
"automation",
"ecommerce",
"ai",
"ai-built-apps"
],
"type": "string"
}
},
"type": "object"
},
"name": "describe_studio",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"contact": {
"description": "Where to reach Lior",
"type": "string"
},
"model": {
"description": "How engagements work",
"type": "string"
},
"name": {
"type": "string"
},
"ownership": {
"description": "What the client owns",
"type": "string"
},
"services": {
"description": "Each service with when it fits and when it does not",
"items": {
"additionalProperties": {},
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"name",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"name",
"services",
"contact"
],
"type": "object"
}
},
{
"description": "Use this when someone wants to know what a repetitive task costs their team, or whether automating it is worth the money. Calculates how many hours a month a team spends on repetitive tasks, what that costs per year, how much of it automation could take over (the share that is copying between systems, not judgment), and the break-even budget for automating it within 12 and 6 months. Uses only the figures provided; the default hourly cost is $47, the US private-industry average employer cost per hour worked in June 2026 (Bureau of Labor Statistics).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"hourly_cost": {
"description": "Fully loaded cost of an hour of work in USD. Default 47.",
"maximum": 1000,
"minimum": 1,
"type": "number"
},
"tasks": {
"items": {
"properties": {
"copying_share": {
"description": "Percent of the work that is copying between systems rather than judgment. Defaults by type.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"how_often": {
"description": "How many times it happens per period.",
"maximum": 100000,
"minimum": 0,
"type": "number"
},
"minutes_each": {
"description": "Minutes it takes each time.",
"maximum": 10000,
"minimum": 0,
"type": "number"
},
"name": {
"description": "A short name for the task, if different from the type.",
"maxLength": 80,
"type": "string"
},
"people": {
"description": "How many people do it each time. Default 1.",
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"per": {
"description": "The period for how_often.",
"enum": [
"day",
"week",
"month"
],
"type": "string"
},
"type": {
"description": "The kind of work.",
"enum": [
"invoices",
"leads",
"reporting",
"dataentry",
"onboarding",
"reminders",
"other"
],
"type": "string"
}
},
"required": [
"type",
"how_often",
"per",
"minutes_each"
],
"type": "object"
},
"maxItems": 8,
"minItems": 1,
"type": "array"
}
},
"required": [
"tasks"
],
"type": "object"
},
"name": "estimate_automation_roi",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"automatable_hours_per_month": {
"type": "number"
},
"automatable_yearly": {
"description": "Yearly cost automation could take over, USD",
"type": "number"
},
"break_even_budget_12_months": {
"type": "number"
},
"break_even_budget_6_months": {
"type": "number"
},
"hourly_cost": {
"description": "Hourly cost used, in USD",
"type": "number"
},
"hours_per_month": {
"type": "number"
},
"report_url": {
"type": "string"
},
"tasks": {
"description": "Per-task hours and cost",
"items": {
"additionalProperties": {},
"properties": {
"name": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"yearly_cost": {
"description": "Yearly cost of the work done by hand, USD",
"type": "number"
}
},
"required": [
"hourly_cost",
"hours_per_month",
"yearly_cost",
"automatable_hours_per_month",
"automatable_yearly",
"break_even_budget_12_months",
"break_even_budget_6_months",
"tasks",
"report_url"
],
"type": "object"
}
},
{
"description": "Use this when you need a tool for a job and do not know which MCP server has one: searches every tool of every public MCP server on the 7Maps map (over 200,000 tools, probed daily) and returns the best matches with an automated estimate of what each tool can do (read-only, changes data, high risk), whether its server is answering now, its handshake time, the tokens its tool list costs to load, and a page to check it. Filter to read-only tools, servers answering now, a latency or token ceiling. Copies of the same tool on several servers are collapsed. No charge. To have 7Maps pick one server and tool for you with alternatives, use route.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"answering_now": {
"description": "Only servers that answered with tools on the last check (default true)",
"type": "boolean"
},
"job": {
"description": "What the tool should do, in plain words, for example \"send a transactional email\" or \"query a postgres database\"",
"maxLength": 200,
"minLength": 3,
"type": "string"
},
"limit": {
"description": "How many results (default 10)",
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"max_handshake_ms": {
"maximum": 30000,
"minimum": 50,
"type": "integer"
},
"max_tool_list_tokens": {
"maximum": 200000,
"minimum": 100,
"type": "integer"
},
"may": {
"description": "What the tool may do: read = read-only only; change = read or change data; any = include high-risk tools (default any)",
"enum": [
"read",
"change",
"any"
],
"type": "string"
}
},
"required": [
"job"
],
"type": "object"
},
"name": "find_tool",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"matched": {
"type": "number"
},
"results": {
"items": {
"additionalProperties": {},
"properties": {
"does": {
"type": "string"
},
"server": {
"type": "string"
},
"status": {
"type": "string"
},
"tool": {
"type": "string"
}
},
"required": [
"tool",
"server",
"does",
"status"
],
"type": "object"
},
"type": "array"
},
"tools_indexed": {
"type": "number"
}
},
"required": [
"results",
"matched",
"tools_indexed"
],
"type": "object"
}
},
{
"description": "Use this after list_field_kits, to read one checklist in full. Returns one 7IT Field Kit in full: every check with the reason it matters, grouped in order, plus how to use it and the guide it comes from. Pass the slug from list_field_kits or words from the title.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"kit": {
"description": "The kit slug (for example \"webhook-reliability-checklist\") or words from its title.",
"maxLength": 120,
"minLength": 2,
"type": "string"
}
},
"required": [
"kit"
],
"type": "object"
},
"name": "get_field_kit",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"slug",
"title",
"url"
],
"type": "object"
}
},
{
"description": "Use this when someone asks how fast US online stores are right now, or wants a current benchmark to compare a store against. Returns 7IT's weekly US Store Speed Index: median Google phone score, time to main content, share of stores scoring 50 or more, and median apps per store for a fixed panel of 100 US online stores, week by week, with the source link. Medians only; no store is named.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "get_store_speed_index",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"panel": {
"description": "Number of stores in the fixed panel",
"type": "number"
},
"series": {
"description": "One entry per week, oldest first",
"items": {
"additionalProperties": {},
"properties": {
"date": {
"type": "string"
},
"median_apps": {
"description": "Median third-party apps and tags per store",
"type": [
"number",
"null"
]
},
"median_lcp_s": {
"description": "Median seconds until the main content shows",
"type": [
"number",
"null"
]
},
"median_score": {
"description": "Median Google phone performance score, 0 to 100",
"type": [
"number",
"null"
]
},
"score_50_plus": {
"description": "Percent of stores scoring 50 or more",
"type": [
"number",
"null"
]
},
"stores": {
"description": "Stores measured that week",
"type": "number"
}
},
"required": [
"date",
"stores",
"median_score",
"median_lcp_s",
"score_50_plus",
"median_apps"
],
"type": "object"
},
"type": "array"
},
"source_url": {
"description": "Page to cite",
"type": "string"
},
"title": {
"type": "string"
},
"updated": {
"description": "Date of the latest weekly reading, YYYY-MM-DD",
"type": [
"string",
"null"
]
}
},
"required": [
"title",
"panel",
"updated",
"series",
"source_url"
],
"type": "object"
}
},
{
"description": "Use this when someone wants a working checklist for a technical job (webhooks, store speed, integrations, migrations, AI in production, security). Lists 7IT Field Kits: working checklists for custom software, eCommerce, automation, payments, AI, security and reliability work (for example webhook reliability, store speed audits, integration design, SEO-safe migrations, LLM production readiness). Each has a title, a one-line purpose, the number of checks and a link. Optionally filter by a topic word.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"topic": {
"description": "Optional word to filter by, for example \"shopify\", \"webhook\" or \"AI\".",
"maxLength": 80,
"type": "string"
}
},
"type": "object"
},
"name": "list_field_kits",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"kits": {
"description": "Matching kits; pass a slug to get_field_kit",
"items": {
"additionalProperties": {},
"properties": {
"checks": {
"type": "number"
},
"purpose": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"slug",
"title",
"purpose",
"checks",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"kits"
],
"type": "object"
}
},
{
"description": "Use this when someone asks which actions their AI agent or its connected tools may take on their own, which need a person's approval, and which a person must do; or how to set up human oversight, permissions or AI governance for an agent (for example under the EU AI Act). Give either the address of a public MCP server, or the list of tools the agent has (name, description and annotations). Sorts every tool into green (runs alone: reads and prepares), yellow (a person approves: sending, updating, scheduling) or red (a person does it: money, permissions, deletion, code execution, commitments), flags tools with no risk annotations, and returns a ready policy, Claude Code permission rules (allow, ask, deny) and an oversight checklist. Reads tool lists only and never calls a tool. A working checklist, not legal advice.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"server_name": {
"description": "The name this server has in the agent setup, used in the Claude Code permission rules",
"maxLength": 80,
"type": "string"
},
"tools": {
"description": "Instead of an address: the tools the agent has, with their description and annotations",
"items": {
"additionalProperties": {},
"properties": {
"annotations": {
"additionalProperties": {},
"properties": {},
"type": "object"
},
"description": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"maxItems": 300,
"type": "array"
},
"url": {
"description": "The MCP server address, for example https://mcp.example.com/mcp",
"maxLength": 300,
"type": "string"
}
},
"type": "object"
},
"name": "map_agent_oversight",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"checklist": {
"items": {
"type": "string"
},
"type": "array"
},
"claude_code_permissions": {
"additionalProperties": {},
"description": "Paste into .claude/settings.json",
"properties": {},
"type": "object"
},
"green": {
"description": "Tools the agent may run on its own",
"type": "number"
},
"red": {
"description": "Tools a person should do themselves",
"type": "number"
},
"report_url": {
"description": "Shareable page with the full map",
"type": "string"
},
"server": {
"type": "string"
},
"tools": {
"items": {
"additionalProperties": {},
"properties": {
"level": {
"enum": [
"green",
"yellow",
"red"
],
"type": "string"
},
"name": {
"type": "string"
},
"reasons": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"name",
"level",
"reasons"
],
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"unlabeled": {
"description": "Tools whose server publishes no risk annotations",
"type": "number"
},
"yellow": {
"description": "Tools that need a person to approve",
"type": "number"
}
},
"required": [
"report_url"
],
"type": "object"
}
},
{
"description": "Use this when the person you work for asks what 7Maps has done for them: calls made with their personal 7Maps key today, in the last 7 days and in the last 30 days, servers checked, an estimate of the tokens saved compared with finding the same thing out without 7Maps, failures avoided (servers not answering that were skipped, risk changes caught by watch or verify_lock, calls that would have failed) and the average response time. It reads the optional personal key sent with this connection (the X-7Maps-Key header); without one it says so in one line, since every 7Maps answer already states its own saving. Only that person's own counts. No charge.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"window": {
"description": "Which window to lead with: day (today), week (last 7 days) or month (last 30 days); all three are returned",
"enum": [
"day",
"week",
"month"
],
"type": "string"
}
},
"type": "object"
},
"name": "my_7maps_usage",
"outputSchema": null
},
{
"description": "Use this when the person you work for owns an MCP server on the 7Maps map and wants to know how AI agents look for servers like it: how often agents asked 7Maps for servers in its category in the last 7 or 30 days, how often this server was shown and picked, and, for a verified owner with owner_key, the words agents used, the servers picked instead, failure reasons agents reported, uptime, tool changes, and its token cost and handshake time against similar servers. Counts only, no agent identities. Without owner_key it returns the public numbers and how to verify ownership with claim_mcp_server. Read-only; never changes ranking or routing. No charge.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"days": {
"anyOf": [
{
"const": 7,
"type": "number"
},
{
"const": 30,
"type": "number"
}
],
"description": "Window in days: 7 (default) or 30"
},
"owner_key": {
"description": "The owner key returned to the verified owner by claim_mcp_server",
"maxLength": 64,
"type": "string"
},
"server": {
"description": "The MCP server address as it appears on its 7Maps page, or its official registry name",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"server"
],
"type": "object"
},
"name": "my_server_report",
"outputSchema": null
},
{
"description": "Use this when a 7IT tool returned something that looks wrong, failed unexpectedly, or did not match what the user asked for, so 7IT can fix it. Sends a short report to 7IT: which tool, what went wrong, and optionally the site address involved. Do not include personal details or the conversation. Nothing changes for the user; it is only feedback.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"problem": {
"description": "What went wrong, in one or two sentences.",
"maxLength": 600,
"minLength": 5,
"type": "string"
},
"tool": {
"description": "The 7IT tool that misbehaved, for example \"test_store_speed\".",
"maxLength": 60,
"minLength": 2,
"type": "string"
},
"url": {
"description": "The site address the tool was used on, if any.",
"maxLength": 300,
"type": "string"
}
},
"required": [
"tool",
"problem"
],
"type": "object"
},
"name": "report_problem",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"received": {
"description": "Whether the report was recorded",
"type": "boolean"
}
},
"required": [
"received"
],
"type": "object"
}
},
{
"description": "Use this after calling a tool on an MCP server (especially one 7Maps pointed you to) to report how it went: whether it worked, why not, how long it took, whether the result matched the description, and anything it did that you did not ask for. Fixed fields only, no open text. Reports from many agents become the server's rating and, once 7Maps confirms them, live incident alerts that every agent sees. You can also pass the same fields as last_trip on any paid 7Maps call. No charge.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"charged_usd": {
"description": "What the server charged, if anything",
"maximum": 1000,
"minimum": 0,
"type": "number"
},
"fail": {
"description": "If it failed: unreachable, auth, args, server_error, timeout, rate_limited or wrong_result",
"enum": [
"unreachable",
"auth",
"args",
"server_error",
"timeout",
"rate_limited",
"wrong_result"
],
"type": "string"
},
"matched_description": {
"description": "Whether the result matched what the tool description promised",
"type": "boolean"
},
"ms": {
"description": "How long the call took, in milliseconds",
"maximum": 600000,
"minimum": 0,
"type": "number"
},
"ok": {
"description": "Whether the call did what you needed",
"type": "boolean"
},
"result_tokens": {
"description": "About how many tokens the result was",
"maximum": 5000000,
"minimum": 0,
"type": "number"
},
"server": {
"description": "The MCP server you called (URL or registry name)",
"maxLength": 300,
"minLength": 3,
"type": "string"
},
"surprise": {
"description": "Anything the tool did that you did not ask for",
"enum": [
"side_effect",
"unexpected_cost",
"data_leak_suspected",
"other"
],
"type": "string"
},
"tool": {
"description": "The tool you called",
"maxLength": 120,
"type": "string"
},
"tools_hash": {
"description": "The tool_list_hash of the tool list you received, if you computed it as 7Maps does",
"maxLength": 64,
"type": "string"
}
},
"required": [
"server",
"ok"
],
"type": "object"
},
"name": "report_road",
"outputSchema": null
},
{
"description": "Use this when the user is weighing a software, eCommerce, automation or AI decision and a cited article would help. Searches 7IT Solutions’ guides and articles on custom software, eCommerce (Shopify, WooCommerce, headless), automation and integrations (connecting CRMs, accounting tools such as QuickBooks, ERPs and online stores), payments, AI in production, security and reliability. Returns the best matches with a short excerpt and a link to cite.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"description": "How many results to return. Default 5.",
"maximum": 8,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "What to look for, for example \"reliable webhooks\" or \"shopify vs woocommerce\".",
"maxLength": 200,
"minLength": 2,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_7it_guides",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"results": {
"description": "Best matches, most relevant first",
"items": {
"additionalProperties": {},
"properties": {
"excerpt": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Use this when someone has built or runs an MCP server that is not in the official MCP registry (for example a small business's own server) and wants AI agents to be able to find it, or asks how to get their server listed. Give the server address, or just the business's domain and the usual endpoint paths are tried. The server is observed every 6 hours for 7 days; if it answers reliably, keeps its tools stable and describes every tool, it joins the 7Maps map that agents use to choose servers. Placement cannot be bought. Returns the status page and an optional owner-verification token. No charge.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"about": {
"description": "One sentence: what the business does and for whom",
"maxLength": 200,
"type": "string"
},
"category": {
"description": "What the business does; agents also see the category its tools show",
"enum": [
"commerce",
"booking",
"payments",
"marketing",
"crm",
"documents",
"data",
"dev",
"realestate",
"health",
"travel",
"legal",
"other"
],
"type": "string"
},
"charges": {
"description": "Whether the server charges agents (x402 or a subscription)",
"type": "boolean"
},
"country": {
"description": "Where the business serves customers",
"maxLength": 40,
"type": "string"
},
"language": {
"description": "Main language of the tools and their data",
"maxLength": 30,
"type": "string"
},
"url": {
"description": "The MCP server address, or the business domain (example.com)",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "submit_mcp_server",
"outputSchema": null
},
{
"description": "Use this when someone asks how fast a website or online store loads on a phone, why it is slow, or how it compares with a competitor. Runs Google PageSpeed Insights (mobile lab test) on a public online store or website and explains the result in plain English: a 0 to 100 score, when the main content appears, responsiveness and layout shift, real-user data when Google has it, the third-party apps and trackers slowing the page (by name, with size and busy time), the platform (Shopify, WooCommerce and others), and the fixes ranked by time saved. Optionally tests up to two competitor sites for a side-by-side comparison. Takes 20 to 60 seconds. Only public web addresses are accepted.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"competitors": {
"description": "Up to two competitor sites to test at the same time for comparison.",
"items": {
"maxLength": 300,
"minLength": 3,
"type": "string"
},
"maxItems": 2,
"type": "array"
},
"url": {
"description": "The store or website to test, for example \"example.com\" or \"https://shop.example.com/products/item\".",
"maxLength": 300,
"minLength": 3,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "test_store_speed",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {},
"properties": {
"benchmark": {
"description": "Where the score stands against the US Store Speed study"
},
"competitors": {
"description": "Competitors tested side by side, if any",
"items": {
"additionalProperties": {},
"properties": {
"host": {
"type": "string"
}
},
"required": [
"host"
],
"type": "object"
},
"type": "array"
},
"report_url": {
"description": "Shareable full report",
"type": "string"
},
"store": {
"additionalProperties": {},
"description": "The tested store",
"properties": {
"host": {
"type": "string"
},
"score": {
"description": "Google phone performance score, 0 to 100",
"type": [
"number",
"null"
]
}
},
"required": [
"host"
],
"type": "object"
}
},
"required": [
"store",
"competitors",
"report_url"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:fc8f8554d51e937307a2e101092e0c568e913bbf3e6100837ebd61a13339d65d | sha256sum